Esta é uma API RESTful para gerenciamento de tarefas (todo list) desenvolvida em Golang, seguindo boas práticas de organização de código e arquitetura de software.
- Go (Golang)
- Gorilla Mux (para gerenciamento de rotas)
- UUID (para geração de identificadores únicos)
todo-list/
├── cmd/
│ └── api/
│ └── main.go # Ponto de entrada da aplicação
├── internal/
│ ├── handlers/
│ │ └── task_handler.go # Handlers HTTP para as requisições
│ ├── middleware/
│ │ └── logging.go # Middlewares da aplicação
│ ├── models/
│ │ └── task.go # Definição dos modelos de dados
│ └── repository/
│ ├── repository.go # Interface do repositório
│ └── memory_repository.go # Implementação em memória
├── go.mod # Dependências do Go
├── Dockerfile # Configuração do Docker
└── README.md # Documentação
- Go 1.24 ou superior instalado
- Git instalado
- Clone o repositório:
git clone https://github.com/robertov8/todo-list.git
cd todo-list
- Instale as dependências:
go mod download
- Execute a aplicação:
go run cmd/api/main.go
O servidor será iniciado na porta 4000 por padrão.
Alternativamente, você pode usar Docker para executar a aplicação:
docker build -t todo-list .
docker run -p 4000:4000 todo-list
GET /api/tasks
Parâmetros de consulta opcionais:
- done: filtrar por tarefas concluídas (true) ou não concluídas (false)
GET /api/tasks/{id}
POST /api/tasks
Corpo da requisição:
{
"title": "Nome da tarefa",
"description": "Descrição da tarefa"
}
PUT /api/tasks/{id}
Corpo da requisição:
{
"title": "Novo título",
"description": "Nova descrição",
"done": true
}
DELETE /api/tasks/{id}
A aplicação segue os princípios de arquitetura limpa e separação de responsabilidades:
-
Modelos (models): Definem as estruturas de dados utilizadas na aplicação.
-
Repositório (repository): Responsável pelo acesso e manipulação dos dados.
- Interface: Define os métodos para interagir com os dados.
- Implementação em memória: Implementa a interface usando um mapa para armazenamento em memória.
-
Handlers: Responsáveis por lidar com as requisições HTTP, validar entradas e formatar respostas. Middleware: Funções que são executadas antes de cada requisição, como logging.
Para tornar esta aplicação pronta para produção, considere implementar:
- Persistência de dados em um banco de dados real (PostgreSQL, MongoDB, etc.)
- Autenticação e autorização de usuários
- Paginação para listagem de tarefas
- Testes automatizados
- CI/CD para implantação contínua
- Documentação da API com Swagger