Bem-vindo à documentação técnica do projeto Go Cart API. Este diretório contém toda a documentação arquitetural e técnica do sistema.
Documentação completa da arquitetura do sistema, incluindo:
- Diagrama de Arquitetura Geral: Visão macro do sistema com todas as camadas
- Fluxo de Autenticação: Sequência detalhada dos processos de login/registro
- Modelo de Dados (ERD): Estrutura do banco de dados com relacionamentos
- Fluxo de Requests: Como as requisições são processadas
- Estrutura de Pastas: Organização do código e responsabilidades
- Tecnologias Utilizadas: Stack tecnológico completo
- Padrões Arquiteturais: Design patterns implementados
Os diagramas estão criados em formato Mermaid, que pode ser visualizado em:
Os diagramas são renderizados automaticamente quando você visualiza os arquivos .md diretamente no GitHub.
- VS Code: Instale a extensão "Mermaid Preview"
- IntelliJ/GoLand: Suporte nativo para Mermaid
- Online: Mermaid Live Editor
- GitBook, Notion, ou qualquer plataforma que suporte Mermaid
Este projeto segue os princípios de Clean Architecture com as seguintes características:
- Separação de Responsabilidades: Cada camada tem função específica
- Inversão de Dependências: Interfaces bem definidas entre camadas
- Testabilidade: Estrutura preparada para testes unitários e integração
- Escalabilidade: Arquitetura que facilita crescimento e manutenção
- Backend: Go 1.23+ com Gorilla Mux
- Database: PostgreSQL via Supabase
- Autenticação: JWT + bcrypt
- Deploy: Render/Heroku
- Testes: Go testing + testify
Se você é novo no projeto, recomendamos a leitura na seguinte ordem:
- README principal do projeto para setup inicial
- architecture.md para entender a estrutura
- Código fonte começando por
cmd/main.go - Testes em
internal/handlers/*_test.go
Esta documentação deve ser atualizada sempre que:
- Novos componentes forem adicionados
- A arquitetura for modificada
- Novas dependências forem incluídas
- Padrões de desenvolvimento mudarem
Para dúvidas sobre a arquitetura ou documentação:
- Abra uma issue no repositório
- Entre em contato com a equipe de desenvolvimento