Aplicação pessoal integrada para centralizar recursos financeiros, acadêmicos, produtividade e saúde em um único ambiente seguro.
| Camada | Tecnologia |
|---|---|
| Front-end | Next.js |
| Backend Core | Neon (PostgreSQL) |
| Autenticação | Clerk |
A aplicação utiliza uma arquitetura híbrida moderna, separando responsabilidades entre frontend, backend seguro e banco de dados.
Next.js (Frontend)
↓
NodeJs (Backend seguro / integrações)
↓
Neon (PostgreSQL Serverless)
A aplicação foi projetada com foco em segurança desde a base:
- Autenticação obrigatória (Clerk)
- Autenticação Multifator (MFA)
- Tokens nunca expostos no frontend
- Criptografia em trânsito (HTTPS/TLS)
- Criptografia em repouso (Neon)
- Controle de acesso por usuário (RLS no PostgreSQL)
- Backend intermediário (NestJS) para proteção de APIs externas
- Logs de auditoria
Funcionalidades
- Integração com Open Finance
- Dashboard com gráficos e relatórios
- Contas e investimentos
Arquitetura
- NestJS faz integração com APIs externas (Belvo / Pluggy)
- Tokens armazenados de forma criptografada no Neon
Funcionalidades
- Fichas personalizadas
- Histórico de treinos
- Acompanhamento de progresso
Funcionalidades
- Integração com Canvas
- Matérias, atividades e prazos
- Notificações
Arquitetura
- OAuth2 gerenciado via NestJS
- Sincronização periódica via jobs
Funcionalidades
- Kanban (To-do, Doing, Done)
- Gestão de tarefas
- Prazos e status
Funcionalidades
- Bloco de notas
- Tags e categorias
- Busca rápida
- Interface do usuário
- Consumo de APIs
- Integração com Clerk
- Integração com APIs externas
- Proteção de tokens sensíveis
- Validação de dados
- Regras de negócio
- Logs e auditoria
- Banco PostgreSQL Serverless
- Row Level Security (RLS) via policies
- Conexão via
postgres.js(postgres) - Queries e persistência
- Usuário autentica via Clerk
- Frontend obtém token JWT
- Requisições seguem para NestJS / API Routes
- Backend valida e processa dados
- Backend se comunica com Neon (PostgreSQL)
- Integrações externas são feitas apenas via NestJS
- Isolamento total por usuário
- Implementado com RLS no PostgreSQL
- Validação de sessão no backend (Clerk
userIdmapeado parausers.id)
- Registro de login
- Alterações críticas
- Acesso a integrações externas
/frontend (Next.js)
/backend (NestJS)
/app
/financeiro
/treinos
/faculdade
/projetos
/ideias
/components
/lib
/services
/hooks
git clone <repo>
cd projectnpm installCopie .env.example para .env e preencha:
# Database (Neon PostgreSQL)
DATABASE_URL=postgresql://user:password@ep-xxx-region.neon.tech/dbname?sslmode=require
# Clerk Authentication
CLERK_SECRET_KEY=
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
CLERK_WEBHOOK_SECRET=
# External Integrations
OPEN_FINANCE_API_KEY=
CANVAS_CLIENT_ID=
CANVAS_CLIENT_SECRET=# As migrações estão em supabase/migrations/
# Execute no console SQL do Neon ou via psql
psql "$DATABASE_URL" -f supabase/migrations/20250612193000_create_ideas_tables.sql
psql "$DATABASE_URL" -f supabase/migrations/20250612200000_update_schema_for_ideas_and_future.sql
psql "$DATABASE_URL" -f supabase/migrations/20250613000000_create_complete_schema.sqlnpm run devAs migrações SQL estão em supabase/migrations/ (compatíveis com PostgreSQL/Neon):
20250612193000_create_ideas_tables.sql— users, tags, ideas, idea_tags20250612200000_update_schema_for_ideas_and_future.sql— updates e índices20250613000000_create_complete_schema.sql— accounts, categories, transactions, projects, tasks, courses, course_modules, notes
CREATE POLICY "Users can only access their own data"
ON table_name
FOR ALL
USING (user_id = (SELECT id FROM public.users WHERE clerk_id = current_setting('app.current_clerk_id')));Nota: Com Neon + Clerk, o RLS usa uma variável de sessão (
app.current_clerk_id) definida no momento da query, em vez deauth.jwt()do Supabase.
- user_id
- created_at
- due_date
A aplicação inclui uma estratégia inicial de testes para garantir confiabilidade e segurança.
- Testes unitários (NestJS)
- Testes de integração (APIs e banco)
- Testes de autenticação (Clerk)
- Vitest (testes unitários e integração)
- Supertest (testes de API - NestJS)
/backend
/src
/modules
/test
/unit
/integration
it("should return user data", async () => {
const result = await service.getUser(userId);
expect(result).toBeDefined();
});request(app.getHttpServer())
.get("/finance/accounts")
.set("Authorization", `Bearer ${token}`)
.expect(200);- App mobile (React Native)
- Integração com calendário
- IA para insights
- Dashboard unificado
- Microserviços futuros (NestJS)
This is a Next.js project bootstrapped with create-next-app.
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun devOpen http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.
This project uses next/font to automatically optimize and load Geist, a new font family from Vercel.
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.