Gotham é uma API robusta desenvolvida em Go para gerenciamento de usuários, permissões e autenticação. O projeto utiliza PostgreSQL como banco de dados principal e Redis para cache de tokens, seguindo boas práticas de desenvolvimento e arquitetura modular.
- Autenticação JWT com refresh token
- Controle de acesso baseado em roles (RBAC)
- Cache de tokens com Redis
- Containerização com Docker
- CI/CD com GitHub Actions
- Migrations automáticas
- Seeds para dados iniciais
- Testes unitários e de integração
- Go 1.23+
- PostgreSQL 13
- Redis 6
- Docker e Docker Compose
- JWT para autenticação
- GORM como ORM
- Gorilla Mux para roteamento
- GitHub Actions para CI/CD
- Testify para testes
Gotham/
├── cmd/
│ └── gotham/
│ └── main.go
├── internal/
│ ├── database/
│ │ └── database.go
│ ├── handlers/
│ │ └── handlers.go
│ ├── middlewares/
│ │ └── middlewares.go
│ ├── models/
│ │ └── models.go
│ ├── routes/
│ │ └── routes.go
│ ├── seeds/
│ │ └── seeds.go
│ ├── settings/
│ │ └── config.go
│ └── utils/
│ └── utils.go
├── migrations/
│ └── migrations.go
├── pkg/
│ └── validator/
│ └── validator.go
├── test/
│ ├── config/
│ │ └── config.go
│ ├── helpers/
│ │ └── test_helper.go
│ ├── integration/
│ │ └── user_test.go
│ └── unit/
│ └── utils_test.go
├── .dockerignore
├── .env
├── .env-example
├── .gitignore
├── docker-compose.yml
├── Dockerfile
├── go.mod
├── go.sum
├── LICENSE
├── Makefile
└── README.md
- Clone o repositório:
git clone https://github.com/jeffemart/Gotham.git
cd Gotham
- Configure as variáveis de ambiente:
cp .env-example .env
# Edite o arquivo .env com suas configurações
- Execute com Docker:
docker-compose up -d
- Ou execute localmente:
go run cmd/gotham/main.go
Para executar os testes:
make test
- Fork o projeto
- Crie sua Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature'
) - Push para a Branch (
git push origin feature/AmazingFeature
) - Abra um Pull Request
Este projeto está licenciado sob a MIT License - veja o arquivo LICENSE para detalhes.
Jefferson Martins - LinkedIn