Backend da plataforma Animus, uma aplicacao de analise de precedentes juridicos que transforma peticoes iniciais em insumos objetivos para advogados e juizes. Este servico foi desenvolvido em Python com FastAPI, com foco em regras de negocio desacopladas, arquitetura em camadas e integracoes robustas para autenticacao, processamento com IA, armazenamento de analises e notificacoes assincronas.
O Animus Server sustenta os principais fluxos do produto:
- Auth e identidade: cadastro, login, gestao de perfil e recuperacao de senha.
- Intake juridico: upload de peticoes em PDF ou DOCX para extracao, resumacao e analise de precedentes com IA.
- Analise de precedentes: classificacao de aplicabilidade, sintese explicativa e apoio a decisao processual.
- Storage e historico: persistencia, organizacao, consulta e exportacao de analises anteriores.
- Notificacoes assicronas: eventos de conclusao de analise e outros fluxos desacoplados.
O projeto utiliza uma stack moderna para API, persistencia, processamento e mensageria:
- Linguagem: Python 3.13+
- Framework HTTP: FastAPI
- Servidor ASGI: Uvicorn
- ORM e Persistencia: SQLAlchemy + PostgreSQL
- Migracoes: Alembic
- Jobs/Eventos: Inngest
- IA e orquestracao: Agno
- Validacao e configuracao: Pydantic + pydantic-settings
- Autenticacao e seguranca: PyJWT + pwdlib
- Tooling: uv, Poe the Poet, Ruff, BasedPyright, Pytest
O projeto segue uma arquitetura em camadas inspirada em Clean Architecture e Hexagonal Architecture (Ports and Adapters).
- Core (
src/animus/core/): entidades, DTOs, erros de dominio, interfaces e use cases. - Rest (
src/animus/rest/): controllers HTTP e middlewares de request. - Routers (
src/animus/routers/): composicao e registro de rotas por contexto. - Pipes (
src/animus/pipes/): providers de dependencia paraDepends(...). - Validation (
src/animus/validation/): schemas e conversao request/response. - Database (
src/animus/database/): models, mappers e repositorios SQLAlchemy. - Providers (
src/animus/providers/): adaptadores externos e servicos de infraestrutura. - PubSub (
src/animus/pubsub/): orquestracao assincrona por eventos com Inngest. - AI (
src/animus/ai/): integracoes e orquestracao dos fluxos de inteligencia artificial.
Para detalhes tecnicos, consulte a Documentacao de Arquitetura.
src/animus/
├── app.py
├── ai/
├── constants/
├── core/
├── database/
├── pipes/
├── providers/
├── pubsub/
├── rest/
├── routers/
└── validation/- Python 3.13+
- uv
- PostgreSQL local ou acessivel via
DATABASE_URL - Node.js/npm apenas se voce for executar o ambiente local do Inngest
-
Clone o repositorio:
git clone <url-do-repositorio> cd animus-server
-
Configure as variaveis de ambiente:
cp .env.example .env
Preencha os valores necessarios no arquivo
.env. -
Instale as dependencias do projeto:
uv sync
-
Prepare o banco de dados:
Crie a base configurada em
DATABASE_URLe depois aplique as migracoes:uv run poe db:upgrade
-
Execute a API em desenvolvimento:
uv run dev
-
(Opcional) Execute o ambiente local de eventos:
uv run poe pubsub
-
(Opcional) Popule dados de desenvolvimento:
uv run poe db:seed
Com base na documentacao funcional, os modulos centrais do produto sao:
- Auth: identidade do usuario, login com email/senha ou Google, perfil e recuperacao de senha.
- Intake: recebimento da peticao inicial, extracao de informacoes e busca de precedentes juridicos relevantes.
- Storage: historico, organizacao em pastas, nomeacao e exportacao das analises.
- Notification: comunicacao assincrona quando uma analise e concluida ou um relatorio e gerado.
O sistema e uma ferramenta de apoio a decisao. A interpretacao final e a escolha do precedente continuam sob responsabilidade do usuario.
Os principais documentos do projeto estao em documentation/:
Execute os comandos abaixo para validar o projeto:
uv run poe test
uv run poe typecheck
uv run poe codecheckEste projeto esta licenciado sob a licenca MIT.