docs: expandir documentação do README e adicionar importação em massa de lançamentos

- Expande README.md com estatísticas detalhadas do projeto (200 componentes, 15+ tabelas, 20+ widgets)
  - Adiciona descrição completa da stack técnica e versões
  - Documenta estrutura de diretórios de forma abrangente
  - Inclui diagramas de schema de banco de dados e fluxos de dados
  - Adiciona seção de destaques e funcionalidades recentes
  - Implementa diálogo de importação em massa de lançamentos (bulk-import-dialog.tsx)
  - Adiciona fontes AISans (Regular e Semibold) ao projeto
  - Remove classe bg-muted das páginas de autenticação
  - Adiciona /docs ao .gitignore
  - Limpa código não utilizado em componentes de lançamentos e páginas do dashboard
  - Atualiza dependências no package.json
This commit is contained in:
Felipe Coutinho
2026-01-05 13:01:18 +00:00
parent 4237062bde
commit 901e423959
24 changed files with 1342 additions and 199 deletions

134
pnpm-lock.yaml generated
View File

@@ -10,16 +10,16 @@ importers:
dependencies:
'@ai-sdk/anthropic':
specifier: ^3.0.2
version: 3.0.2(zod@4.3.4)
version: 3.0.2(zod@4.3.5)
'@ai-sdk/google':
specifier: ^3.0.2
version: 3.0.2(zod@4.3.4)
version: 3.0.2(zod@4.3.5)
'@ai-sdk/openai':
specifier: ^3.0.2
version: 3.0.2(zod@4.3.4)
version: 3.0.2(zod@4.3.5)
'@openrouter/ai-sdk-provider':
specifier: ^1.5.4
version: 1.5.4(ai@6.0.6(zod@4.3.4))(zod@4.3.4)
version: 1.5.4(ai@6.0.7(zod@4.3.5))(zod@4.3.5)
'@radix-ui/react-accordion':
specifier: ^1.2.12
version: 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
@@ -96,8 +96,8 @@ importers:
specifier: ^1.3.1
version: 1.3.1(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)
ai:
specifier: ^6.0.6
version: 6.0.6(zod@4.3.4)
specifier: ^6.0.7
version: 6.0.7(zod@4.3.5)
babel-plugin-react-compiler:
specifier: ^1.0.0
version: 1.0.0
@@ -123,11 +123,11 @@ importers:
specifier: ^4.0.0
version: 4.0.0
jspdf-autotable:
specifier: ^5.0.2
version: 5.0.2(jspdf@4.0.0)
specifier: ^5.0.7
version: 5.0.7(jspdf@4.0.0)
motion:
specifier: ^12.23.26
version: 12.23.26(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
specifier: ^12.23.27
version: 12.23.27(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
next:
specifier: 16.1.1
version: 16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
@@ -165,8 +165,8 @@ importers:
specifier: ^0.18.5
version: 0.18.5
zod:
specifier: 4.3.4
version: 4.3.4
specifier: 4.3.5
version: 4.3.5
devDependencies:
'@tailwindcss/postcss':
specifier: 4.1.18
@@ -222,8 +222,8 @@ packages:
peerDependencies:
zod: ^3.25.76 || ^4.1.8
'@ai-sdk/gateway@3.0.5':
resolution: {integrity: sha512-AtxA1wcoKTHr9uFoC5KZEXqJP4SMW4j3VbcliUECUYssbWbePJ9+b3AaCny1lxf1xhDK9EIyAgBOKhXoQSr9nA==}
'@ai-sdk/gateway@3.0.6':
resolution: {integrity: sha512-oEpwjM0PIaSUErtZI8Ag+gQ+ZelysRWA96N5ahvOc5e9d7QkKJWF0POWx0nI1qBxvmUSw7ca0sLTVw+J5yn7Tg==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.25.76 || ^4.1.8
@@ -2148,8 +2148,8 @@ packages:
resolution: {integrity: sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==}
engines: {node: '>=0.8'}
ai@6.0.6:
resolution: {integrity: sha512-LM0eAMWVn3RTj+0X5O1m/8g+7QiTeWG5aN5FsDbdmCkAQHVg93XxLbljFOLzi0NMjuJgf7fKLKmWoPsrdMyqfw==}
ai@6.0.7:
resolution: {integrity: sha512-kLzSXHdW6cAcb2mFSIfkbfzxYqqjrUnyhrB1sg855qlC+6XkLI8hmwFE8f/4SnjmtcTDOnkIaVjWoO5i5Ir0bw==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.25.76 || ^4.1.8
@@ -2952,8 +2952,8 @@ packages:
resolution: {integrity: sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==}
engines: {node: '>=0.8'}
framer-motion@12.23.26:
resolution: {integrity: sha512-cPcIhgR42xBn1Uj+PzOyheMtZ73H927+uWPDVhUMqxy8UHt6Okavb6xIz9J/phFUHUj0OncR6UvMfJTXoc/LKA==}
framer-motion@12.23.27:
resolution: {integrity: sha512-EAcX8FS8jzZ4tSKpj+1GhwbVY+r1gfamPFwXZAsioPqu/ffRwU2otkKg6GEDCR41FVJv3RoBN7Aqep6drL9Itg==}
peerDependencies:
'@emotion/is-prop-valid': '*'
react: ^18.0.0 || ^19.0.0
@@ -3295,10 +3295,10 @@ packages:
engines: {node: '>=6'}
hasBin: true
jspdf-autotable@5.0.2:
resolution: {integrity: sha512-YNKeB7qmx3pxOLcNeoqAv3qTS7KuvVwkFe5AduCawpop3NOkBUtqDToxNc225MlNecxT4kP2Zy3z/y/yvGdXUQ==}
jspdf-autotable@5.0.7:
resolution: {integrity: sha512-2wr7H6liNDBYNwt25hMQwXkEWFOEopgKIvR1Eukuw6Zmprm/ZcnmLTQEjW7Xx3FCbD3v7pflLcnMAv/h1jFDQw==}
peerDependencies:
jspdf: ^2 || ^3
jspdf: ^2 || ^3 || ^4
jspdf@4.0.0:
resolution: {integrity: sha512-w12U97Z6edKd2tXDn3LzTLg7C7QLJlx0BPfM3ecjK2BckUl9/81vZ+r5gK4/3KQdhAcEZhENUxRhtgYBj75MqQ==}
@@ -3450,8 +3450,8 @@ packages:
motion-utils@12.23.6:
resolution: {integrity: sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==}
motion@12.23.26:
resolution: {integrity: sha512-Ll8XhVxY8LXMVYTCfme27WH2GjBrCIzY4+ndr5QKxsK+YwCtOi2B/oBi5jcIbik5doXuWT/4KKDOVAZJkeY5VQ==}
motion@12.23.27:
resolution: {integrity: sha512-EDb0hAE6jNX8BHpmQK1GBf9Eizx9bg/Tz2KEAJBOGEnIJp8W77QweRpVb05U8R0L0/LXndHmS1Xv3fwXJh/kcQ==}
peerDependencies:
'@emotion/is-prop-valid': '*'
react: ^18.0.0 || ^19.0.0
@@ -4240,42 +4240,42 @@ packages:
peerDependencies:
zod: ^3.25.0 || ^4.0.0
zod@4.3.4:
resolution: {integrity: sha512-Zw/uYiiyF6pUT1qmKbZziChgNPRu+ZRneAsMUDU6IwmXdWt5JwcUfy2bvLOCUtz5UniaN/Zx5aFttZYbYc7O/A==}
zod@4.3.5:
resolution: {integrity: sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==}
snapshots:
'@ai-sdk/anthropic@3.0.2(zod@4.3.4)':
'@ai-sdk/anthropic@3.0.2(zod@4.3.5)':
dependencies:
'@ai-sdk/provider': 3.0.1
'@ai-sdk/provider-utils': 4.0.2(zod@4.3.4)
zod: 4.3.4
'@ai-sdk/provider-utils': 4.0.2(zod@4.3.5)
zod: 4.3.5
'@ai-sdk/gateway@3.0.5(zod@4.3.4)':
'@ai-sdk/gateway@3.0.6(zod@4.3.5)':
dependencies:
'@ai-sdk/provider': 3.0.1
'@ai-sdk/provider-utils': 4.0.2(zod@4.3.4)
'@ai-sdk/provider-utils': 4.0.2(zod@4.3.5)
'@vercel/oidc': 3.0.5
zod: 4.3.4
zod: 4.3.5
'@ai-sdk/google@3.0.2(zod@4.3.4)':
'@ai-sdk/google@3.0.2(zod@4.3.5)':
dependencies:
'@ai-sdk/provider': 3.0.1
'@ai-sdk/provider-utils': 4.0.2(zod@4.3.4)
zod: 4.3.4
'@ai-sdk/provider-utils': 4.0.2(zod@4.3.5)
zod: 4.3.5
'@ai-sdk/openai@3.0.2(zod@4.3.4)':
'@ai-sdk/openai@3.0.2(zod@4.3.5)':
dependencies:
'@ai-sdk/provider': 3.0.1
'@ai-sdk/provider-utils': 4.0.2(zod@4.3.4)
zod: 4.3.4
'@ai-sdk/provider-utils': 4.0.2(zod@4.3.5)
zod: 4.3.5
'@ai-sdk/provider-utils@4.0.2(zod@4.3.4)':
'@ai-sdk/provider-utils@4.0.2(zod@4.3.5)':
dependencies:
'@ai-sdk/provider': 3.0.1
'@standard-schema/spec': 1.1.0
eventsource-parser: 3.0.6
zod: 4.3.4
zod: 4.3.5
'@ai-sdk/provider@3.0.1':
dependencies:
@@ -4385,20 +4385,20 @@ snapshots:
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.28.5
'@better-auth/core@1.4.10(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.7(zod@4.3.4))(jose@6.1.3)(kysely@0.28.9)(nanostores@1.1.0)':
'@better-auth/core@1.4.10(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.7(zod@4.3.5))(jose@6.1.3)(kysely@0.28.9)(nanostores@1.1.0)':
dependencies:
'@better-auth/utils': 0.3.0
'@better-fetch/fetch': 1.1.21
'@standard-schema/spec': 1.1.0
better-call: 1.1.7(zod@4.3.4)
better-call: 1.1.7(zod@4.3.5)
jose: 6.1.3
kysely: 0.28.9
nanostores: 1.1.0
zod: 4.3.4
zod: 4.3.5
'@better-auth/telemetry@1.4.10(@better-auth/core@1.4.10(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.7(zod@4.3.4))(jose@6.1.3)(kysely@0.28.9)(nanostores@1.1.0))':
'@better-auth/telemetry@1.4.10(@better-auth/core@1.4.10(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.7(zod@4.3.5))(jose@6.1.3)(kysely@0.28.9)(nanostores@1.1.0))':
dependencies:
'@better-auth/core': 1.4.10(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.7(zod@4.3.4))(jose@6.1.3)(kysely@0.28.9)(nanostores@1.1.0)
'@better-auth/core': 1.4.10(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.7(zod@4.3.5))(jose@6.1.3)(kysely@0.28.9)(nanostores@1.1.0)
'@better-auth/utils': 0.3.0
'@better-fetch/fetch': 1.1.21
@@ -4903,15 +4903,15 @@ snapshots:
'@nolyfill/is-core-module@1.0.39': {}
'@openrouter/ai-sdk-provider@1.5.4(ai@6.0.6(zod@4.3.4))(zod@4.3.4)':
'@openrouter/ai-sdk-provider@1.5.4(ai@6.0.7(zod@4.3.5))(zod@4.3.5)':
dependencies:
'@openrouter/sdk': 0.1.27
ai: 6.0.6(zod@4.3.4)
zod: 4.3.4
ai: 6.0.7(zod@4.3.5)
zod: 4.3.5
'@openrouter/sdk@0.1.27':
dependencies:
zod: 4.3.4
zod: 4.3.5
'@opentelemetry/api@1.9.0': {}
@@ -5886,13 +5886,13 @@ snapshots:
adler-32@1.3.1: {}
ai@6.0.6(zod@4.3.4):
ai@6.0.7(zod@4.3.5):
dependencies:
'@ai-sdk/gateway': 3.0.5(zod@4.3.4)
'@ai-sdk/gateway': 3.0.6(zod@4.3.5)
'@ai-sdk/provider': 3.0.1
'@ai-sdk/provider-utils': 4.0.2(zod@4.3.4)
'@ai-sdk/provider-utils': 4.0.2(zod@4.3.5)
'@opentelemetry/api': 1.9.0
zod: 4.3.4
zod: 4.3.5
ajv@6.12.6:
dependencies:
@@ -6017,18 +6017,18 @@ snapshots:
better-auth@1.4.10(drizzle-kit@0.31.8)(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/pg@8.16.0)(kysely@0.28.9)(pg@8.16.3))(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(pg@8.16.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies:
'@better-auth/core': 1.4.10(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.7(zod@4.3.4))(jose@6.1.3)(kysely@0.28.9)(nanostores@1.1.0)
'@better-auth/telemetry': 1.4.10(@better-auth/core@1.4.10(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.7(zod@4.3.4))(jose@6.1.3)(kysely@0.28.9)(nanostores@1.1.0))
'@better-auth/core': 1.4.10(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.7(zod@4.3.5))(jose@6.1.3)(kysely@0.28.9)(nanostores@1.1.0)
'@better-auth/telemetry': 1.4.10(@better-auth/core@1.4.10(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.7(zod@4.3.5))(jose@6.1.3)(kysely@0.28.9)(nanostores@1.1.0))
'@better-auth/utils': 0.3.0
'@better-fetch/fetch': 1.1.21
'@noble/ciphers': 2.1.1
'@noble/hashes': 2.0.1
better-call: 1.1.7(zod@4.3.4)
better-call: 1.1.7(zod@4.3.5)
defu: 6.1.4
jose: 6.1.3
kysely: 0.28.9
nanostores: 1.1.0
zod: 4.3.4
zod: 4.3.5
optionalDependencies:
drizzle-kit: 0.31.8
drizzle-orm: 0.45.1(@opentelemetry/api@1.9.0)(@types/pg@8.16.0)(kysely@0.28.9)(pg@8.16.3)
@@ -6037,14 +6037,14 @@ snapshots:
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
better-call@1.1.7(zod@4.3.4):
better-call@1.1.7(zod@4.3.5):
dependencies:
'@better-auth/utils': 0.3.0
'@better-fetch/fetch': 1.1.21
rou3: 0.7.12
set-cookie-parser: 2.7.2
optionalDependencies:
zod: 4.3.4
zod: 4.3.5
brace-expansion@1.1.12:
dependencies:
@@ -6661,8 +6661,8 @@ snapshots:
'@babel/parser': 7.28.5
eslint: 9.39.2(jiti@2.6.1)
hermes-parser: 0.25.1
zod: 4.3.4
zod-validation-error: 4.0.2(zod@4.3.4)
zod: 4.3.5
zod-validation-error: 4.0.2(zod@4.3.5)
transitivePeerDependencies:
- supports-color
@@ -6833,7 +6833,7 @@ snapshots:
frac@1.1.2: {}
framer-motion@12.23.26(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
framer-motion@12.23.27(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies:
motion-dom: 12.23.23
motion-utils: 12.23.6
@@ -7158,7 +7158,7 @@ snapshots:
json5@2.2.3: {}
jspdf-autotable@5.0.2(jspdf@4.0.0):
jspdf-autotable@5.0.7(jspdf@4.0.0):
dependencies:
jspdf: 4.0.0
@@ -7297,9 +7297,9 @@ snapshots:
motion-utils@12.23.6: {}
motion@12.23.26(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
motion@12.23.27(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies:
framer-motion: 12.23.26(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
framer-motion: 12.23.27(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
tslib: 2.8.1
optionalDependencies:
react: 19.2.3
@@ -8211,8 +8211,8 @@ snapshots:
yocto-queue@0.1.0: {}
zod-validation-error@4.0.2(zod@4.3.4):
zod-validation-error@4.0.2(zod@4.3.5):
dependencies:
zod: 4.3.4
zod: 4.3.5
zod@4.3.4: {}
zod@4.3.5: {}