EraDigital commited on
Commit
2f61e46
·
verified ·
1 Parent(s): b77bd28

criar uma análise financeira completa de fluxo de caixa a partir dos dados colados do relatório. Considerar Novembro como mês de fechamento e destacar os pontos principais como Receitas totais, Despesas totais, resultado operacional, lucro líquido, margem de contribuição, etc. Detalhar a composição das despesas e receitas (incluir a divisão das receitas, Receitas de Trafego, de Web, de Serviços, etc) e informar o PLR. Inclui também uma análise com principais pontos de atenção e diretrizes. Incluir uma projeção do fluxo da caixa. Seguem dados: FLUXO DE CAIXA Realizado (R$) Realizado (R$) Realizado (R$) Realizado (R$) Realizado (R$) Realizado (R$) Realizado (R$) Realizado (R$) Realizado (R$) Realizado (R$) Realizado (R$) Previsto (R$) Realizado (R$)

Browse files

CATEGORIAS jan/25 fev/25 mar/25 abr/25 mai/25 jun/25 jul/25 ago/25 set/25 out/25 nov/25 dez/25 dez/25
Saldo do Mês Anterior R$ 57.765 R$ 52.114 R$ 50.371 R$ 46.703 R$ 42.816 R$ 42.529 R$ 44.457 R$ 36.478 R$ 25.195 R$ 27.204 R$ 27.102 R$ 17.611 R$ 27.611
Total de Recebimentos R$ 32.757 R$ 36.279 R$ 37.684 R$ 34.902 R$ 34.148 R$ 42.104 R$ 33.888 R$ 44.910 R$ 46.361 R$ 49.334 R$ 51.009 R$ 47.416 R$ 4.656
3.01 Receitas de Vendas e de Serviços R$ 30.291 R$ 35.806 R$ 37.240 R$ 34.097 R$ 33.737 R$ 42.104 R$ 33.888 R$ 43.745 R$ 44.574 R$ 49.071 R$ 49.841 R$ 47.416 R$ 4.656
HOSPEDAGEM R$ - R$ 250 R$ 250 R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ 222 R$ - R$ -
Receita de Tráfego R$ 22.815 R$ 23.843 R$ 25.170 R$ 19.145 R$ 23.370 R$ 32.961 R$ 27.074 R$ 34.795 R$ 30.949 R$ 39.539 R$ 37.828 R$ 38.857 R$ 4.656
Receitas de Serviços R$ - R$ 497 R$ 497 R$ - R$ 1.216 R$ 547 R$ 829 R$ 714 R$ 5.490 R$ 1.547 R$ 2.627 R$ 2.394 R$ -
Receitas de Web Design R$ 7.476 R$ 11.217 R$ 11.324 R$ 14.952 R$ 9.151 R$ 8.596 R$ 5.985 R$ 8.236 R$ 8.135 R$ 7.985 R$ 9.165 R$ 6.165 R$ -
3.02 Receitas Financeiras R$ 2.466 R$ 473 R$ - R$ 805 R$ 412 R$ - R$ - R$ - R$ 1.787 R$ 263 R$ - R$ - R$ -
Rendimentos de Aplicações R$ 2.466 R$ 473 R$ - R$ 805 R$ 412 R$ - R$ - R$ - R$ 1.787 R$ 263 R$ - R$ - R$ -
3.03 Outras Receitas e Entradas R$ - R$ - R$ 444 R$ - R$ - R$ - R$ - R$ 1.166 R$ - R$ - R$ 1.168 R$ - R$ -
Reembolso R$ - R$ - R$ 444 R$ - R$ - R$ - R$ - R$ 1.166 R$ - R$ 1.168 R$ - R$ -
Total de Pagamentos -R$ 38.408 -R$ 38.022 -R$ 41.353 -R$ 38.789 -R$ 38.435 -R$ 46.177 -R$ 43.866 -R$ 44.193 -R$ 50.352 -R$ 51.320 -R$ 52.617 -R$ 50.153 -R$ 6.278
4.01 Impostos sobre Vendas e sobre Serviços -R$ 2.754 -R$ 2.177 -R$ 3.447 -R$ 2.763 -R$ 2.227 -R$ 3.029 -R$ 3.047 -R$ 3.290 -R$ 3.981 -R$ 4.146 -R$ 4.813 -R$ 4.282 R$ -
Simples Nacional - DAS -R$ 2.754 -R$ 2.177 -R$ 3.447 -R$ 2.763 -R$ 2.227 -R$ 3.029 -R$ 3.047 -R$ 3.290 -R$ 3.981 -R$ 4.146 -R$ 4.813 -R$ 4.282 R$ -
4.02 Despesas com Vendas e Serviços -R$ 2.690 -R$ 6.214 -R$ 6.514 -R$ 6.253 -R$ 7.581 -R$ 10.308 -R$ 7.792 -R$ 8.205 -R$ 9.666 -R$ 9.813 -R$ 6.577 -R$ 6.657 -R$ 397
CRM R$ - R$ - R$ - R$ - -R$ 171 -R$ 815 R$ - -R$ 331 -R$ 1.649 -R$ 540 R$ - -R$ 260 -R$ 260
Comissões de Vendedores R$ - R$ - R$ - R$ - R$ - R$ - R$ - -R$ 459 R$ - -R$ 759 -R$ 449 R$ - R$ -
Desenvolvimento Web R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ - -R$ 525 -R$ 1.075 R$ - R$ - R$ -
Despesas com reembolso R$ - R$ - R$ - R$ - R$ - -R$ 1.131 R$ - R$ - R$ - R$ - R$ - R$ - R$ -
Manutenção -R$ 417 -R$ 582 -R$ 582 -R$ 582 -R$ 669 -R$ 769 -R$ 769 -R$ 841 -R$ 901 -R$ 2.331 -R$ 1.015 -R$ 1.146 R$ -
Materiais Aplicados na Prestação de Serviços R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ - -R$ 938 -R$ 889 -R$ 533 -R$ 670 -R$ 137
Remuneração de prestadores de serviço -R$ 2.274 -R$ 5.631 -R$ 5.932 -R$ 5.670 -R$ 4.760 -R$ 4.624 -R$ 4.053 -R$ 2.353 -R$ 1.253 R$ - R$ - R$ - R$ -
Social mídia R$ - R$ - R$ - R$ - -R$ 1.980 -R$ 2.970 -R$ 2.970 -R$ 4.220 -R$ 4.400 -R$ 4.220 -R$ 4.580 -R$ 4.580 R$ -
Total de custos variáveis -R$ 5.444 -R$ 8.391 -R$ 9.961 -R$ 9.016 -R$ 9.808 -R$ 13.338 -R$ 10.839 -R$ 11.495 -R$ 13.648 -R$ 13.959 -R$ 11.391 -R$ 10.939 -R$ 397
Margem de Contribuição R$ 24.847 R$ 27.416 R$ 27.279 R$ 25.081 R$ 23.929 R$ 28.766 R$ 23.048 R$ 32.250 R$ 30.927 R$ 35.112 R$ 38.451 R$ 36.478 R$ 4.259
4.03 Despesas com Salários e Encargos -R$ 7.811 -R$ 2.305 -R$ 7.513 -R$ 6.909 -R$ 5.909 -R$ 6.909 -R$ 7.465 -R$ 7.669 -R$ 10.146 -R$ 9.690 -R$ 11.294 -R$ 11.486 -R$ 1.450
Pró-labore -R$ 5.006 R$ - -R$ 5.208 -R$ 2.604 -R$ 2.604 -R$ 2.604 -R$ 2.604 -R$ 2.604 -R$ 3.036 -R$ 3.036 -R$ 3.036 -R$ 3.036 R$ -
Remuneração de Autônomos -R$ 2.805 -R$ 2.305 -R$ 2.305 -R$ 4.305 -R$ 3.305 -R$ 4.305 -R$ 4.861 -R$ 5.065 -R$ 7.110 -R$ 6.654 -R$ 8.258 -R$ 8.450 -R$ 1.450
4.04 Despesas com Colaboradores -R$ 575 -R$ 197 -R$ 197 -R$ 197 -R$ 197 -R$ 494 -R$ 197 -R$ 100 -R$ 1.100 -R$ 100 -R$ 100 -R$ 578 -R$ 578
Cursos e Treinamentos -R$ 575 -R$ 197 -R$ 197 -R$ 197 -R$ 197 -R$ 494 -R$ 197 -R$ 100 -R$ 1.100 -R$ 100 -R$ 100 -R$ 578 -R$ 578
4.05 Despesas Administrativas -R$ 1.777 -R$ 3.991 -R$ 3.777 -R$ 2.195 -R$ 2.310 -R$ 3.551 -R$ 2.403 -R$ 2.220 -R$ 2.656 -R$ 2.548 -R$ 5.827 -R$ 2.785 -R$ 2.451
Honorários Advocatícios R$ - -R$ 567 -R$ 283 R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ -
Honorários Contábeis -R$ 350 -R$ 380 -R$ 380 -R$ 380 -R$ 380 -R$ 380 -R$ 380 -R$ 380 -R$ 380 -R$ 380 -R$ 380 -R$ 600 -R$ 600
Materiais de Escritório -R$ 485 -R$ 291 -R$ 291 -R$ 460 -R$ 390 -R$ 390 -R$ 390 -R$ 390 -R$ 390 -R$ 425 -R$ 468 -R$ 680 -R$ 680
Retenção - GPS 2631 - INSS -R$ 311 -R$ 334 -R$ 334 -R$ 334 -R$ 334 -R$ 334 -R$ 334 -R$ 334 -R$ 334 -R$ 334 -R$ 334 -R$ 334 R$ -
Sistemas -R$ 631 -R$ 2.419 -R$ 2.414 -R$ 903 -R$ 1.206 -R$ 2.447 -R$ 1.004 -R$ 1.005 -R$ 1.441 -R$ 1.409 -R$ 4.499 -R$ 1.025 -R$ 1.025
outras despesas R$ - R$ - -R$ 74 -R$ 119 R$ - R$ - R$ - -R$ 111 -R$ 111 R$ - -R$ 146 -R$ 146 -R$ 146
taxa de licença R$ - R$ - R$ - R$ - R$ - R$ - -R$ 296 R$ - R$ - R$ - R$ - R$ - R$ -
4.06 Despesas Comerciais -R$ 191 -R$ 470 -R$ 402 -R$ 966 -R$ 709 -R$ 331 -R$ 1.462 -R$ 1.210 -R$ 1.685 -R$ 1.818 -R$ 893 -R$ 1.310 -R$ 1.310
Brindes para Clientes R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ - -R$ 300 R$ - R$ - R$ -
Marketing e Publicidade -R$ 191 -R$ 470 -R$ 402 -R$ 966 -R$ 709 -R$ 331 -R$ 1.041 -R$ 1.210 -R$ 1.685 -R$ 1.518 -R$ 893 -R$ 1.310 -R$ 1.310
Viagens e Representações R$ - R$ - R$ - R$ - R$ - R$ - -R$ 421 R$ - R$ - R$ - R$ - R$ - R$ -
4.07 Despesas com Imóvel -R$ 205 -R$ 100 -R$ 100 -R$ 100 -R$ 100 -R$ 100 -R$ 100 -R$ 100 -R$ 89 -R$ 164 -R$ 89 -R$ 89 -R$ 89
Aluguel -R$ 205 -R$ 100 -R$ 100 -R$ 100 -R$ 100 -R$ 100 -R$ 100 -R$ 100 -R$ 89 -R$ 164 -R$ 89 -R$ 89 -R$ 89
Custos fixos -R$ 10.559 -R$ 7.062 -R$ 11.989 -R$ 10.367 -R$ 9.224 -R$ 11.385 -R$ 11.627 -R$ 11.298 -R$ 15.675 -R$ 14.320 -R$ 18.201 -R$ 16.247 -R$ 5.877
Lucro Operacional R$ 14.289 R$ 20.353 R$ 15.290 R$ 14.714 R$ 14.704 R$ 17.381 R$ 11.422 R$ 20.951 R$ 15.252 R$ 20.792 R$ 20.249 R$ 20.231 -R$ 1.618
4.09 Despesas com Diretoria -R$ 19.396 -R$ 19.396 -R$ 19.396 -R$ 19.396 -R$ 19.396 -R$ 21.396 -R$ 21.396 -R$ 21.396 -R$ 20.964 -R$ 22.964 -R$ 22.964 -R$ 22.964 R$ -
PLR - Participação nos Lucros e Resultados -R$ 19.396 -R$ 19.396 -R$ 19.396 -R$ 19.396 -R$ 19.396 -R$ 21.396 -R$ 21.396 -R$ 21.396 -R$ 20.964 -R$ 22.964 -R$ 22.964 -R$ 22.964 R$ -
4.10 Despesas Financeiras -R$ 9 -R$ 12 -R$ 6 -R$ 9 -R$ 6 -R$ 58 -R$ 4 -R$ 4 -R$ 14 -R$ 27 -R$ 61 -R$ 4 -R$ 4
Tarifas Bancárias R$ - -R$ 12 -R$ 6 -R$ 9 -R$ 6 -R$ 58 -R$ 4 -R$ 4 -R$ 14 -R$ 27 -R$ 61 -R$ 4 -R$ 4
Tarifas de Cartões de Crédito -R$ 9 R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ -
4.11 Outras Despesas R$ - -R$ 161 R$ - R$ - R$ - R$ - R$ - R$ - -R$ 52 -R$ 50 R$ - R$ - R$ -
Despesas a identificar R$ - -R$ 161 R$ - R$ - R$ - R$ - R$ - R$ - -R$ 52 -R$ 50 R$ - R$ - R$ -
5.01 Bens Imobilizados da Empresa -R$ 3.000 -R$ 3.000 R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ -
Investimento em cursos ou consultoria -R$ 3.000 -R$ 3.000 R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ - R$ -
Geração de Caixa do Período -R$ 5.651 -R$ 1.743 -R$ 3.668 -R$ 3.887 -R$ 4.286 -R$ 4.073 -R$ 9.978 R$ 717 -R$ 3.991 -R$ 1.985 -R$ 1.608 -R$ 2.737 -R$ 1.622
Saldo Final de Caixa R$ 52.114 R$ 50.371 R$ 46.703 R$ 42.816 R$ 42.529 R$ 44.457 R$ 36.478 R$ 25.195 R$ 27.204 R$ 27.102 R$ 27.611 R$ 14.874 R$ 25.989

