Skip to content

GGhiaroni/solidify

Repository files navigation

⚡ Solidify | O seu ecossistema de produtividade & desempenho

Next.js React Tailwind Prisma Supabase

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


Visão de Engenharia & Decisões de Arquitetura

Cada decisão foi tomada visando performance, tipagem estrita e escalabilidade.

Infraestrutura de Dados: Supabase & Prisma

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_URL para utilizar o Transaction Pooler na porta 6543. 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.

Autenticação: Clerk

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.

Heatmap estilo GitHub

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.

Resiliência em Segundo Plano: O Sistema Pomodoro

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.

Inteligência Artificial: Gemini IA Pro

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.


Stack Tecnológica & Bibliotecas

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.

Interface do Projeto

Dashboard & Overview

Jornadas Ativas

Pomodoro Timer

Study Tracker & Heatmap

Cadernos & Anotações

Lofi Player

Mini Pomodoro Ativo durante navegação(Context)


Guia de Instalação e Execução

1. Pré-requisitos

  • Node.js 20+
  • Instância de banco de dados no Supabase.
  • Chaves de API do Clerk, EdgeStore e Google Gemini.

2. Configuração das Variáveis de Ambiente

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

desenvolvido por Gabriel Tiziano.

About

Plataforma web avançada de gestão de conhecimento e produtividade, projetada para ser o "segundo cérebro" do usuário. Construída com TypeScript, Next.js, React e Prisma.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors