Seu sistema de estudos em Direito.
OABase reúne planejamento de estudo, prática com provas, revisão e fontes jurídicas oficiais. A parte aberta permite pesquisar legislação, súmulas, glossário, exames e estatísticas; as ferramentas de estudo ficam em /app e são protegidas por assinatura.
- Legislação e súmulas de fonte oficial, com busca sem acento.
- Calendário de exames, provas anteriores e dados de desempenho.
- Resolução de questões, simulados, caderno de erros e revisão espaçada.
- Roadmap e sessões guiadas de estudo.
- Fluxos editoriais para revisão de disciplina, comentários e vínculos.
- MCP para que clientes compatíveis acompanhem o ciclo de estudo do aluno.
- Conteúdo aberto e produto pago não se misturam. Rotas públicas são indexáveis; tudo sob
/appénoindex, bloqueado emrobotse protegido por RLS. - A fonte vem antes da resposta. Legislação, súmulas e provas são atos oficiais. Conteúdo autoral é revisado antes de ser publicado.
- O banco é a fronteira. O app usa a chave anônima do Supabase; RLS decide acesso a questões, comentários, dados pessoais e operações internas.
- Escala não justifica conteúdo raso. Uma página de artigo só entra no índice quando
indexavelestá habilitado, normalmente após comentário revisado.
- Next.js 16 + React 19 + TypeScript;
- Tailwind CSS 4;
- Supabase (Postgres, Auth e RLS);
- VPS com Docker e Caddy para deploy e tarefas agendadas (ver
deploy/); - Python stdlib +
pdftotext+psqlno pipeline de ingestão.
- Node.js 22 ou superior;
- pnpm 9;
- Supabase CLI, se for trabalhar no banco;
pdftotextepsql, apenas para ingestão.
git clone git@github.com:yagofontanez/oabase.git
cd oabase
pnpm install
cp .env.example .env.local
pnpm devAbra http://localhost:3000. Sem credenciais do Supabase, a camada aberta usa dados de exemplo para facilitar o trabalho de interface.
| Comando | Finalidade |
|---|---|
pnpm dev |
Inicia o ambiente Next local. |
pnpm lint |
Executa o lint. |
pnpm build |
Gera a build de produção. |
pnpm fronteira |
Verifica a separação entre conteúdo aberto e produto pago. Requer .env.local. |
pnpm test:mcp |
Testa o servidor MCP. |
pnpm mcp |
Inicia o MCP local por stdio. |
O schema versionado vive em supabase/migrations/; dados de exemplo reproduzíveis estão em supabase/seed.sql.
supabase start
supabase db reset
supabase db push
supabase stopFaça uma migration nova primeiro no banco local. Nunca use a service role no runtime do Next: ela pertence somente a pipelines externos de ingestão.
O projeto em ingest/ carrega provas, legislação, súmulas e dados editoriais a partir de fontes oficiais. Ele não possui dependências Python de terceiros além das ferramentas de sistema.
cd ingest
python3 -m oabase_ingest.lote --manifesto
python3 -m oabase_ingest.lote --de 32 --ate 46O modo seco é o padrão. Use --carregar apenas depois de conferir o resultado. Leia o guia de ingestão antes de alterar um parser ou gravar no banco.
O MCP expõe fontes jurídicas abertas e, para a pessoa autenticada, o próprio ciclo de estudo. Ele nunca oferece operações administrativas, pagamentos, clientes ou ferramentas editoriais.
pnpm mcp
OABASE_ACCESS_TOKEN=... pnpm mcpConsulte docs/MCP.md para configuração local, HTTP, OAuth 2.1 e testes.
src/app/ rotas públicas, produto e APIs
src/lib/content/ contrato e fontes de conteúdo
src/lib/supabase/ clientes Supabase (sempre chave anônima)
src/mcp/ servidor MCP
supabase/migrations/ schema, funções e políticas RLS
ingest/ pipeline de fontes oficiais
docs/ documentação complementar
src/lib/content/queries.ts é a fronteira de leitura de conteúdo: páginas não consultam a origem dos dados diretamente. Ao criar uma consulta, mantenha o contrato e as implementações mock e Supabase em sincronia.
Copie .env.example e preencha somente o necessário para a tarefa atual. Ela documenta Supabase, pagamentos, e-mail, IA, embeddings e MCP.
Nunca exponha ou prefixe com NEXT_PUBLIC_ chaves de pagamento, e-mail, provedores de IA, cron, webhook ou service role. Nunca versione .env.local.
Leia CONTRIBUTING.md antes de abrir uma alteração e SECURITY.md para comunicar vulnerabilidades de forma responsável.
O código deste repositório é disponibilizado sob a licença MIT.
A licença do código não altera direitos sobre marcas, identidade visual, conteúdo editorial ou materiais de terceiros. Textos legais, decisões e demais atos oficiais são reproduzidos segundo seu regime jurídico aplicável e devem manter indicação de fonte.