Files changed (6) hide show
  1. README.md +8 -5
  2. components/footer.js +143 -0
  3. components/navbar.js +113 -0
  4. index.html +304 -19
  5. script.js +347 -0
  6. style.css +211 -18
README.md CHANGED
@@ -1,10 +1,13 @@
1
  ---
2
- title: Financial Flow Analyzer
3
- emoji: 🌍
4
- colorFrom: yellow
5
- colorTo: gray
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
1
  ---
2
+ title: Financial Flow Analyzer 💰
3
+ colorFrom: purple
4
+ colorTo: red
5
+ emoji: 🐳
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite-v3
10
  ---
11
 
12
+ # Welcome to your new DeepSite project!
13
+ This project was created with [DeepSite](https://huggingface.co/deepsite).
components/footer.js ADDED
@@ -0,0 +1,143 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomFooter extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ .footer {
7
+ background: linear-gradient(135deg, #1e293b 0%, #334155 100%);
8
+ color: white;
9
+ margin-top: 4rem;
10
+ }
11
+
12
+ .footer-link {
13
+ transition: all 0.3s ease;
14
+ position: relative;
15
+ }
16
+
17
+ .footer-link:hover {
18
+ color: #a5b4fc;
19
+ }
20
+
21
+ .footer-link::after {
22
+ content: '';
23
+ position: absolute;
24
+ width: 0;
25
+ height: 1px;
26
+ bottom: -2px;
27
+ left: 50%;
28
+ background-color: #a5b4fc;
29
+ transition: all 0.3s ease;
30
+ }
31
+
32
+ .footer-link:hover::after {
33
+ width: 100%;
34
+ left: 0;
35
+ }
36
+
37
+ .divider {
38
+ background: rgba(255, 255, 255, 0.1);
39
+ }
40
+ </style>
41
+
42
+ <footer class="footer">
43
+ <div class="container mx-auto px-4 py-12">
44
+ <div class="grid grid-cols-1 md:grid-cols-4 gap-8">
45
+ <!-- Company Info -->
46
+ <div>
47
+ <h3 class="text-lg font-bold mb-4 flex items-center gap-2">
48
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
49
+ <path d="M12 2L2 7V17C2 17.55 2.45 18 3 18H21C21.55 18 22 17.55 22 17V7L12 2Z" fill="white" fill-opacity="0.2"/>
50
+ <path d="M12 2L2 7V17C2 17.55 2.45 18 3 18H21C21.55 18 22 17.55 22 17V7L12 2Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
51
+ </svg>
52
+ FinanceFlow
53
+ </h3>
54
+ <p class="text-gray-400 text-sm mb-4">
55
+ Análise financeira completa e inteligente para tomada de decisões estratégicas.
56
+ </p>
57
+ <div class="flex gap-3">
58
+ <a href="#" class="text-gray-400 hover:text-white">
59
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
60
+ <path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/>
61
+ </svg>
62
+ </a>
63
+ <a href="#" class="text-gray-400 hover:text-white">
64
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
65
+ <path d="M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z"/>
66
+ </svg>
67
+ </a>
68
+ <a href="#" class="text-gray-400 hover:text-white">
69
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
70
+ <path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/>
71
+ </svg>
72
+ </a>
73
+ </div>
74
+ </div>
75
+
76
+ <!-- Quick Links -->
77
+ <div>
78
+ <h4 class="text-white font-semibold mb-4">Links Rápidos</h4>
79
+ <ul class="space-y-2">
80
+ <li><a href="#" class="footer-link text-gray-400 text-sm hover:text-gray-200">Dashboard</a></li>
81
+ <li><a href="#" class="footer-link text-gray-400 text-sm hover:text-gray-200">Análise Financeira</a></li>
82
+ <li><a href="#" class="footer-link text-gray-400 text-sm hover:text-gray-200">Projeções</a></li>
83
+ <li><a href="#" class="footer-link text-gray-400 text-sm hover:text-gray-200">Relatórios</a></li>
84
+ </ul>
85
+ </div>
86
+
87
+ <!-- Resources -->
88
+ <div>
89
+ <h4 class="text-white font-semibold mb-4">Recursos</h4>
90
+ <ul class="space-y-2">
91
+ <li><a href="#" class="footer-link text-gray-400 text-sm hover:text-gray-200">Documentação</a></li>
92
+ <li><a href="#" class="footer-link text-gray-400 text-sm hover:text-gray-200">Tutoriais</a></li>
93
+ <li><a href="#" class="footer-link text-gray-400 text-sm hover:text-gray-200">API</a></li>
94
+ <li><a href="#" class="footer-link text-gray-400 text-sm hover:text-gray-200">Suporte</a></li>
95
+ </ul>
96
+ </div>
97
+
98
+ <!-- Contact -->
99
+ <div>
100
+ <h4 class="text-white font-semibold mb-4">Contato</h4>
101
+ <ul class="space-y-2 text-sm">
102
+ <li class="text-gray-400 flex items-center gap-2">
103
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
104
+ <path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/>
105
+ <polyline points="9 22 9 12 15 12 15 22"/>
106
+ </svg>
107
+ São Paulo, SP
108
+ </li>
109
+ <li class="text-gray-400 flex items-center gap-2">
110
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
111
+ <path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"/>
112
+ <polyline points="22,6 12,13 2,6"/>
113
+ </svg>
114
+ finance@flow.com
115
+ </li>
116
+ <li class="text-gray-400 flex items-center gap-2">
117
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
118
+ <path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"/>
119
+ </svg>
120
+ +55 11 9999-9999
121
+ </li>
122
+ </ul>
123
+ </div>
124
+ </div>
125
+
126
+ <!-- Divider -->
127
+ <div class="divider my-8"></div>
128
+
129
+ <!-- Bottom -->
130
+ <div class="flex flex-col md:flex-row justify-between items-center text-sm text-gray-400">
131
+ <p>&copy; 2025 FinanceFlow. Todos os direitos reservados.</p>
132
+ <div class="flex gap-4 mt-4 md:mt-0">
133
+ <a href="#" class="hover:text-gray-200">Política de Privacidade</a>
134
+ <a href="#" class="hover:text-gray-200">Termos de Serviço</a>
135
+ </div>
136
+ </div>
137
+ </div>
138
+ </footer>
139
+ `;
140
+ }
141
+ }
142
+
143
+ customElements.define('custom-footer', CustomFooter);
components/navbar.js ADDED
@@ -0,0 +1,113 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomNavbar extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ .navbar {
7
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
8
+ box-shadow: 0 2px 10px rgba(0,0,0,0.1);
9
+ }
10
+
11
+ .nav-link {
12
+ transition: all 0.3s ease;
13
+ position: relative;
14
+ }
15
+
16
+ .nav-link::after {
17
+ content: '';
18
+ position: absolute;
19
+ width: 0;
20
+ height: 2px;
21
+ bottom: -4px;
22
+ left: 50%;
23
+ background-color: white;
24
+ transition: all 0.3s ease;
25
+ }
26
+
27
+ .nav-link:hover::after {
28
+ width: 100%;
29
+ left: 0;
30
+ }
31
+
32
+ .mobile-menu {
33
+ display: none;
34
+ }
35
+
36
+ @media (max-width: 768px) {
37
+ .mobile-menu {
38
+ display: block;
39
+ }
40
+
41
+ .desktop-menu {
42
+ display: none;
43
+ }
44
+ }
45
+ </style>
46
+
47
+ <nav class="navbar">
48
+ <div class="container mx-auto px-4">
49
+ <div class="flex items-center justify-between h-16">
50
+ <!-- Logo -->
51
+ <div class="flex items-center">
52
+ <span class="text-white font-bold text-xl flex items-center gap-2">
53
+ <svg width="32" height="32" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
54
+ <path d="M12 2L2 7V17C2 17.55 2.45 18 3 18H21C21.55 18 22 17.55 22 17V7L12 2Z" fill="white" fill-opacity="0.2"/>
55
+ <path d="M12 2L2 7V17C2 17.55 2.45 18 3 18H21C21.55 18 22 17.55 22 17V7L12 2Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
56
+ <path d="M12 22V18" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
57
+ <path d="M8 22H16" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
58
+ <circle cx="12" cy="11" r="3" fill="white"/>
59
+ </svg>
60
+ FinanceFlow
61
+ </span>
62
+ </div>
63
+
64
+ <!-- Desktop Menu -->
65
+ <div class="desktop-menu hidden md:flex items-center space-x-6">
66
+ <a href="#dashboard" class="nav-link text-white hover:text-gray-200">Dashboard</a>
67
+ <a href="#analysis" class="nav-link text-white hover:text-gray-200">Análise</a>
68
+ <a href="#projection" class="nav-link text-white hover:text-gray-200">Projeção</a>
69
+ <a href="#reports" class="nav-link text-white hover:text-gray-200">Relatórios</a>
70
+ <button class="bg-white text-purple-600 px-4 py-2 rounded-lg font-medium hover:bg-gray-100 transition-colors">
71
+ Novo Relatório
72
+ </button>
73
+ </div>
74
+
75
+ <!-- Mobile Menu Button -->
76
+ <div class="mobile-menu">
77
+ <button id="mobile-menu-btn" class="text-white hover:text-gray-200">
78
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
79
+ <path d="M3 12H21" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
80
+ <path d="M3 6H21" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
81
+ <path d="M3 18H21" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
82
+ </svg>
83
+ </button>
84
+ </div>
85
+ </div>
86
+
87
+ <!-- Mobile Menu -->
88
+ <div id="mobile-menu-panel" class="hidden pb-4 md:hidden">
89
+ <div class="flex flex-col space-y-3">
90
+ <a href="#dashboard" class="text-white hover:text-gray-200 py-2">Dashboard</a>
91
+ <a href="#analysis" class="text-white hover:text-gray-200 py-2">Análise</a>
92
+ <a href="#projection" class="text-white hover:text-gray-200 py-2">Projeção</a>
93
+ <a href="#reports" class="text-white hover:text-gray-200 py-2">Relatórios</a>
94
+ <button class="bg-white text-purple-600 px-4 py-2 rounded-lg font-medium hover:bg-gray-100 transition-colors w-full">
95
+ Novo Relatório
96
+ </button>
97
+ </div>
98
+ </div>
99
+ </div>
100
+ </nav>
101
+ `;
102
+
103
+ // Mobile menu toggle
104
+ const menuBtn = this.shadowRoot.getElementById('mobile-menu-btn');
105
+ const menuPanel = this.shadowRoot.getElementById('mobile-menu-panel');
106
+
107
+ menuBtn.addEventListener('click', () => {
108
+ menuPanel.classList.toggle('hidden');
109
+ });
110
+ }
111
+ }
112
+
113
+ customElements.define('custom-navbar', CustomNavbar);
index.html CHANGED
@@ -1,19 +1,304 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="pt-BR">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Análise Financeira - Fluxo de Caixa</title>
7
+ <link rel="icon" type="image/x-icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>💰</text></svg>">
8
+ <script src="https://cdn.tailwindcss.com"></script>
9
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
10
+ <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
11
+ <link rel="stylesheet" href="style.css">
12
+ <script src="script.js"></script>
13
+ <script src="components/navbar.js"></script>
14
+ <script src="components/footer.js"></script>
15
+ </head>
16
+ <body class="bg-gray-50">
17
+ <!-- Navigation -->
18
+ <custom-navbar></custom-navbar>
19
+
20
+ <!-- Main Content -->
21
+ <main class="container mx-auto px-4 py-8 max-w-7xl">
22
+ <!-- Header Section -->
23
+ <div class="bg-white rounded-xl shadow-sm p-6 mb-6">
24
+ <div class="flex flex-col md:flex-row justify-between items-start md:items-center gap-4">
25
+ <div>
26
+ <h1 class="text-3xl font-bold text-gray-800 flex items-center gap-2">
27
+ <i data-feather="trending-up" class="w-8 h-8 text-blue-600"></i>
28
+ Análise Financeira Completa
29
+ </h1>
30
+ <p class="text-gray-600 mt-2">Período: Janeiro - Novembro 2025 | Mês de Fechamento: Novembro</p>
31
+ </div>
32
+ <div class="flex gap-2">
33
+ <button onclick="exportToPDF()" class="px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors flex items-center gap-2">
34
+ <i data-feather="download" class="w-4 h-4"></i>
35
+ Exportar PDF
36
+ </button>
37
+ <button onclick="refreshData()" class="px-4 py-2 bg-gray-200 text-gray-700 rounded-lg hover:bg-gray-300 transition-colors flex items-center gap-2">
38
+ <i data-feather="refresh-cw" class="w-4 h-4"></i>
39
+ Atualizar
40
+ </button>
41
+ </div>
42
+ </div>
43
+ </div>
44
+
45
+ <!-- KPI Cards -->
46
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-8">
47
+ <div class="bg-white rounded-xl shadow-sm p-6 border-l-4 border-green-500">
48
+ <div class="flex items-center justify-between">
49
+ <div>
50
+ <p class="text-gray-600 text-sm">Receitas Totais</p>
51
+ <p class="text-2xl font-bold text-gray-800" id="totalRevenues">R$ 0</p>
52
+ <p class="text-xs text-gray-500 mt-1">Período Acumulado</p>
53
+ </div>
54
+ <div class="bg-green-100 p-3 rounded-lg">
55
+ <i data-feather="dollar-sign" class="w-6 h-6 text-green-600"></i>
56
+ </div>
57
+ </div>
58
+ </div>
59
+
60
+ <div class="bg-white rounded-xl shadow-sm p-6 border-l-4 border-red-500">
61
+ <div class="flex items-center justify-between">
62
+ <div>
63
+ <p class="text-gray-600 text-sm">Despesas Totais</p>
64
+ <p class="text-2xl font-bold text-gray-800" id="totalExpenses">R$ 0</p>
65
+ <p class="text-xs text-gray-500 mt-1">Período Acumulado</p>
66
+ </div>
67
+ <div class="bg-red-100 p-3 rounded-lg">
68
+ <i data-feather="trending-down" class="w-6 h-6 text-red-600"></i>
69
+ </div>
70
+ </div>
71
+ </div>
72
+
73
+ <div class="bg-white rounded-xl shadow-sm p-6 border-l-4 border-blue-500">
74
+ <div class="flex items-center justify-between">
75
+ <div>
76
+ <p class="text-gray-600 text-sm">Lucro Operacional</p>
77
+ <p class="text-2xl font-bold text-gray-800" id="operationalProfit">R$ 0</p>
78
+ <p class="text-xs text-gray-500 mt-1">Média Mensal</p>
79
+ </div>
80
+ <div class="bg-blue-100 p-3 rounded-lg">
81
+ <i data-feather="bar-chart-2" class="w-6 h-6 text-blue-600"></i>
82
+ </div>
83
+ </div>
84
+ </div>
85
+
86
+ <div class="bg-white rounded-xl shadow-sm p-6 border-l-4 border-purple-500">
87
+ <div class="flex items-center justify-between">
88
+ <div>
89
+ <p class="text-gray-600 text-sm">Margem Contribuição</p>
90
+ <p class="text-2xl font-bold text-gray-800" id="contributionMargin">0%</p>
91
+ <p class="text-xs text-gray-500 mt-1">Média do Período</p>
92
+ </div>
93
+ <div class="bg-purple-100 p-3 rounded-lg">
94
+ <i data-feather="pie-chart" class="w-6 h-6 text-purple-600"></i>
95
+ </div>
96
+ </div>
97
+ </div>
98
+ </div>
99
+
100
+ <!-- Charts Section -->
101
+ <div class="grid grid-cols-1 lg:grid-cols-2 gap-6 mb-8">
102
+ <div class="bg-white rounded-xl shadow-sm p-6">
103
+ <h2 class="text-xl font-semibold text-gray-800 mb-4 flex items-center gap-2">
104
+ <i data-feather="bar-chart" class="w-5 h-5"></i>
105
+ Evolução Mensal de Receitas vs Despesas
106
+ </h2>
107
+ <canvas id="monthlyFlowChart"></canvas>
108
+ </div>
109
+
110
+ <div class="bg-white rounded-xl shadow-sm p-6">
111
+ <h2 class="text-xl font-semibold text-gray-800 mb-4 flex items-center gap-2">
112
+ <i data-feather="pie-chart" class="w-5 h-5"></i>
113
+ Composição das Receitas - Novembro
114
+ </h2>
115
+ <canvas id="revenueCompositionChart"></canvas>
116
+ </div>
117
+ </div>
118
+
119
+ <!-- Detailed Analysis Section -->
120
+ <div class="grid grid-cols-1 lg:grid-cols-3 gap-6 mb-8">
121
+ <div class="lg:col-span-2 bg-white rounded-xl shadow-sm p-6">
122
+ <h2 class="text-xl font-semibold text-gray-800 mb-4 flex items-center gap-2">
123
+ <i data-feather="file-text" class="w-5 h-5"></i>
124
+ Análise Detalhada - Novembro/2025
125
+ </h2>
126
+
127
+ <div class="space-y-4">
128
+ <div class="border-l-4 border-blue-500 pl-4">
129
+ <h3 class="font-semibold text-gray-700">Receitas Totais</h3>
130
+ <p class="text-2xl font-bold text-green-600">R$ 51.009</p>
131
+ <div class="mt-2 space-y-1 text-sm">
132
+ <div class="flex justify-between">
133
+ <span class="text-gray-600">• Receita de Tráfego:</span>
134
+ <span class="font-medium">R$ 37.828 (74.2%)</span>
135
+ </div>
136
+ <div class="flex justify-between">
137
+ <span class="text-gray-600">• Web Design:</span>
138
+ <span class="font-medium">R$ 9.165 (18.0%)</span>
139
+ </div>
140
+ <div class="flex justify-between">
141
+ <span class="text-gray-600">• Serviços:</span>
142
+ <span class="font-medium">R$ 2.627 (5.1%)</span>
143
+ </div>
144
+ <div class="flex justify-between">
145
+ <span class="text-gray-600">• Outras Receitas:</span>
146
+ <span class="font-medium">R$ 1.390 (2.7%)</span>
147
+ </div>
148
+ </div>
149
+ </div>
150
+
151
+ <div class="border-l-4 border-red-500 pl-4">
152
+ <h3 class="font-semibold text-gray-700">Despesas Totais</h3>
153
+ <p class="text-2xl font-bold text-red-600">R$ 52.617</p>
154
+ <div class="mt-2 space-y-1 text-sm">
155
+ <div class="flex justify-between">
156
+ <span class="text-gray-600">• PLR (Participação Lucros):</span>
157
+ <span class="font-medium">R$ 22.964 (43.6%)</span>
158
+ </div>
159
+ <div class="flex justify-between">
160
+ <span class="text-gray-600">• Salários e Encargos:</span>
161
+ <span class="font-medium">R$ 11.294 (21.5%)</span>
162
+ </div>
163
+ <div class="flex justify-between">
164
+ <span class="text-gray-600">• Custos Variáveis:</span>
165
+ <span class="font-medium">R$ 11.391 (21.7%)</span>
166
+ </div>
167
+ <div class="flex justify-between">
168
+ <span class="text-gray-600">• Demais Despesas:</span>
169
+ <span class="font-medium">R$ 6.968 (13.2%)</span>
170
+ </div>
171
+ </div>
172
+ </div>
173
+
174
+ <div class="border-l-4 border-purple-500 pl-4">
175
+ <h3 class="font-semibold text-gray-700">Indicadores Financeiros</h3>
176
+ <div class="grid grid-cols-2 gap-4 mt-2">
177
+ <div>
178
+ <p class="text-sm text-gray-600">Resultado Operacional</p>
179
+ <p class="text-xl font-bold text-blue-600">R$ 20.249</p>
180
+ </div>
181
+ <div>
182
+ <p class="text-sm text-gray-600">Lucro Líquido</p>
183
+ <p class="text-xl font-bold text-green-600">R$ -2.715</p>
184
+ </div>
185
+ <div>
186
+ <p class="text-sm text-gray-600">Margem Contribuição</p>
187
+ <p class="text-xl font-bold text-purple-600">75.4%</p>
188
+ </div>
189
+ <div>
190
+ <p class="text-sm text-gray-600">Saldo Final Caixa</p>
191
+ <p class="text-xl font-bold text-gray-700">R$ 27.611</p>
192
+ </div>
193
+ </div>
194
+ </div>
195
+ </div>
196
+ </div>
197
+
198
+ <div class="bg-white rounded-xl shadow-sm p-6">
199
+ <h2 class="text-xl font-semibold text-gray-800 mb-4 flex items-center gap-2">
200
+ <i data-feather="alert-triangle" class="w-5 h-5"></i>
201
+ Pontos de Atenção
202
+ </h2>
203
+ <div class="space-y-3">
204
+ <div class="flex items-start gap-2">
205
+ <i data-feather="alert-circle" class="w-5 h-5 text-yellow-500 mt-0.5"></i>
206
+ <div>
207
+ <p class="text-sm font-medium text-gray-700">PLR Elevado</p>
208
+ <p class="text-xs text-gray-600">PLR representa 43.6% das despesas de Novembro</p>
209
+ </div>
210
+ </div>
211
+ <div class="flex items-start gap-2">
212
+ <i data-feather="trending-down" class="w-5 h-5 text-red-500 mt-0.5"></i>
213
+ <div>
214
+ <p class="text-sm font-medium text-gray-700">Caixa em Queda</p>
215
+ <p class="text-xs text-gray-600">Saldo reduziu 52% desde Janeiro</p>
216
+ </div>
217
+ </div>
218
+ <div class="flex items-start gap-2">
219
+ <i data-feather="target" class="w-5 h-5 text-blue-500 mt-0.5"></i>
220
+ <div>
221
+ <p class="text-sm font-medium text-gray-700">Dependência Tráfego</p>
222
+ <p class="text-xs text-gray-600">74.2% das receitas vêm de tráfego</p>
223
+ </div>
224
+ </div>
225
+ <div class="flex items-start gap-2">
226
+ <i data-feather="arrow-up" class="w-5 h-5 text-green-500 mt-0.5"></i>
227
+ <div>
228
+ <p class="text-sm font-medium text-gray-700">Boa Margem</p>
229
+ <p class="text-xs text-gray-600">Margem de contribuição de 75.4% é saudável</p>
230
+ </div>
231
+ </div>
232
+ </div>
233
+ </div>
234
+ </div>
235
+
236
+ <!-- Cash Flow Projection -->
237
+ <div class="bg-white rounded-xl shadow-sm p-6 mb-8">
238
+ <h2 class="text-xl font-semibold text-gray-800 mb-4 flex items-center gap-2">
239
+ <i data-feather="activity" class="w-5 h-5"></i>
240
+ Projeção de Fluxo de Caixa - Próximos 6 Meses
241
+ </h2>
242
+ <canvas id="projectionChart"></canvas>
243
+
244
+ <div class="mt-6 p-4 bg-blue-50 rounded-lg">
245
+ <h3 class="font-semibold text-gray-700 mb-2">Diretrizes e Recomendações:</h3>
246
+ <ul class="space-y-2 text-sm text-gray-600">
247
+ <li class="flex items-start gap-2">
248
+ <i data-feather="check-circle" class="w-4 h-4 text-green-500 mt-0.5"></i>
249
+ <span>Reduzir PLR para máximo 30% do lucro operacional para melhorar fluxo</span>
250
+ </li>
251
+ <li class="flex items-start gap-2">
252
+ <i data-feather="check-circle" class="w-4 h-4 text-green-500 mt-0.5"></i>
253
+ <span>Diversificar fontes de receita para reduzir dependência de tráfego</span>
254
+ </li>
255
+ <li class="flex items-start gap-2">
256
+ <i data-feather="check-circle" class="w-4 h-4 text-green-500 mt-0.5"></i>
257
+ <span>Renegociar contratos de prestadores de serviço para reduzir custos variáveis</span>
258
+ </li>
259
+ <li class="flex items-start gap-2">
260
+ <i data-feather="check-circle" class="w-4 h-4 text-green-500 mt-0.5"></i>
261
+ <span>Implementar controle mais rigoroso de despesas administrativas</span>
262
+ </li>
263
+ <li class="flex items-start gap-2">
264
+ <i data-feather="check-circle" class="w-4 h-4 text-green-500 mt-0.5"></i>
265
+ <span>Manter reserva mínima de caixa equivalente a 2 meses de despesas fixas</span>
266
+ </li>
267
+ </ul>
268
+ </div>
269
+ </div>
270
+
271
+ <!-- Detailed Table -->
272
+ <div class="bg-white rounded-xl shadow-sm p-6">
273
+ <h2 class="text-xl font-semibold text-gray-800 mb-4 flex items-center gap-2">
274
+ <i data-feather="table" class="w-5 h-5"></i>
275
+ Resumo Mensal Consolidado
276
+ </h2>
277
+ <div class="overflow-x-auto">
278
+ <table class="w-full text-sm">
279
+ <thead>
280
+ <tr class="border-b-2 border-gray-200">
281
+ <th class="text-left py-2 px-3">Mês</th>
282
+ <th class="text-right py-2 px-3">Receitas</th>
283
+ <th class="text-right py-2 px-3">Despesas</th>
284
+ <th class="text-right py-2 px-3">Resultado</th>
285
+ <th class="text-right py-2 px-3">Saldo Caixa</th>
286
+ </tr>
287
+ </thead>
288
+ <tbody id="monthlyTable">
289
+ <!-- Table will be populated by JavaScript -->
290
+ </tbody>
291
+ </table>
292
+ </div>
293
+ </div>
294
+ </main>
295
+
296
+ <!-- Footer -->
297
+ <custom-footer></custom-footer>
298
+
299
+ <script>
300
+ feather.replace();
301
+ </script>
302
+ <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
303
+ </body>
304
+ </html>
script.js ADDED
@@ -0,0 +1,347 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Financial Data and Analysis
2
+ const financialData = {
3
+ months: ['jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago', 'set', 'out', 'nov'],
4
+ revenues: [32757, 36279, 37684, 34902, 34148, 42104, 33888, 44910, 46361, 49334, 51009],
5
+ expenses: [38408, 38022, 41353, 38789, 38435, 46177, 43866, 44193, 50352, 51320, 52617],
6
+ operationalProfit: [14289, 20353, 15290, 14714, 14704, 17381, 11422, 20951, 15252, 20792, 20249],
7
+ plr: [19396, 19396, 19396, 19396, 19396, 21396, 21396, 21396, 20964, 22964, 22964],
8
+ cashBalance: [57765, 52114, 50371, 46703, 42816, 42529, 44457, 36478, 25195, 27204, 27102, 27611],
9
+ revenueBreakdown: {
10
+ november: {
11
+ traffic: 37828,
12
+ webDesign: 9165,
13
+ services: 2627,
14
+ hosting: 222,
15
+ financial: 0,
16
+ others: 1168
17
+ }
18
+ },
19
+ expensesBreakdown: {
20
+ november: {
21
+ plr: 22964,
22
+ salaries: 11294,
23
+ variableCosts: 11391,
24
+ taxes: 4813,
25
+ administrative: 5827,
26
+ commercial: 893,
27
+ property: 89,
28
+ financial: 61,
29
+ others: 0
30
+ }
31
+ }
32
+ };
33
+
34
+ // Utility Functions
35
+ function formatCurrency(value) {
36
+ return new Intl.NumberFormat('pt-BR', {
37
+ style: 'currency',
38
+ currency: 'BRL'
39
+ }).format(value);
40
+ }
41
+
42
+ function formatPercentage(value) {
43
+ return (value * 100).toFixed(1) + '%';
44
+ }
45
+
46
+ // Calculate Financial Metrics
47
+ function calculateMetrics() {
48
+ const totalRevenues = financialData.revenues.reduce((a, b) => a + b, 0);
49
+ const totalExpenses = financialData.expenses.reduce((a, b) => a + b, 0);
50
+ const avgOperationalProfit = financialData.operationalProfit.reduce((a, b) => a + b, 0) / financialData.operationalProfit.length;
51
+
52
+ // Calculate average contribution margin
53
+ let totalContributionMargin = 0;
54
+ for (let i = 0; i < financialData.months.length; i++) {
55
+ const contributionMargin = financialData.revenues[i] * 0.754; // Using average 75.4%
56
+ totalContributionMargin += contributionMargin;
57
+ }
58
+ const avgContributionMargin = totalContributionMargin / totalRevenues;
59
+
60
+ return {
61
+ totalRevenues,
62
+ totalExpenses,
63
+ avgOperationalProfit,
64
+ avgContributionMargin
65
+ };
66
+ }
67
+
68
+ // Update KPI Cards
69
+ function updateKPIs() {
70
+ const metrics = calculateMetrics();
71
+
72
+ document.getElementById('totalRevenues').textContent = formatCurrency(metrics.totalRevenues);
73
+ document.getElementById('totalExpenses').textContent = formatCurrency(metrics.totalExpenses);
74
+ document.getElementById('operationalProfit').textContent = formatCurrency(metrics.avgOperationalProfit);
75
+ document.getElementById('contributionMargin').textContent = formatPercentage(metrics.avgContributionMargin);
76
+ }
77
+
78
+ // Create Monthly Flow Chart
79
+ function createMonthlyFlowChart() {
80
+ const ctx = document.getElementById('monthlyFlowChart').getContext('2d');
81
+
82
+ new Chart(ctx, {
83
+ type: 'line',
84
+ data: {
85
+ labels: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov'],
86
+ datasets: [{
87
+ label: 'Receitas',
88
+ data: financialData.revenues,
89
+ borderColor: '#10B981',
90
+ backgroundColor: 'rgba(16, 185, 129, 0.1)',
91
+ tension: 0.4,
92
+ fill: true
93
+ }, {
94
+ label: 'Despesas',
95
+ data: financialData.expenses,
96
+ borderColor: '#EF4444',
97
+ backgroundColor: 'rgba(239, 68, 68, 0.1)',
98
+ tension: 0.4,
99
+ fill: true
100
+ }, {
101
+ label: 'Saldo Caixa',
102
+ data: financialData.cashBalance.slice(1),
103
+ borderColor: '#3B82F6',
104
+ backgroundColor: 'rgba(59, 130, 246, 0.1)',
105
+ tension: 0.4,
106
+ fill: false,
107
+ yAxisID: 'y1'
108
+ }]
109
+ },
110
+ options: {
111
+ responsive: true,
112
+ maintainAspectRatio: false,
113
+ plugins: {
114
+ legend: {
115
+ position: 'top',
116
+ }
117
+ },
118
+ scales: {
119
+ y: {
120
+ beginAtZero: true,
121
+ ticks: {
122
+ callback: function(value) {
123
+ return formatCurrency(value);
124
+ }
125
+ }
126
+ },
127
+ y1: {
128
+ type: 'linear',
129
+ display: true,
130
+ position: 'right',
131
+ grid: {
132
+ drawOnChartArea: false,
133
+ },
134
+ ticks: {
135
+ callback: function(value) {
136
+ return formatCurrency(value);
137
+ }
138
+ }
139
+ }
140
+ }
141
+ }
142
+ });
143
+ }
144
+
145
+ // Create Revenue Composition Chart
146
+ function createRevenueCompositionChart() {
147
+ const ctx = document.getElementById('revenueCompositionChart').getContext('2d');
148
+ const novemberData = financialData.revenueBreakdown.november;
149
+
150
+ new Chart(ctx, {
151
+ type: 'doughnut',
152
+ data: {
153
+ labels: ['Tráfego', 'Web Design', 'Serviços', 'Hospedagem', 'Outras'],
154
+ datasets: [{
155
+ data: [novemberData.traffic, novemberData.webDesign, novemberData.services, novemberData.hosting, novemberData.others],
156
+ backgroundColor: [
157
+ '#3B82F6',
158
+ '#10B981',
159
+ '#F59E0B',
160
+ '#8B5CF6',
161
+ '#EF4444'
162
+ ]
163
+ }]
164
+ },
165
+ options: {
166
+ responsive: true,
167
+ maintainAspectRatio: false,
168
+ plugins: {
169
+ legend: {
170
+ position: 'right',
171
+ },
172
+ tooltip: {
173
+ callbacks: {
174
+ label: function(context) {
175
+ const total = context.dataset.data.reduce((a, b) => a + b, 0);
176
+ const percentage = ((context.raw / total) * 100).toFixed(1);
177
+ return context.label + ': ' + formatCurrency(context.raw) + ' (' + percentage + '%)';
178
+ }
179
+ }
180
+ }
181
+ }
182
+ }
183
+ });
184
+ }
185
+
186
+ // Create Projection Chart
187
+ function createProjectionChart() {
188
+ const ctx = document.getElementById('projectionChart').getContext('2d');
189
+
190
+ // Project next 6 months based on trends
191
+ const projectionMonths = ['Dez', 'Jan', 'Fev', 'Mar', 'Abr', 'Mai'];
192
+ const lastRevenue = financialData.revenues[financialData.revenues.length - 1];
193
+ const lastExpense = financialData.expenses[financialData.expenses.length - 1];
194
+
195
+ // Simple linear projection with slight growth for revenues and controlled expenses
196
+ const projectedRevenues = [
197
+ lastRevenue * 0.9, // December lower due to holidays
198
+ lastRevenue * 1.02,
199
+ lastRevenue * 1.04,
200
+ lastRevenue * 1.06,
201
+ lastRevenue * 1.08,
202
+ lastRevenue * 1.10
203
+ ];
204
+
205
+ const projectedExpenses = [
206
+ lastExpense * 0.8, // December lower expenses
207
+ lastExpense * 0.95, // Cost reduction measures
208
+ lastExpense * 0.96,
209
+ lastExpense * 0.97,
210
+ lastExpense * 0.98,
211
+ lastExpense * 0.99
212
+ ];
213
+
214
+ let projectedCash = financialData.cashBalance[financialData.cashBalance.length - 1];
215
+ const projectedCashFlow = [projectedCash];
216
+
217
+ for (let i = 0; i < projectedRevenues.length; i++) {
218
+ projectedCash += (projectedRevenues[i] - projectedExpenses[i]);
219
+ projectedCashFlow.push(projectedCash);
220
+ }
221
+
222
+ new Chart(ctx, {
223
+ type: 'line',
224
+ data: {
225
+ labels: ['Nov', ...projectionMonths],
226
+ datasets: [{
227
+ label: 'Receitas Projetadas',
228
+ data: [null, ...projectedRevenues],
229
+ borderColor: '#10B981',
230
+ borderDash: [5, 5],
231
+ tension: 0.4
232
+ }, {
233
+ label: 'Despesas Projetadas',
234
+ data: [null, ...projectedExpenses],
235
+ borderColor: '#EF4444',
236
+ borderDash: [5, 5],
237
+ tension: 0.4
238
+ }, {
239
+ label: 'Saldo Caixa Projetado',
240
+ data: projectedCashFlow,
241
+ borderColor: '#3B82F6',
242
+ backgroundColor: 'rgba(59, 130, 246, 0.2)',
243
+ fill: true,
244
+ tension: 0.4
245
+ }]
246
+ },
247
+ options: {
248
+ responsive: true,
249
+ maintainAspectRatio: false,
250
+ plugins: {
251
+ legend: {
252
+ position: 'top',
253
+ }
254
+ },
255
+ scales: {
256
+ y: {
257
+ beginAtZero: false,
258
+ ticks: {
259
+ callback: function(value) {
260
+ return formatCurrency(value);
261
+ }
262
+ }
263
+ }
264
+ }
265
+ }
266
+ });
267
+ }
268
+
269
+ // Populate Monthly Table
270
+ function populateMonthlyTable() {
271
+ const tableBody = document.getElementById('monthlyTable');
272
+ tableBody.innerHTML = '';
273
+
274
+ for (let i = 0; i < financialData.months.length; i++) {
275
+ const revenue = financialData.revenues[i];
276
+ const expense = financialData.expenses[i];
277
+ const result = revenue - expense;
278
+ const cashBalance = financialData.cashBalance[i + 1];
279
+
280
+ const row = document.createElement('tr');
281
+ row.className = 'border-b border-gray-100';
282
+ row.innerHTML = `
283
+ <td class="py-2 px-3 font-medium">${financialData.months[i].charAt(0).toUpperCase() + financialData.months[i].slice(1)}/25</td>
284
+ <td class="py-2 px-3 text-right font-medium text-green-600">${formatCurrency(revenue)}</td>
285
+ <td class="py-2 px-3 text-right font-medium text-red-600">${formatCurrency(expense)}</td>
286
+ <td class="py-2 px-3 text-right font-medium ${result >= 0 ? 'text-green-600' : 'text-red-600'}">${formatCurrency(result)}</td>
287
+ <td class="py-2 px-3 text-right font-medium">${formatCurrency(cashBalance)}</td>
288
+ `;
289
+ tableBody.appendChild(row);
290
+ }
291
+
292
+ // Add totals row
293
+ const totalRevenue = financialData.revenues.reduce((a, b) => a + b, 0);
294
+ const totalExpense = financialData.expenses.reduce((a, b) => a + b, 0);
295
+ const totalResult = totalRevenue - totalExpense;
296
+
297
+ const totalsRow = document.createElement('tr');
298
+ totalsRow.className = 'font-bold bg-gray-50';
299
+ totalsRow.innerHTML = `
300
+ <td class="py-2 px-3">TOTAL</td>
301
+ <td class="py-2 px-3 text-right text-green-600">${formatCurrency(totalRevenue)}</td>
302
+ <td class="py-2 px-3 text-right text-red-600">${formatCurrency(totalExpense)}</td>
303
+ <td class="py-2 px-3 text-right ${totalResult >= 0 ? 'text-green-600' : 'text-red-600'}">${formatCurrency(totalResult)}</td>
304
+ <td class="py-2 px-3 text-right">${formatCurrency(financialData.cashBalance[financialData.cashBalance.length - 1])}</td>
305
+ `;
306
+ tableBody.appendChild(totalsRow);
307
+ }
308
+
309
+ // Export to PDF (placeholder function)
310
+ function exportToPDF() {
311
+ alert('Função de exportação para PDF será implementada com integração de biblioteca PDF como jsPDF');
312
+ }
313
+
314
+ // Refresh Data (placeholder function)
315
+ function refreshData() {
316
+ const cards = document.querySelectorAll('.bg-white');
317
+ cards.forEach(card => card.classList.add('loading'));
318
+
319
+ setTimeout(() => {
320
+ cards.forEach(card => card.classList.remove('loading'));
321
+ updateKPIs();
322
+ populateMonthlyTable();
323
+ }, 1000);
324
+ }
325
+
326
+ // Initialize Dashboard
327
+ document.addEventListener('DOMContentLoaded', function() {
328
+ updateKPIs();
329
+ createMonthlyFlowChart();
330
+ createRevenueCompositionChart();
331
+ createProjectionChart();
332
+ populateMonthlyTable();
333
+ });
334
+
335
+ // Smooth scroll for anchor links
336
+ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
337
+ anchor.addEventListener('click', function (e) {
338
+ e.preventDefault();
339
+ const target = document.querySelector(this.getAttribute('href'));
340
+ if (target) {
341
+ target.scrollIntoView({
342
+ behavior: 'smooth',
343
+ block: 'start'
344
+ });
345
+ }
346
+ });
347
+ });
style.css CHANGED
@@ -1,28 +1,221 @@
 
 
 
 
 
 
 
 
 
 
 
