Este projeto é uma API RESTful para gerenciamento de tarefas que utiliza SQLite como banco de dados para persistência de dados.
- Gerenciamento completo de tarefas (CRUD)
- Categorização de tarefas
- Sistema de etiquetas (tags)
- Filtragem por status de conclusão, categoria e prioridade
- Busca por texto em títulos e descrições
- Persistência de dados com SQLite
- Node.js (v14+)
- npm ou yarn
- Clone o repositório:
git clone <url-do-repositorio>
cd app08- Instale as dependências:
npm install- Configure o banco de dados:
node src/database/migrate.js- Popule o banco com dados iniciais (opcional):
node src/database/seed.js- Inicie o servidor:
npm startapp08/
├── public/ # Arquivos estáticos
│ ├── css/ # Estilos CSS
│ └── index.html # Página inicial
├── src/ # Código-fonte
│ ├── config/ # Configurações
│ │ └── database.js # Configuração do SQLite
│ ├── controllers/ # Controladores
│ │ ├── tarefasController.js
│ │ ├── categoriasController.js
│ │ └── etiquetasController.js
│ ├── database/ # Scripts de banco de dados
│ │ ├── migrate.js # Criação das tabelas
│ │ └── seed.js # Dados iniciais
│ ├── middlewares/ # Middlewares
│ │ ├── errorHandler.js # Tratamento de erros
│ │ └── notFound.js # Rotas não encontradas
│ ├── models/ # Modelos
│ │ ├── tarefaModel.js
│ │ ├── categoriaModel.js
│ │ └── etiquetaModel.js
│ ├── routes/ # Rotas
│ │ ├── index.js # Índice de rotas
│ │ ├── tarefasRoutes.js
│ │ ├── categoriasRoutes.js
│ │ └── etiquetasRoutes.js
│ ├── utils/ # Utilitários
│ │ └── validador.js # Validação de dados
│ └── server.js # Arquivo principal do servidor
├── package.json # Dependências e scripts
└── README.md # Este arquivo
GET /api/tarefas- Listar todas as tarefas (com filtros opcionais)GET /api/tarefas/:id- Obter uma tarefa específicaPOST /api/tarefas- Criar nova tarefaPUT /api/tarefas/:id- Atualizar uma tarefaDELETE /api/tarefas/:id- Remover uma tarefaPATCH /api/tarefas/:id/concluir- Marcar como concluída/pendenteGET /api/tarefas/buscar?termo=...- Buscar por termo
GET /api/categorias- Listar todas as categoriasGET /api/categorias/:id- Obter uma categoria específicaPOST /api/categorias- Criar nova categoriaPUT /api/categorias/:id- Atualizar uma categoriaDELETE /api/categorias/:id- Remover uma categoriaGET /api/categorias/buscar?termo=...- Buscar por termo
GET /api/etiquetas- Listar todas as etiquetasGET /api/etiquetas/:id- Obter uma etiqueta específicaPOST /api/etiquetas- Criar nova etiquetaPUT /api/etiquetas/:id- Atualizar uma etiquetaDELETE /api/etiquetas/:id- Remover uma etiquetaGET /api/etiquetas/buscar?termo=...- Buscar por termoGET /api/etiquetas/:id/tarefas- Listar tarefas da etiqueta
POST /api/tarefas
Content-Type: application/json
{
"titulo": "Estudar SQLite",
"descricao": "Aprender sobre as funcionalidades do SQLite",
"categoria_id": 1,
"prioridade": 2,
"data_vencimento": "2023-12-31",
"etiquetas": [1, 3]
}GET /api/tarefas?categoria_id=1&prioridade=2- Node.js: Ambiente de execução JavaScript
- Express: Framework web
- SQLite: Banco de dados relacional
- Cors: Middleware para habilitar CORS
- Morgan: Logger de requisições HTTP
- Persistência de dados com banco de dados relacional (SQLite)
- Modelagem de dados com relacionamentos (1:N e N:N)
- Operações SQL (SELECT, INSERT, UPDATE, DELETE)
- Implementação de uma API RESTful com Express
- Validação de dados de entrada
- Tratamento de erros em APIs
- Organização de código em arquitetura MVC
Este projeto é para fins educacionais.