EraDigital commited on
Commit
0347016
·
verified ·
1 Parent(s): e6f85f3

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 +7 -4
  2. components/footer.js +114 -0
  3. components/navbar.js +106 -0
  4. index.html +195 -19
  5. script.js +339 -0
  6. style.css +80 -19
README.md CHANGED
@@ -1,10 +1,13 @@
1
  ---
2
- title: Fluxocash Pro
3
- emoji: 🐢
4
- colorFrom: green
5
  colorTo: blue
 
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: FluxoCash Pro 📊
3
+ colorFrom: yellow
 
4
  colorTo: blue
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,114 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomFooter extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: block;
8
+ margin-top: 3rem;
9
+ }
10
+
11
+ footer {
12
+ background-color: #1f2937;
13
+ color: #d1d5db;
14
+ }
15
+
16
+ .footer-container {
17
+ max-width: 7xl;
18
+ margin: 0 auto;
19
+ padding: 2rem 1rem;
20
+ }
21
+
22
+ .footer-content {
23
+ display: grid;
24
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
25
+ gap: 2rem;
26
+ }
27
+
28
+ .footer-section h3 {
29
+ color: white;
30
+ font-weight: 600;
31
+ margin-bottom: 1rem;
32
+ }
33
+
34
+ .footer-link {
35
+ color: #d1d5db;
36
+ text-decoration: none;
37
+ display: block;
38
+ margin-bottom: 0.5rem;
39
+ transition: color 0.3s ease;
40
+ }
41
+
42
+ .footer-link:hover {
43
+ color: white;
44
+ }
45
+
46
+ .footer-bottom {
47
+ border-top: 1px solid #374151;
48
+ margin-top: 2rem;
49
+ padding-top: 2rem;
50
+ text-align: center;
51
+ color: #9ca3af;
52
+ }
53
+
54
+ .social-links {
55
+ display: flex;
56
+ justify-content: center;
57
+ space-x: 4;
58
+ margin-top: 1rem;
59
+ }
60
+
61
+ .social-link {
62
+ color: #d1d5db;
63
+ transition: color 0.3s ease;
64
+ }
65
+
66
+ .social-link:hover {
67
+ color: white;
68
+ }
69
+ </style>
70
+
71
+ <footer>
72
+ <div class="footer-container">
73
+ <div class="footer-content">
74
+ <div class="footer-section">
75
+ <h3>FluxoCash Pro</h3>
76
+ <p>Sua solução completa para análise financeira e gestão de fluxo de caixa.</p>
77
+ </div>
78
+
79
+ <div class="footer-section">
80
+ <h3>Links Úteis</h3>
81
+ <a href="#" class="footer-link">Documentação</a>
82
+ <a href="#" class="footer-link">API</a>
83
+ <a href="#" class="footer-link">Blog</a>
84
+ <a href="#" class="footer-link">Suporte</a>
85
+ </div>
86
+
87
+ <div class="footer-section">
88
+ <h3>Contato</h3>
89
+ <p>Email: contato@fluxocash.pro</p>
90
+ <p>Telefone: (11) 1234-5678</p>
91
+ </div>
92
+ </div>
93
+
94
+ <div class="footer-bottom">
95
+ <p>&copy; 2025 FluxoCash Pro. Todos os direitos reservados.</p>
96
+ <div class="social-links">
97
+ <a href="#" class="social-link">
98
+ <i data-feather="twitter"></i>
99
+ </a>
100
+ <a href="#" class="social-link">
101
+ <i data-feather="linkedin"></i>
102
+ </a>
103
+ <a href="#" class="social-link">
104
+ <i data-feather="github"></i>
105
+ </a>
106
+ </div>
107
+ </div>
108
+ </div>
109
+ </footer>
110
+ `;
111
+ }
112
+ }
113
+
114
+ customElements.define('custom-footer', CustomFooter);
components/navbar.js ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomNavbar extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: block;
8
+ }
9
+
10
+ nav {
11
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
12
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
13
+ }
14
+
15
+ .nav-container {
16
+ max-width: 7xl;
17
+ margin: 0 auto;
18
+ padding: 0 1rem;
19
+ }
20
+
21
+ .nav-wrapper {
22
+ display: flex;
23
+ justify-content: space-between;
24
+ align-items: center;
25
+ height: 4rem;
26
+ }
27
+
28
+ .nav-brand {
29
+ display: flex;
30
+ align-items: center;
31
+ space-x: 2;
32
+ text-decoration: none;
33
+ }
34
+
35
+ .brand-icon {
36
+ width: 2rem;
37
+ height: 2rem;
38
+ color: white;
39
+ }
40
+
41
+ .brand-text {
42
+ font-size: 1.25rem;
43
+ font-weight: bold;
44
+ color: white;
45
+ }
46
+
47
+ .nav-links {
48
+ display: flex;
49
+ space-x: 6;
50
+ }
51
+
52
+ .nav-link {
53
+ color: rgba(255, 255, 255, 0.9);
54
+ text-decoration: none;
55
+ transition: color 0.3s ease;
56
+ display: flex;
57
+ align-items: center;
58
+ space-x: 1;
59
+ }
60
+
61
+ .nav-link:hover {
62
+ color: white;
63
+ }
64
+
65
+ .nav-icon {
66
+ width: 1.25rem;
67
+ height: 1.25rem;
68
+ }
69
+
70
+ @media (max-width: 640px) {
71
+ .nav-links {
72
+ display: none;
73
+ }
74
+ }
75
+ </style>
76
+
77
+ <nav>
78
+ <div class="nav-container">
79
+ <div class="nav-wrapper">
80
+ <a href="#" class="nav-brand">
81
+ <i class="brand-icon" data-feather="bar-chart-2"></i>
82
+ <span class="brand-text">FluxoCash Pro</span>
83
+ </a>
84
+
85
+ <div class="nav-links">
86
+ <a href="#" class="nav-link">
87
+ <i class="nav-icon" data-feather="home"></i>
88
+ <span>Dashboard</span>
89
+ </a>
90
+ <a href="#" class="nav-link">
91
+ <i class="nav-icon" data-feather="trending-up"></i>
92
+ <span>Relatórios</span>
93
+ </a>
94
+ <a href="#" class="nav-link">
95
+ <i class="nav-icon" data-feather="settings"></i>
96
+ <span>Configurações</span>
97
+ </a>
98
+ </div>
99
+ </div>
100
+ </div>
101
+ </nav>
102
+ `;
103
+ }
104
+ }
105
+
106
+ customElements.define('custom-navbar', CustomNavbar);
index.html CHANGED
@@ -1,19 +1,195 @@
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>FluxoCash Pro - Análise Financeira</title>
7
+ <link rel="icon" type="image/x-icon" href="/static/favicon.ico">
8
+ <link rel="stylesheet" href="style.css">
9
+ <script src="https://cdn.tailwindcss.com"></script>
10
+ <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
11
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
12
+ <script src="https://unpkg.com/feather-icons"></script>
13
+ </head>
14
+ <body class="bg-gray-50 dark:bg-gray-900 transition-colors duration-300">
15
+ <custom-navbar></custom-navbar>
16
+
17
+ <main class="container mx-auto px-4 py-8 max-w-7xl">
18
+ <!-- Header -->
19
+ <header class="mb-8">
20
+ <h1 class="text-4xl font-bold text-gray-800 dark:text-white mb-2">
21
+ Análise Financeira - Novembro/25
22
+ </h1>
23
+ <p class="text-gray-600 dark:text-gray-300">
24
+ Dashboard completo de fluxo de caixa com projeções e insights
25
+ </p>
26
+ </header>
27
+
28
+ <!-- KPI Cards -->
29
+ <section class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-8">
30
+ <div class="kpi-card bg-gradient-to-br from-green-400 to-green-600">
31
+ <div class="flex items-center justify-between">
32
+ <div>
33
+ <p class="text-white text-sm font-medium">Receitas Totais</p>
34
+ <p class="text-3xl font-bold text-white" id="total-revenue">R$ 0</p>
35
+ </div>
36
+ <i data-feather="trending-up" class="text-white w-8 h-8"></i>
37
+ </div>
38
+ </div>
39
+
40
+ <div class="kpi-card bg-gradient-to-br from-red-400 to-red-600">
41
+ <div class="flex items-center justify-between">
42
+ <div>
43
+ <p class="text-white text-sm font-medium">Despesas Totais</p>
44
+ <p class="text-3xl font-bold text-white" id="total-expenses">R$ 0</p>
45
+ </div>
46
+ <i data-feather="trending-down" class="text-white w-8 h-8"></i>
47
+ </div>
48
+ </div>
49
+
50
+ <div class="kpi-card bg-gradient-to-br from-blue-400 to-blue-600">
51
+ <div class="flex items-center justify-between">
52
+ <div>
53
+ <p class="text-white text-sm font-medium">Lucro Líquido</p>
54
+ <p class="text-3xl font-bold text-white" id="net-profit">R$ 0</p>
55
+ </div>
56
+ <i data-feather="dollar-sign" class="text-white w-8 h-8"></i>
57
+ </div>
58
+ </div>
59
+
60
+ <div class="kpi-card bg-gradient-to-br from-purple-400 to-purple-600">
61
+ <div class="flex items-center justify-between">
62
+ <div>
63
+ <p class="text-white text-sm font-medium">Margem de Contribuição</p>
64
+ <p class="text-3xl font-bold text-white" id="contribution-margin">0%</p>
65
+ </div>
66
+ <i data-feather="percent" class="text-white w-8 h-8"></i>
67
+ </div>
68
+ </div>
69
+ </section>
70
+
71
+ <!-- Charts Section -->
72
+ <section class="grid grid-cols-1 lg:grid-cols-2 gap-6 mb-8">
73
+ <div class="bg-white dark:bg-gray-800 rounded-xl shadow-lg p-6">
74
+ <h2 class="text-xl font-semibold text-gray-800 dark:text-white mb-4">
75
+ Evolução do Fluxo de Caixa
76
+ </h2>
77
+ <canvas id="cashFlowChart" width="400" height="200"></canvas>
78
+ </div>
79
+
80
+ <div class="bg-white dark:bg-gray-800 rounded-xl shadow-lg p-6">
81
+ <h2 class="text-xl font-semibold text-gray-800 dark:text-white mb-4">
82
+ Composição das Receitas
83
+ </h2>
84
+ <canvas id="revenueCompositionChart" width="400" height="200"></canvas>
85
+ </div>
86
+ </section>
87
+
88
+ <!-- Detailed Analysis -->
89
+ <section class="grid grid-cols-1 lg:grid-cols-3 gap-6 mb-8">
90
+ <div class="lg:col-span-2 bg-white dark:bg-gray-800 rounded-xl shadow-lg p-6">
91
+ <h2 class="text-xl font-semibold text-gray-800 dark:text-white mb-4">
92
+ Detalhamento de Receitas
93
+ </h2>
94
+ <div class="overflow-x-auto">
95
+ <table class="min-w-full divide-y divide-gray-200 dark:divide-gray-700">
96
+ <thead class="bg-gray-50 dark:bg-gray-700">
97
+ <tr>
98
+ <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">
99
+ Categoria
100
+ </th>
101
+ <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">
102
+ Valor (R$)
103
+ </th>
104
+ <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">
105
+ % do Total
106
+ </th>
107
+ </tr>
108
+ </thead>
109
+ <tbody id="revenue-details" class="bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700">
110
+ </tbody>
111
+ </table>
112
+ </div>
113
+ </div>
114
+
115
+ <div class="bg-white dark:bg-gray-800 rounded-xl shadow-lg p-6">
116
+ <h2 class="text-xl font-semibold text-gray-800 dark:text-white mb-4">
117
+ PLR - Participação nos Lucros
118
+ </h2>
119
+ <div class="space-y-4">
120
+ <div class="flex justify-between items-center p-4 bg-red-50 dark:bg-red-900/20 rounded-lg">
121
+ <span class="text-gray-700 dark:text-gray-300">Total PLR Pago</span>
122
+ <span class="text-2xl font-bold text-red-600 dark:text-red-400" id="total-plr">R$ 0</span>
123
+ </div>
124
+ <div class="text-sm text-gray-600 dark:text-gray-400">
125
+ <p class="mb-2">📊 A empresa distribuiu <span id="plr-percentage">0%</span> do lucro operacional como PLR.</p>
126
+ <p>💡 Recomenda-se revisar a política de PLR para o próximo período.</p>
127
+ </div>
128
+ </div>
129
+ </div>
130
+ </section>
131
+
132
+ <!-- Expense Breakdown -->
133
+ <section class="bg-white dark:bg-gray-800 rounded-xl shadow-lg p-6 mb-8">
134
+ <h2 class="text-xl font-semibold text-gray-800 dark:text-white mb-4">
135
+ Análise de Despesas por Categoria
136
+ </h2>
137
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4" id="expense-breakdown">
138
+ </div>
139
+ </section>
140
+
141
+ <!-- Projections -->
142
+ <section class="bg-white dark:bg-gray-800 rounded-xl shadow-lg p-6 mb-8">
143
+ <h2 class="text-xl font-semibold text-gray-800 dark:text-white mb-4">
144
+ Projeção de Fluxo de Caixa - Dezembro/25
145
+ </h2>
146
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-6">
147
+ <div class="projection-card">
148
+ <h3 class="text-lg font-medium text-gray-700 dark:text-gray-300 mb-2">
149
+ Cenário Otimista
150
+ </h3>
151
+ <p class="text-3xl font-bold text-green-600" id="optimistic-scenario">R$ 0</p>
152
+ <p class="text-sm text-gray-600 dark:text-gray-400 mt-2">
153
+ +15% receitas, -5% despesas
154
+ </p>
155
+ </div>
156
+ <div class="projection-card">
157
+ <h3 class="text-lg font-medium text-gray-700 dark:text-gray-300 mb-2">
158
+ Cenário Realista
159
+ </h3>
160
+ <p class="text-3xl font-bold text-blue-600" id="realistic-scenario">R$ 0</p>
161
+ <p class="text-sm text-gray-600 dark:text-gray-400 mt-2">
162
+ Média dos últimos 3 meses
163
+ </p>
164
+ </div>
165
+ <div class="projection-card">
166
+ <h3 class="text-lg font-medium text-gray-700 dark:text-gray-300 mb-2">
167
+ Cenário Conservador
168
+ </h3>
169
+ <p class="text-3xl font-bold text-orange-600" id="conservative-scenario">R$ 0</p>
170
+ <p class="text-sm text-gray-600 dark:text-gray-400 mt-2">
171
+ -10% receitas, +5% despesas
172
+ </p>
173
+ </div>
174
+ </div>
175
+ </section>
176
+
177
+ <!-- Alerts and Recommendations -->
178
+ <section class="bg-white dark:bg-gray-800 rounded-xl shadow-lg p-6">
179
+ <h2 class="text-xl font-semibold text-gray-800 dark:text-white mb-4">
180
+ Pontos de Atenção e Recomendações
181
+ </h2>
182
+ <div id="alerts-recommendations" class="space-y-4">
183
+ </div>
184
+ </section>
185
+ </main>
186
+
187
+ <custom-footer></custom-footer>
188
+
189
+ <script src="components/navbar.js"></script>
190
+ <script src="components/footer.js"></script>
191
+ <script src="script.js"></script>
192
+ <script>feather.replace();</script>
193
+ <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
194
+ </body>
195
+ </html>
script.js ADDED
@@ -0,0 +1,339 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // FluxoCash Pro - Financial Analysis Script
2
+
3
+ // Financial data structure
4
+ const financialData = {
5
+ months: ['jan/25', 'fev/25', 'mar/25', 'abr/25', 'mai/25', 'jun/25', 'jul/25', 'ago/25', 'set/25', 'out/25', 'nov/25', 'dez/25'],
6
+ openingBalance: [57765, 52114, 50371, 46703, 42816, 42529, 44457, 36478, 25195, 27204, 27102, 17611],
7
+ totalRevenue: [32757, 36279, 37684, 34902, 34148, 42104, 33888, 44910, 46361, 49334, 51009, 47416],
8
+ revenueBreakdown: {
9
+ traffic: [22815, 23843, 25170, 19145, 23370, 32961, 27074, 34795, 30949, 39539, 37828, 38857],
10
+ webDesign: [7476, 11217, 11324, 14952, 9151, 8596, 5985, 8236, 8135, 7985, 9165, 6165],
11
+ services: [0, 497, 497, 0, 1216, 547, 829, 714, 5490, 1547, 2627, 2394],
12
+ hosting: [0, 250, 250, 0, 0, 0, 0, 0, 0, 0, 222, 0],
13
+ financial: [2466, 473, 0, 805, 412, 0, 0, 0, 1787, 263, 0, 0],
14
+ other: [0, 0, 444, 0, 0, 0, 0, 1166, 0, 0, 1168, 0]
15
+ },
16
+ totalExpenses: [38408, 38022, 41353, 38789, 38435, 46177, 43866, 44193, 50352, 51320, 52617, 50153],
17
+ variableCosts: [5444, 8391, 9961, 9016, 9808, 13338, 10839, 11495, 13648, 13959, 11391, 10939],
18
+ fixedCosts: [10559, 7062, 11989, 10367, 9224, 11385, 11627, 11298, 15675, 14320, 18201, 16247],
19
+ plr: [19396, 19396, 19396, 19396, 19396, 21396, 21396, 21396, 20964, 22964, 22964, 22964],
20
+ operationalProfit: [14289, 20353, 15290, 14714, 14704, 17381, 11422, 20951, 15252, 20792, 20249, 20231],
21
+ netCashFlow: [-5651, -1743, -3668, -3887, -4286, -4073, -9978, 717, -3991, -1985, -1608, -2737],
22
+ closingBalance: [52114, 50371, 46703, 42816, 42529, 44457, 36478, 25195, 27204, 27102, 27611, 14874]
23
+ };
24
+
25
+ // Utility functions
26
+ function formatCurrency(value) {
27
+ return new Intl.NumberFormat('pt-BR', {
28
+ style: 'currency',
29
+ currency: 'BRL'
30
+ }).format(value);
31
+ }
32
+
33
+ function formatPercentage(value) {
34
+ return `${(value * 100).toFixed(1)}%`;
35
+ }
36
+
37
+ function getCurrentMonthIndex() {
38
+ return 10; // November (nov/25)
39
+ }
40
+
41
+ // Calculate KPIs
42
+ function calculateKPIs() {
43
+ const currentMonth = getCurrentMonthIndex();
44
+
45
+ // Total Revenue
46
+ const totalRevenue = financialData.totalRevenue[currentMonth];
47
+ document.getElementById('total-revenue').textContent = formatCurrency(totalRevenue);
48
+
49
+ // Total Expenses
50
+ const totalExpenses = financialData.totalExpenses[currentMonth];
51
+ document.getElementById('total-expenses').textContent = formatCurrency(totalExpenses);
52
+
53
+ // Net Profit
54
+ const netProfit = financialData.operationalProfit[currentMonth] - financialData.plr[currentMonth];
55
+ document.getElementById('net-profit').textContent = formatCurrency(netProfit);
56
+
57
+ // Contribution Margin
58
+ const contributionMargin = (financialData.totalRevenue[currentMonth] - financialData.variableCosts[currentMonth]) / financialData.totalRevenue[currentMonth];
59
+ document.getElementById('contribution-margin').textContent = formatPercentage(contributionMargin);
60
+
61
+ // PLR
62
+ const totalPLR = financialData.plr.reduce((sum, value) => sum + value, 0);
63
+ document.getElementById('total-plr').textContent = formatCurrency(totalPLR);
64
+
65
+ const plrPercentage = financialData.plr[currentMonth] / financialData.operationalProfit[currentMonth];
66
+ document.getElementById('plr-percentage').textContent = formatPercentage(plrPercentage);
67
+ }
68
+
69
+ // Create charts
70
+ function createCashFlowChart() {
71
+ const ctx = document.getElementById('cashFlowChart').getContext('2d');
72
+
73
+ new Chart(ctx, {
74
+ type: 'line',
75
+ data: {
76
+ labels: financialData.months,
77
+ datasets: [{
78
+ label: 'Saldo Final',
79
+ data: financialData.closingBalance,
80
+ borderColor: 'rgb(59, 130, 246)',
81
+ backgroundColor: 'rgba(59, 130, 246, 0.1)',
82
+ tension: 0.4,
83
+ fill: true
84
+ }, {
85
+ label: 'Fluxo de Caixa',
86
+ data: financialData.netCashFlow,
87
+ borderColor: 'rgb(16, 185, 129)',
88
+ backgroundColor: 'rgba(16, 185, 129, 0.1)',
89
+ tension: 0.4
90
+ }]
91
+ },
92
+ options: {
93
+ responsive: true,
94
+ maintainAspectRatio: false,
95
+ plugins: {
96
+ legend: {
97
+ position: 'top',
98
+ },
99
+ title: {
100
+ display: false
101
+ }
102
+ },
103
+ scales: {
104
+ y: {
105
+ beginAtZero: false,
106
+ ticks: {
107
+ callback: function(value) {
108
+ return formatCurrency(value);
109
+ }
110
+ }
111
+ }
112
+ }
113
+ }
114
+ });
115
+ }
116
+
117
+ function createRevenueCompositionChart() {
118
+ const ctx = document.getElementById('revenueCompositionChart').getContext('2d');
119
+ const currentMonth = getCurrentMonthIndex();
120
+
121
+ const data = {
122
+ labels: ['Tráfego', 'Web Design', 'Serviços', 'Hospedagem', 'Financeiras', 'Outras'],
123
+ datasets: [{
124
+ data: [
125
+ financialData.revenueBreakdown.traffic[currentMonth],
126
+ financialData.revenueBreakdown.webDesign[currentMonth],
127
+ financialData.revenueBreakdown.services[currentMonth],
128
+ financialData.revenueBreakdown.hosting[currentMonth],
129
+ financialData.revenueBreakdown.financial[currentMonth],
130
+ financialData.revenueBreakdown.other[currentMonth]
131
+ ],
132
+ backgroundColor: [
133
+ 'rgba(59, 130, 246, 0.8)',
134
+ 'rgba(16, 185, 129, 0.8)',
135
+ 'rgba(245, 158, 11, 0.8)',
136
+ 'rgba(139, 92, 246, 0.8)',
137
+ 'rgba(236, 72, 153, 0.8)',
138
+ 'rgba(107, 114, 128, 0.8)'
139
+ ]
140
+ }]
141
+ };
142
+
143
+ new Chart(ctx, {
144
+ type: 'doughnut',
145
+ data: data,
146
+ options: {
147
+ responsive: true,
148
+ maintainAspectRatio: false,
149
+ plugins: {
150
+ legend: {
151
+ position: 'bottom',
152
+ },
153
+ tooltip: {
154
+ callbacks: {
155
+ label: function(context) {
156
+ const label = context.label || '';
157
+ const value = context.parsed || 0;
158
+ const total = context.dataset.data.reduce((a, b) => a + b, 0);
159
+ const percentage = ((value / total) * 100).toFixed(1);
160
+ return `${label}: ${formatCurrency(value)} (${percentage}%)`;
161
+ }
162
+ }
163
+ }
164
+ }
165
+ }
166
+ });
167
+ }
168
+
169
+ // Populate tables and breakdowns
170
+ function populateRevenueDetails() {
171
+ const currentMonth = getCurrentMonthIndex();
172
+ const tbody = document.getElementById('revenue-details');
173
+ const totalRevenue = financialData.totalRevenue[currentMonth];
174
+
175
+ const revenueItems = [
176
+ { name: 'Receita de Tráfego', value: financialData.revenueBreakdown.traffic[currentMonth] },
177
+ { name: 'Receita de Web Design', value: financialData.revenueBreakdown.webDesign[currentMonth] },
178
+ { name: 'Receita de Serviços', value: financialData.revenueBreakdown.services[currentMonth] },
179
+ { name: 'Receita de Hospedagem', value: financialData.revenueBreakdown.hosting[currentMonth] },
180
+ { name: 'Receitas Financeiras', value: financialData.revenueBreakdown.financial[currentMonth] },
181
+ { name: 'Outras Receitas', value: financialData.revenueBreakdown.other[currentMonth] }
182
+ ];
183
+
184
+ tbody.innerHTML = revenueItems.map(item => `
185
+ <tr class="table-hover">
186
+ <td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900 dark:text-gray-100">
187
+ ${item.name}
188
+ </td>
189
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500 dark:text-gray-400">
190
+ ${formatCurrency(item.value)}
191
+ </td>
192
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500 dark:text-gray-400">
193
+ ${formatPercentage(item.value / totalRevenue)}
194
+ </td>
195
+ </tr>
196
+ `).join('');
197
+ }
198
+
199
+ function populateExpenseBreakdown() {
200
+ const currentMonth = getCurrentMonthIndex();
201
+ const container = document.getElementById('expense-breakdown');
202
+
203
+ const expenseCategories = [
204
+ { name: 'Impostos', value: -4813, icon: 'file-text', color: 'red' },
205
+ { name: 'Custos Variáveis', value: -11391, icon: 'package', color: 'orange' },
206
+ { name: 'Salários e Encargos', value: -11294, icon: 'users', color: 'blue' },
207
+ { name: 'Despesas Administrativas', value: -5827, icon: 'settings', color: 'gray' },
208
+ { name: 'Despesas Comerciais', value: -893, icon: 'shopping-cart', color: 'purple' },
209
+ { name: 'PLR', value: -22964, icon: 'gift', color: 'pink' }
210
+ ];
211
+
212
+ container.innerHTML = expenseCategories.map(category => `
213
+ <div class="flex items-center justify-between p-4 bg-gray-50 dark:bg-gray-700 rounded-lg">
214
+ <div class="flex items-center space-x-3">
215
+ <div class="p-2 bg-${category.color}-100 dark:bg-${category.color}-900 rounded-lg">
216
+ <i data-feather="${category.icon}" class="text-${category.color}-600 w-5 h-5"></i>
217
+ </div>
218
+ <span class="font-medium text-gray-700 dark:text-gray-300">${category.name}</span>
219
+ </div>
220
+ <span class="font-bold text-gray-900 dark:text-gray-100">${formatCurrency(category.value)}</span>
221
+ </div>
222
+ `).join('');
223
+
224
+ feather.replace();
225
+ }
226
+
227
+ function calculateProjections() {
228
+ const currentMonth = getCurrentMonthIndex();
229
+ const lastThreeMonths = financialData.netCashFlow.slice(currentMonth - 2, currentMonth + 1);
230
+ const averageCashFlow = lastThreeMonths.reduce((sum, value) => sum + value, 0) / 3;
231
+
232
+ // Optimistic scenario: +15% revenue, -5% expenses
233
+ const optimistic = averageCashFlow * 1.2;
234
+ document.getElementById('optimistic-scenario').textContent = formatCurrency(optimistic);
235
+
236
+ // Realistic scenario: average of last 3 months
237
+ document.getElementById('realistic-scenario').textContent = formatCurrency(averageCashFlow);
238
+
239
+ // Conservative scenario: -10% revenue, +5% expenses
240
+ const conservative = averageCashFlow * 0.85;
241
+ document.getElementById('conservative-scenario').textContent = formatCurrency(conservative);
242
+ }
243
+
244
+ function generateAlertsAndRecommendations() {
245
+ const currentMonth = getCurrentMonthIndex();
246
+ const container = document.getElementById('alerts-recommendations');
247
+
248
+ const alerts = [];
249
+
250
+ // Check cash flow trend
251
+ const lastThreeMonthsFlow = financialData.netCashFlow.slice(currentMonth - 2, currentMonth + 1);
252
+ const negativeFlowCount = lastThreeMonthsFlow.filter(flow => flow < 0).length;
253
+
254
+ if (negativeFlowCount >= 2) {
255
+ alerts.push({
256
+ type: 'danger',
257
+ icon: 'alert-alert-triangle',
258
+ title: 'Atenção: Fluxo de Caixa Negativo',
259
+ message: 'Nos últimos 3 meses, tivemos fluxo negativo em 2 períodos. Recomenda-se revisar despesas e acelerar recebíveis.'
260
+ });
261
+ }
262
+
263
+ // Check PLR percentage
264
+ const plrPercentage = financialData.plr[currentMonth] / financialData.operationalProfit[currentMonth];
265
+ if (plrPercentage > 0.8) {
266
+ alerts.push({
267
+ type: 'warning',
268
+ icon: 'percent',
269
+ title: 'PLR Elevada',
270
+ message: 'A PLR está consumindo mais de 80% do lucro operacional. Considere ajustar a política de distribuição.'
271
+ });
272
+ }
273
+
274
+ // Check cash balance
275
+ const currentBalance = financialData.closingBalance[currentMonth];
276
+ if (currentBalance < 20000) {
277
+ alerts.push({
278
+ type: 'warning',
279
+ icon: 'dollar-sign',
280
+ title: 'Saldo de Caixa Baixo',
281
+ message: 'O saldo atual está abaixo de R$ 20.000. Mantenha uma reserva de segurança equivalente a 2 meses de despesas.'
282
+ });
283
+ }
284
+
285
+ // Positive alerts
286
+ if (financialData.totalRevenue[currentMonth] > financialData.totalRevenue[currentMonth - 1]) {
287
+ alerts.push({
288
+ type: 'success',
289
+ icon: 'trending-up',
290
+ title: 'Crescimento de Receita',
291
+ message: 'As receitas cresceram em relação ao mês anterior. Continue focando nas fontes principais de receita.'
292
+ });
293
+ }
294
+
295
+ container.innerHTML = alerts.map(alert => `
296
+ <div class="alert-card border-${alert.type === 'success' ? 'green' : alert.type === 'warning' ? 'yellow' : 'red'}-500">
297
+ <div class="flex items-start space-x-3">
298
+ <i data-feather="${alert.icon}" class="text-${alert.type === 'success' ? 'green' : alert.type === 'warning' ? 'yellow' : 'red'}-500 w-5 h-5 mt-0.5"></i>
299
+ <div>
300
+ <h3 class="font-semibold text-gray-800 dark:text-gray-200">${alert.title}</h3>
301
+ <p class="text-sm text-gray-600 dark:text-gray-400 mt-1">${alert.message}</p>
302
+ </div>
303
+ </div>
304
+ </div>
305
+ `).join('');
306
+
307
+ feather.replace();
308
+ }
309
+
310
+ // Initialize dashboard
311
+ function initializeDashboard() {
312
+ calculateKPIs();
313
+ createCashFlowChart();
314
+ createRevenueCompositionChart();
315
+ populateRevenueDetails();
316
+ populateExpenseBreakdown();
317
+ calculateProjections();
318
+ generateAlertsAndRecommendations();
319
+ }
320
+
321
+ // Dark mode toggle
322
+ function setupDarkMode() {
323
+ const darkModeToggle = document.createElement('button');
324
+ darkModeToggle.innerHTML = '<i data-feather="moon"></i>';
325
+ darkModeToggle.className = 'fixed top-4 right-4 p-2 bg-gray-200 dark:bg-gray-700 rounded-lg shadow-lg';
326
+ darkModeToggle.addEventListener('click', () => {
327
+ document.documentElement.classList.toggle('dark');
328
+ darkModeToggle.innerHTML = document.documentElement.classList.contains('dark') ?
329
+ '<i data-feather="sun"></i>' : '<i data-feather="moon"></i>';
330
+ feather.replace();
331
+ });
332
+ document.body.appendChild(darkModeToggle);
333
+ }
334
+
335
+ // Document ready
336
+ document.addEventListener('DOMContentLoaded', () => {
337
+ initializeDashboard();
338
+ setupDarkMode();
339
+ });
style.css CHANGED
@@ -1,28 +1,89 @@
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 FluxoCash Pro */
2
+
3
+ .kpi-card {
4
+ @apply rounded-xl shadow-lg p-6 text-white transition-transform duration-300 hover:scale-105;
5
+ }
6
+
7
+ .projection-card {
8
+ @apply p-4 border-2 border-gray-200 dark:border-gray-700 rounded-lg bg-gray-50 dark:bg-gray-700;
9
+ }
10
+
11
+ .alert-card {
12
+ @apply p-4 rounded-lg border-l-4;
13
+ }
14
+
15
+ .alert-success {
16
+ @apply bg-green-50 dark:bg-green-900/20 border-green-500;
17
+ }
18
+
19
+ .alert-warning {
20
+ @apply bg-yellow-50 dark:bg-yellow-900/20 border-yellow-500;
21
+ }
22
+
23
+ .alert-danger {
24
+ @apply bg-red-50 dark:bg-red-900/20 border-red-500;
25
+ }
26
+
27
+ .chart-container {
28
+ position: relative;
29
+ height: 300px;
30
+ width: 100%;
31
+ }
32
+
33
+ .table-hover:hover {
34
+ @apply bg-gray-50 dark:bg-gray-700;
35
+ }
36
+
37
+ /* Dark mode transitions */
38
+ * {
39
+ @apply transition-colors duration-200;
40
+ }
41
+
42
+ /* Custom scrollbar */
43
+ ::-webkit-scrollbar {
44
+ width: 8px;
45
+ height: 8px;
46
+ }
47
+
48
+ ::-webkit-scrollbar-track {
49
+ @apply bg-gray-100 dark:bg-gray-800;
50
  }
51
 
52
+ ::-webkit-scrollbar-thumb {
53
+ @apply bg-gray-400 dark:bg-gray-600 rounded-full;
 
54
  }
55
 
56
+ ::-webkit-scrollbar-thumb:hover {
57
+ @apply bg-gray-500 dark:bg-gray-500;
 
 
 
58
  }
59
 
60
+ /* Animations */
61
+ @keyframes fadeIn {
62
+ from {
63
+ opacity: 0;
64
+ transform: translateY(20px);
65
+ }
66
+ to {
67
+ opacity: 1;
68
+ transform: translateY(0);
69
+ }
70
  }
71
 
72
+ .fade-in {
73
+ animation: fadeIn 0.6s ease-out;
74
  }
75
+
76
+ /* Loading states */
77
+ .loading {
78
+ @apply animate-pulse bg-gray-200 dark:bg-gray-700;
79
+ }
80
+
81
+ /* Responsive tables */
82
+ @media (max-width: 640px) {
83
+ .responsive-table {
84
+ display: block;
85
+ width: 100%;
86
+ overflow-x: auto;
87
+ -webkit-overflow-scrolling: touch;
88
+ }
89
+ }