Plataforma completa de gestão financeira pessoal construída com Next.js 16, React 19.2 e Appwrite.
- Next.js 16 + React 19.2 + TypeScript 5.9
- Appwrite (BaaS + Serverless Functions)
- Tailwind CSS + Turbopack
- 🔐 Autenticação segura (JWT + httpOnly cookies)
- 💰 Gestão de contas bancárias e saldos
- 💳 Controle de cartões de crédito e faturas
- 📊 Transações e categorização
- 🔄 Transações recorrentes automáticas
- 📈 Projeções de fluxo de caixa
- 🧾 Gestão de notas fiscais (NFe)
- 👥 Compartilhamento de contas (joint accounts)
- ⚡ Atualizações em tempo real (Realtime)
- 📱 Design responsivo
- Node.js >= 22
- pnpm >= 9
- Conta Appwrite
# 1. Instalar dependências
pnpm install
# 2. Configurar variáveis de ambiente
cp .env.example .env.local
# Edite .env.local com suas credenciais Appwrite
# 3. Executar migrações
pnpm migrate:up
# 4. Iniciar servidor
pnpm devAcesse: http://localhost:1101
APPWRITE_ENDPOINT=https://cloud.appwrite.io/v1
APPWRITE_PROJECT_ID=seu-project-id
APPWRITE_API_KEY=sua-api-key
APPWRITE_DATABASE_ID=horizon_ai_db
JWT_SECRET=seu-secret-gerado
JWT_EXPIRATION=7dGerar JWT Secret:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"# Desenvolvimento
pnpm dev # Inicia dev server (Turbopack)
pnpm build # Build para produção
pnpm typecheck # Verifica tipos TypeScript
pnpm lint # Executa ESLint
# Database
pnpm migrate:up # Executa migrações pendentes
pnpm migrate:down # Reverte última migração
pnpm migrate:status # Status das migrações
# Testes
pnpm test # Executa todos os testesNext.js (UI + CRUD)
↓
Appwrite Database
↓
Appwrite Functions (Business Logic)
↓
Realtime Updates → UI Auto-Update
Princípios:
- Next.js: Apenas CRUD e UI
- Appwrite Functions: Toda lógica de negócio
- Realtime: Atualizações automáticas
horizon-ai/
├── app/ # Next.js App Router
│ ├── (auth)/ # Rotas públicas
│ ├── (app)/ # Rotas protegidas
│ └── api/ # API Routes
├── components/ # Componentes React
├── lib/ # Lógica de negócio
│ ├── services/ # Serviços
│ ├── auth/ # Autenticação
│ └── database/ # Migrações
├── hooks/ # Custom hooks
├── actions/ # Server Actions
└── functions/ # Appwrite Functions
- Triggers: Eventos de transação + Schedule diário (20:00)
- Função: Sincroniza saldos automaticamente
- Trigger: Schedule mensal (1º dia às 00:00)
- Função: Cria transações recorrentes
- Trigger: Schedule diário (00:00)
- Função: Expira convites antigos
Deploy: cd functions/[nome] && ./deploy.sh
- Guia Consolidado - Documentação completa
- Arquitetura Serverless - Detalhes da arquitetura
- Guia de Desenvolvimento - Como adicionar features
- Appwrite Functions - Guia completo de functions
- Transações:
docs/TRANSACTIONS-README.md - Cartões de Crédito:
docs/CREDIT_CARD_BILLING_LOGIC.md - Fluxo de Caixa:
docs/CASH_FLOW_PROJECTION.md - Compartilhamento:
docs/JOINT_ACCOUNTS_SHARING.md
- Conectar repositório no vercel.com
- Configurar variáveis de ambiente
- Deploy
APPWRITE_ENDPOINT
APPWRITE_PROJECT_ID
APPWRITE_API_KEY
APPWRITE_DATABASE_ID
JWT_SECRET
JWT_EXPIRATION
NODE_ENV=production
CORS_ORIGIN=https://seu-dominio.com- Variáveis de ambiente configuradas
- Migrações executadas
- Appwrite Functions deployadas
- Triggers configurados
- Testes executados
// Server Actions
'use server';
export async function createAction(formData: FormData) {}
// use Hook
const data = use(dataPromise);
// useOptimistic
const [optimistic, update] = useOptimistic(data, updater);
// useFormStatus
const { pending } = useFormStatus();
// useActionState
const [state, action, isPending] = useActionState(myAction, null);- Documentação:
docs/CONSOLIDATED-GUIDE.md - Issues: GitHub
- Logs: Appwrite Console > Functions > Executions
Versões: Next.js 16 • React 19.2 • Node.js 22 • TypeScript 5.9