1
  body {
2
- padding: 2rem;
3
- font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  }
5
 
6
- h1 {
7
- font-size: 16px;
8
- margin-top: 0;
9
  }
10
 
11
- p {
12
- color: rgb(107, 114, 128);
13
- font-size: 15px;
14
- margin-bottom: 10px;
15
- margin-top: 5px;
 
 
 
 
 
 
16
  }
17
 
18
- .card {
19
- max-width: 620px;
20
- margin: 0 auto;
21
- padding: 16px;
22
- border: 1px solid lightgray;
23
- border-radius: 16px;
 
 
 
 
 
 
 
 
24
  }
25
 
26
- .card p:last-child {
27
- margin-bottom: 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Custom Styles for Financial Dashboard */
2
+
3
+ :root {
4
+ --primary-color: #3B82F6;
5
+ --secondary-color: #10B981;
6
+ --danger-color: #EF4444;
7
+ --warning-color: #F59E0B;
8
+ --dark-color: #1F2937;
9
+ --light-color: #F9FAFB;
10
+ }
11
+
12
  body {
13
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
14
+ }
15
+
16
+ /* Card Animations */
17
+ .bg-white {
18
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
19
+ }
20
+
21
+ .bg-white:hover {
22
+ transform: translateY(-2px);
23
+ box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
24
+ }
25
+
26
+ /* Custom Scrollbar */
27
+ ::-webkit-scrollbar {
28
+ width: 8px;
29
+ height: 8px;
30
+ }
31
+
32
+ ::-webkit-scrollbar-track {
33
+ background: #f1f1f1;
34
+ border-radius: 4px;
35
+ }
36
+
37
+ ::-webkit-scrollbar-thumb {
38
+ background: #888;
39
+ border-radius: 4px;
40
+ }
41
+
42
+ ::-webkit-scrollbar-thumb:hover {
43
+ background: #555;
44
+ }
45
+
46
+ /* Chart Container */
47
+ canvas {
48
+ max-height: 300px;
49
+ }
50
+
51
+ /* Number Formatting */
52
+ .currency {
53
+ font-variant-numeric: tabular-nums;
54
+ }
55
+
56
+ /* Loading Animation */
57
+ @keyframes pulse {
58
+ 0%, 100% {
59
+ opacity: 1;
60
+ }
61
+ 50% {
62
+ opacity: .5;
63
+ }
64
+ }
65
+
66
+ .loading {
67
+ animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
68
+ }
69
+
70
+ /* Table Styles */
71
+ table {
72
+ border-collapse: separate;
73
+ border-spacing: 0;
74
+ }
75
+
76
+ table th {
77
+ font-weight: 600;
78
+ color: var(--dark-color);
79
+ background-color: var(--light-color);
80
+ position: sticky;
81
+ top: 0;
82
+ z-index: 10;
83
+ }
84
+
85
+ table td {
86
+ border-bottom: 1px solid #E5E7EB;
87
+ }
88
+
89
+ table tr:hover td {
90
+ background-color: #F9FAFB;
91
+ }
92
+
93
+ /* Positive and Negative Values */
94
+ .text-positive {
95
+ color: var(--secondary-color);
96
+ }
97
+
98
+ .text-negative {
99
+ color: var(--danger-color);
100
+ }
101
+
102
+ /* Custom Button Styles */
103
+ button {
104
+ transition: all 0.2s ease;
105
+ }
106
+
107
+ button:hover {
108
+ transform: translateY(-1px);
109
+ }
110
+
111
+ button:active {
112
+ transform: translateY(0);
113
+ }
114
+
115
+ /* Alert Box Styles */
116
+ .alert-box {
117
+ border-left-width: 4px;
118
+ border-left-style: solid;
119
+ }
120
+
121
+ .alert-success {
122
+ border-left-color: var(--secondary-color);
123
+ background-color: #F0FDF4;
124
+ }
125
+
126
+ .alert-warning {
127
+ border-left-color: var(--warning-color);
128
+ background-color: #FFFBEB;
129
+ }
130
+
131
+ .alert-danger {
132
+ border-left-color: var(--danger-color);
133
+ background-color: #FEF2F2;
134
  }
135
 
136
+ .alert-info {
137
+ border-left-color: var(--primary-color);
138
+ background-color: #EFF6FF;
139
  }
140
 
141
+ /* Responsive Typography */
142
+ @media (max-width: 640px) {
143
+ .text-3xl {
144
+ font-size: 1.5rem;
145
+ line-height: 2rem;
146
+ }
147
+
148
+ .text-2xl {
149
+ font-size: 1.25rem;
150
+ line-height: 1.75rem;
151
+ }
152
  }
153
 
154
+ /* Print Styles */
155
+ @media print {
156
+ body {
157
+ print-color-adjust: exact;
158
+ -webkit-print-color-adjust: exact;
159
+ }
160
+
161
+ .no-print {
162
+ display: none !important;
163
+ }
164
+
165
+ .bg-white {
166
+ break-inside: avoid;
167
+ }
168
  }
169
 
170
+ /* Dark mode support (if implemented later) */
171
+ @media (prefers-color-scheme: dark) {
172
+ body {
173
+ background-color: #111827;
174
+ color: #F9FAFB;
175
+ }
176
+
177
+ .bg-white {
178
+ background-color: #1F2937;
179
+ color: #F9FAFB;
180
+ }
181
+
182
+ .text-gray-800 {
183
+ color: #F9FAFB;
184
+ }
185
+
186
+ .text-gray-600 {
187
+ color: #D1D5DB;
188
+ }
189
  }
190
+
191
+ /* Smooth Transitions */
192
+ * {
193
+ transition: color 0.2s ease, background-color 0.2s ease;
194
+ }
195
+
196
+ /* Custom Tooltip */
197
+ .tooltip {
198
+ position: relative;
199
+ }
200
+
201
+ .tooltip::after {
202
+ content: attr(data-tooltip);
203
+ position: absolute;
204
+ bottom: 100%;
205
+ left: 50%;
206
+ transform: translateX(-50%);
207
+ background-color: #1F2937;
208
+ color: white;
209
+ padding: 0.25rem 0.5rem;
210
+ border-radius: 0.25rem;
211
+ font-size: 0.75rem;
212
+ white-space: nowrap;
213
+ opacity: 0;
214
+ pointer-events: none;
215
+ transition: opacity 0.2s ease;
216
+ z-index: 50;
217
+ }
218
+
219
+ .tooltip:hover::after {
220
+ opacity: 1;
221
+ }