O Solidify é uma plataforma web avançada de gestão de conhecimento e produtividade, projetada para ser o "segundo cérebro" do usuário moderno. O projeto foca em três pilares principais: organização hierárquica de informações, automação inteligente via LLMs e um sistema de foco resiliente a ambientes de navegadores restritivos.
deploy do projeto na Vercel: https://solidify-vxpu.vercel.app
Cada decisão foi tomada visando performance, tipagem estrita e escalabilidade.
A persistência de dados foi um dos maiores desafios técnicos. Optei pelo Supabase (PostgreSQL) devido à complexidade relacional do sistema de notas recursivas.
- Connection Pooling (PgBouncer): Em ambientes serverless (Vercel), as conexões podem se esgotar rapidamente. Configurei a
DATABASE_URLpara utilizar o Transaction Pooler na porta6543. Isso garante que a aplicação suporte múltiplas requisições simultâneas sem derrubar a instância do banco de dados. - Prisma ORM: Escolhido para garantir Type-Safety de ponta a ponta. Toda a estrutura do banco é sincronizada com o TypeScript, garantindo que erros de schema sejam detectados em tempo de compilação.
Implementei o Clerk para gerenciar a identidade de forma robusta. Ele oferece proteção de rotas via Middleware e integração nativa com o Next.js, permitindo um fluxo de autenticação seguro e sem a necessidade de manter um backend dedicado para tokens e sessões.
Adicionei ao projeto um Heatmap estilo GitHub, em que o usuário consegue ter insights rápidos e visuais do seu desempenho no último ano, mês, semana e dias. Tudo aqui foi pensando para motivar ainda mais quem está atrás de "solidificar" os seus objetivos.
Navegadores modernos aplicam throttling em abas inativas, o que costuma "congelar" cronômetros baseados em setInterval.
- Solução Técnica: Implementei uma lógica de Timestamp Synchronization. O cronômetro não conta segundos de forma isolada; ele calcula o momento exato do término (
expectedEndTime). Caso o usuário mude de aba e o navegador pause o JavaScript, ao retornar, o sistema recalcula o tempo restante baseado no relógio do sistema, mantendo a precisão atômica.
Utilizei a API do Google Generative AI para transformar conteúdo estático em planos de ação. O sistema analisa notas e gera "Jornadas de Estudo" (Roadmaps) estruturadas, integrando inteligência artificial diretamente no fluxo de trabalho do usuário.
| Tecnologia | Finalidade | Justificativa |
|---|---|---|
| Next.js 16.1 | Framework | Uso intensivo de Server Actions e otimização via Turbopack. |
| React 19 | Library UI | Implementação com o novo React Compiler para memoização automática. |
| BlockNote | Editor | Editor baseado em blocos (JSON) que permite manipulação estruturada dos dados das notas. |
| EdgeStore | File Storage | Gerenciamento de imagens (capas/ícones) otimizado para latência ultra-baixa. |
| Shadcn/UI & Radix | UI Primitives | Componentes acessíveis (WAI-ARIA) e customizáveis via Tailwind. |
| Framer Motion | Animações | Micro-interações táteis que melhoram a percepção de feedback do usuário. |
| Zod | Validação | Garantia de integridade de dados nas APIs e formulários. |
| Activity Calendar | Visualização | Heatmap (estilo GitHub) para visualização clara da constância do usuário. |
| Date-fns | Utilitários | Manipulação de datas e fusos horários de forma leve e imutável. |
|
Dashboard & Overview
|
Jornadas Ativas
|
|
Pomodoro Timer
|
Study Tracker & Heatmap |
|
Cadernos & Anotações
|
Lofi Player
|
|
Mini Pomodoro Ativo durante navegação(Context)
|
- Node.js 20+
- Instância de banco de dados no Supabase.
- Chaves de API do Clerk, EdgeStore e Google Gemini.
Crie um arquivo .env na raiz:
# Banco de Dados (Use a porta 6543 para Transaction Pooler)
DATABASE_URL="postgresql://postgres.[ID]:[SENHA]@[aws-0-sa-east-1.pooler.supabase.com:6543/postgres?pgbouncer=true&connection_limit=1](https://aws-0-sa-east-1.pooler.supabase.com:6543/postgres?pgbouncer=true&connection_limit=1)"
# Clerk Auth
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=...
CLERK_SECRET_KEY=...
# EdgeStore
EDGE_STORE_ACCESS_KEY=...
EDGE_STORE_SECRET_KEY=...
# Gemini IA
GEMINI_API_KEY=...
``
# Instalar dependências
npm install
# Gerar o cliente Prisma e sincronizar schema
npx prisma generate
npx prisma db push
# Iniciar o servidor de desenvolvimento
npm run dev




