Skip to content

CtrI-Alt-Del/animus-server

Repository files navigation

Animus Server

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.

🚀 Visao Geral

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.

🛠 Tech Stack

O projeto utiliza uma stack moderna para API, persistencia, processamento e mensageria:

🏗 Arquitetura

O projeto segue uma arquitetura em camadas inspirada em Clean Architecture e Hexagonal Architecture (Ports and Adapters).

Estrutura de Camadas

  • 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 para Depends(...).
  • 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.

📂 Estrutura do Projeto

src/animus/
├── app.py
├── ai/
├── constants/
├── core/
├── database/
├── pipes/
├── providers/
├── pubsub/
├── rest/
├── routers/
└── validation/

⚙️ Configuracao e Instalacao

Pre-requisitos

  • Python 3.13+
  • uv
  • PostgreSQL local ou acessivel via DATABASE_URL
  • Node.js/npm apenas se voce for executar o ambiente local do Inngest

Passo a passo

  1. Clone o repositorio:

    git clone <url-do-repositorio>
    cd animus-server
  2. Configure as variaveis de ambiente:

    cp .env.example .env

    Preencha os valores necessarios no arquivo .env.

  3. Instale as dependencias do projeto:

    uv sync
  4. Prepare o banco de dados:

    Crie a base configurada em DATABASE_URL e depois aplique as migracoes:

    uv run poe db:upgrade
  5. Execute a API em desenvolvimento:

    uv run dev
  6. (Opcional) Execute o ambiente local de eventos:

    uv run poe pubsub
  7. (Opcional) Popule dados de desenvolvimento:

    uv run poe db:seed

📖 Dominios do Produto

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.

📖 Documentacao

Os principais documentos do projeto estao em documentation/:

🧪 Testes e Qualidade

Execute os comandos abaixo para validar o projeto:

uv run poe test
uv run poe typecheck
uv run poe codecheck

📝 Licenca

Este projeto esta licenciado sob a licenca MIT.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors