Este repositório contém a API back-end para o projeto Gerenciador de Tarefas. Ele serve como o serviço central (Core API) em uma arquitetura de microsserviços, sendo a fonte da verdade para todos os dados e lógica de negócios.
A API foi construída seguindo as melhores práticas de arquitetura de software, focando em segurança, performance, escalabilidade e manutenibilidade. O ambiente é 100% containerizado com Docker, garantindo portabilidade e um setup de desenvolvimento rápido e consistente.
Este projeto faz parte de um ecossistema multi-repositório:
- Back-end (Este Repositório): API robusta em Django/DRF, responsável pela lógica de negócios e persistência de dados.
- BFF (Backend for Frontend): Serviço intermediário em Go, otimizado para agregar e formatar dados para o cliente.
- Front-end: Interface de usuário em React.
Este serviço (backend) foi projetado para ser consumido exclusivamente pelo BFF, que atua como uma camada de segurança e otimização.
- Gerenciamento Completo (CRUD): Endpoints para criar, ler, atualizar e deletar Projetos, Tarefas e Usuários.
- Autenticação Segura: Sistema de autenticação baseado em
JSON Web Tokens(JWT). - Sistema de Permissões Robusto: Lógica de negócio que garante que um usuário só possa interagir com os projetos e tarefas dos quais faz parte.
- Interface Administrativa Moderna: Painel de administração customizado com
Django Jazzminpara uma melhor experiência de usuário, incluindo temas, busca global e layout responsivo. - Documentação Interativa: API auto-documentada com o padrão OpenAPI 3 (Swagger UI e ReDoc).
- Ambiente Dockerizado: Aplicação e banco de dados (PostgreSQL) gerenciados pelo Docker Compose.
- Testes Automatizados: Suíte de testes com
pytestpara garantir a confiabilidade da API. - Configuração Segura: Utiliza variáveis de ambiente (
.env) para gerenciar segredos.
Com a aplicação rodando, a documentação interativa da API pode ser acessada nos seguintes endpoints:
- Swagger UI: http://localhost:8000/api/schema/swagger-ui/
- ReDoc: http://localhost:8000/api/schema/redoc/
| Tecnologia | Propósito |
|---|---|
| Python | Linguagem de programação principal |
| Django | Framework web para a construção da API |
| Django REST Framework | Toolkit para construir APIs RESTful robustas |
| Django Jazzmin | Tema moderno para a interface de administração |
| PostgreSQL | Banco de dados relacional |
| Docker & Docker Compose | Ferramentas para containerização e orquestração |
| JWT (Simple JWT) | Padrão para autenticação baseada em tokens |
| drf-spectacular | Geração automática de documentação OpenAPI/Swagger |
| pytest-django | Framework para a execução dos testes automatizados |
| python-dotenv | Gerenciamento de variáveis de ambiente |
Siga os passos abaixo para configurar e executar o ambiente de desenvolvimento.
-
Clone o repositório principal e navegue até a pasta do back-end:
git clone [https://github.com/JamesCookDev/Task-Manager-Veloz.git](https://github.com/JamesCookDev/Task-Manager-Veloz.git) cd Task-Manager-Veloz/gerenciador-tarefas-backend -
Crie o arquivo de ambiente: Copie o template
.env.examplepara criar seu arquivo.envlocal.cp .env.example .env
-
Gere uma
SECRET_KEY: O arquivo.envprecisa de umaSECRET_KEYúnica. Execute o comando abaixo e cole a chave gerada no seu arquivo.env.docker compose run --rm backend python manage.py shell -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())" -
Construa e suba os contêineres: Este comando irá construir as imagens e iniciar todos os serviços definidos no
docker-compose.yml(backend, bff, db).docker compose up --build -d
(A flag
-dexecuta os contêineres em segundo plano). -
Crie um superusuário: Para acessar a área administrativa, você precisa de um usuário.
docker compose exec backend python manage.py createsuperuserSiga as instruções para criar seu usuário e senha.
-
Colete os arquivos estáticos: Este passo é necessário para que o tema do Django Jazzmin seja carregado corretamente.
docker compose exec backend python manage.py collectstatic --noinput
✅ Pronto! A API estará rodando em http://localhost:8000/ e a interface administrativa em http://localhost:8000/admin/.
Para garantir que tudo está funcionando como esperado, execute a suíte de testes automatizados:
docker compose exec backend pytest