Loading repository data…
Loading repository data…
mateus-dev-me / repository
Uma API REST para gerenciamento de tarefas em kanban construída com Django e Django Ninja.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Uma API REST para gerenciamento de tarefas em kanban construída com Django e Django Ninja, oferecendo autenticação JWT e operações CRUD completas para tarefas e contas de usuário.
Este projeto foi desenvolvido como material de apoio para o Mini Curso Descomplicando o Desenvolvimento Web com Python e Django em Sobral na V SECS, ministrado por Mateus Martins.
Se você ainda não tem o uv instalado, execute:
# No macOS e Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# No Windows (PowerShell)
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# Ou via pip
pip install uv
Clone o repositório
git clone https://github.com/mateus-dev-me/api-kanban-ninja
cd api-kanban-ninja
Crie o ambiente virtual
uv venv
Isso criará um ambiente virtual na pasta .venv
Ative o ambiente virtual
Linux/macOS:
source .venv/bin/activate
Windows:
.venv\Scripts\Activate
Instale as dependências
uv pip install -r pyproject.toml --group dev
Configure o banco de dados
task migrations
Crie um superusuário (opcional)
python manage.py createsuperuser
Execute o servidor de desenvolvimento
task run
A API estará disponível em http://localhost:8000
A documentação da API está disponível em /docs
| Método | Endpoint | Descrição |
|---|---|---|
POST | /token | Login - Obter token de acesso |
POST | /refresh | Renovar token de acesso |
| Método | Endpoint | Descrição |
|---|---|---|
POST | /accounts | Criar nova conta de usuário |
GET | /accounts | Listar todas as contas |
GET | /accounts/<pk> | Obter detalhes de uma conta |
PUT | /accounts/<pk> | Atualizar dados da conta |
DELETE | /accounts/<pk> | Excluir conta |
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /tags | Criar uma nova tag |
| GET | /tags | Listar todas as tags |
| DELETE | /tags/<tag_id> | Excluir uma tag existente |
| PUT | /tags/<tag_id> | Atualizar os dados de uma tag |
| Método | Endpoint | Descrição |
|---|---|---|
POST | /tasks | Criar nova tarefa |
GET | /tasks | Listar todas as tarefas |
GET | /tasks/<pk> | Obter detalhes de uma tarefa |
PUT | /tasks/<pk> | Atualizar tarefa |
DELETE | /tasks/<pk> | Excluir tarefa |
related_name para queries reversas otimizadasSET_NULL para preservar histórico quando usuários são removidosA API utiliza autenticação JWT, portanto certifique-se de:
/token para obter o token de acessoAuthorization: Bearer <seu-token>/refreshAcesse /docs para explorar a API interativamente com Swagger UI, onde você pode:
api-kanban-ninja/
├── apps/ # Contém as aplicações modulares do Django
│ ├── accounts/ # Gerenciamento de contas de usuário
│ ├── core/ # Funcionalidades e modelos compartilhados/abstratos
│ └── tasks/ # Gerenciamento de tarefas
├── config/ # Configurações centrais do projeto Django
│ ├── settings/ # Configurações de ambiente (base, dev, prod)
│ ├── asgi.py # Configuração ASGI
│ ├── wsgi.py # Configuração WSGI
│ └── urls.py # URLs principais do projeto
├── manage.py # Utilitário de linha de comando do Django
├── pyproject.toml # Arquivo de configuração do projeto (PEP 621) e dependências
├── README.md # Este arquivo
└── LICENSE # Licença do projeto
config/ - Configurações Centraisconfig/
├── __init__.py
├── asgi.py # Ponto de entrada para servidores ASGI compatíveis
├── settings/ # Módulo de configurações
│ ├── __init__.py
│ ├── base.py # Configurações base, comuns a todos os ambientes
│ ├── dev.py # Configurações específicas para desenvolvimento
│ └── prod.py # Configurações específicas para produção
├── urls.py # Declarações de URL de nível de projeto, incluindo rotas da API
└── wsgi.py
Cada subdiretório em apps/ representa uma aplicação Django, promovendo a separação de responsabilidades.
apps/core/ - Funcionalidades CompartilhadasContém código reutilizável por outras aplicações, como modelos abstratos, schemas base, e utilitários.
apps/core/
├── abstracts/ # Modelos abstratos base
│ ├── __init__.py
│ └── models.py # Ex: TimeStampedModel para `created_at` e `updated_at`
├── api.py # Pode conter endpoints de API centrais/comuns ou utilitários para a API
├── apps.py # Configuração da aplicação Django 'core'
├── factories.py # Factories (e.g., com Factory Boy) para criação de objetos em testes
└── schemas.py
apps/accounts/ - Gerenciamento de UsuáriosResponsável pela autenticação, autorização e gerenciamento de perfis de usuário.
apps/accounts/
├── api.py # Endpoints da API relacionados a contas (usando Django Ninja)
├── apps.py # Configuração da aplicação Django 'accounts'
├── schemas.py # Schemas Pydantic para validação e serialização de dados de contas
└── security.py # Lógica de segurança, como manipulação de JWT e permissões
apps/tasks/ - Gestão de TarefasImplementa a lógica de negócio para criação, atualização, listagem e exclusão de tarefas.
apps/tasks/
├── admin.py # Configuração para o Django Admin (opcional, para gerenciar tarefas via UI admin)
├── api.py # Endpoints da API para tarefas (usando Django Ninja)
├── apps.py # Configuração da aplicação Django 'tasks'
├── managers.py # Custom QuerySet managers para o modelo Task (se houver lógicas de consulta complexas)
├── migrations/ # Migrações do banco de dados para o modelo Task
│ ├── 0001_initial.py
├── models.py # Definição do modelo de dados Task e seus Enums
└── schemas.py # Schemas Pydantic para validação e serialização de dados de tarefas