API RESTful de alta performance desenvolvida em Go, focada em segurança (IAM), escalabilidade e padrões de Clean Architecture. Ideal para ecossistemas de e-commerce que exigem auditoria e integridade de dados.
O projeto implementa o padrão Hexagonal / Clean Architecture, garantindo total desacoplamento entre a lógica de negócio e os provedores de infraestrutura.
- DevSecOps Integrado: CodeQL e análise estática SonarCloud no pipeline de CI.
- Data Integrity: Controle de transações ACID no PostgreSQL e migrações versionadas.
- IAM: Autenticação via JWT (v5) e hashing robusto com Bcrypt.
- Scalability: Design stateless e interfaces para repositórios facilitando substituição de DB ou Mocking em testes.
Autenticação e Registro
Registrar novo usuário:
curl -X POST http://localhost:4444/api/auth/register \
-H "Content-Type: application/json" \
-d '{"name":"Michael Bullet","email":"[email protected]","password":"senha_segura"}'
Login e Obtenção de Token:
TOKEN=$(curl -s -X POST http://localhost:4444/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","password":"senha_segura"}' | jq -r .token)
Gerenciamento de Carrinho
Adicionar Item:
curl -X POST http://localhost:4444/api/cart/items \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"product_id":"UUID_DO_PRODUTO","quantity":2}'
Checkout (Gerar Pedido):
curl -X POST http://localhost:4444/api/orders -H "Authorization: Bearer $TOKEN"
Link para Documentação Swagger Antiga (Desatualizada)
| Módulo | Método | Endpoint | Protegido |
|---|---|---|---|
| Auth | POST | /api/auth/login |
No |
| Users | GET | /api/users/me |
Yes |
| Products | GET | /api/products |
No |
| Cart | POST | /api/cart/items |
Yes |
| Orders | GET | /api/orders |
Yes |
para diagramas de ERD e fluxos de autenticação.
- Go 1.22+
- PostgreSQL (ou Supabase)
- Golang-migrate CLI
- Instalação:
git clone [https://github.com/bulletdev/go-cart-api.git](https://github.com/bulletdev/go-cart-api.git)
cd go-cart-api && go mod tidy
- Ambiente (.env):
DATABASE_URL="postgres://usuario:senha@host:5432/database"
JWT_SECRET="seu_segredo_jwt"
- Database Migrations:
migrate -database ${DATABASE_URL} -path internal/database/migrations up
- Execução:
go run cmd/main.go
Suíte de testes unitários focada em Handlers e Lógica de Negócio:
go test -v ./internal/handlers/...
- Licença: GNU General Public License v3.0
- Autor: Michael Bullet - [email protected]
- Web: michaelbullet.com