API REST para gerenciamento de tarefas, desenvolvida com Node.js e Express para atender ao aplicativo Android TaskListApp-wAPI.
A QuickList API é o backend responsável por disponibilizar operações de criação, consulta, atualização e exclusão de tarefas.
O backend é mantido separadamente do aplicativo Android. Essa organização permite executar, testar, publicar e evoluir a API sem depender diretamente do projeto mobile.
TaskListApp-wAPI
│
│ HTTP + JSON
▼
QuickList API
│
▼
Array de tarefas em memória
O aplicativo que consome esta API está disponível em:
- listagem de todas as tarefas;
- criação de tarefas com título e descrição;
- atualização do título, da descrição ou do status;
- exclusão por identificador;
- geração de identificadores UUID;
- leitura de JSON no corpo das requisições;
- suporte a CORS;
- porta configurável pela variável de ambiente
PORT; - respostas HTTP para sucesso, validação e recurso não encontrado.
| Tecnologia | Versão declarada | Aplicação |
|---|---|---|
| Node.js | Não especificada | Ambiente de execução do backend. |
| Express | 5.2.1 | Servidor HTTP e definição das rotas. |
| CORS | 2.8.6 | Permissão de requisições externas. |
| UUID | 13.0.0 | Geração de identificadores únicos. |
| JavaScript | CommonJS | Implementação da aplicação. |
| Render | — | Hospedagem da versão utilizada pelo aplicativo. |
A versão configurada no aplicativo Android utiliza:
https://quicklistapp-api.onrender.com
Para desenvolvimento local, a API utiliza:
http://localhost:3000
A porta 3000 é usada quando a variável de ambiente PORT não é informada.
Uma tarefa possui a seguinte estrutura:
{
"id": "c493c06d-0000-0000-0000-000000000000",
"title": "Estudar Kotlin",
"description": "Revisar integração com Retrofit",
"completed": false
}| Campo | Tipo | Descrição |
|---|---|---|
id | string | Identificador da tarefa. Novos registros recebem um UUID. |
title | string | Título da tarefa. |
description | string | Descrição da tarefa. |
completed | boolean | Indica se a tarefa foi concluída. |
| Método | Rota | Descrição | Resposta esperada |
|---|---|---|---|
GET | /tasks | Retorna todas as tarefas. | 200 OK |
POST | /tasks | Cria uma tarefa. | 201 Created |
PUT | /tasks/:id | Atualiza uma tarefa existente. | 200 OK |
DELETE | /tasks/:id | Exclui uma tarefa. | 204 No Content |
Retorna a lista completa:
curl http://localhost:3000/tasksExemplo de resposta:
[
{
"id": "1",
"title": "Aprender Retrofit",
"description": "Estudar como conectar API no Android",
"completed": false
}
]Cria uma nova tarefa. O código atual valida a presença de título e descrição.
curl -X POST http://localhost:3000/tasks \
-H "Content-Type: application/json" \
-d '{ "title": "Estudar Node.js", "description": "Revisar rotas com Express" }'Possíveis respostas:
201 Created: tarefa criada;400 Bad Request: título ou descrição ausente.
Atualiza uma ou mais propriedades da tarefa.
curl -X PUT http://localhost:3000/tasks/1 \
-H "Content-Type: application/json" \
-d '{ "completed": true }'Também podem ser enviados title e description.
Possíveis respostas:
200 OK: tarefa atualizada;404 Not Found: identificador inexistente.
Remove uma tarefa:
curl -X DELETE http://localhost:3000/tasks/1Possíveis respostas:
204 No Content: tarefa removida;404 Not Found: identificador inexistente.
quicklistapp-api/
├── index.js
├── package.json
├── package-lock.json
└── README.md
O arquivo index.js concentra:
- configuração do Express;
- middleware CORS;
- leitura de JSON;
- coleção de tarefas;
- rotas REST;
- inicialização do servidor.
- Node.js instalado;
- npm instalado;
- terminal ou prompt de comando.
git clone https://github.com/dierlisson/quicklistapp-api.git
cd quicklistapp-apiComo o projeto possui package-lock.json, utilize:
npm ciTambém é possível instalar com:
npm installnpm startO script executado é:
node index.js
A saída esperada no terminal é semelhante a:
Servidor rodando na porta 3000
Em outro terminal:
curl http://localhost:3000/tasksTambém é possível abrir no navegador:
http://localhost:3000/tasks
No projeto TaskListApp-wAPI, altere a constante BASE_URL do arquivo RetrofitClient.kt.
privateconstvalBASE_URL="http://10.0.2.2:3000/"privateconstvalBASE_URL="http://192.168.0.10:3000/"Substitua o endereço pelo IPv4 do computador que está executando a API.
Para comunicação HTTP local, o aplicativo também precisa permitir temporariamente tráfego sem TLS no AndroidManifest.xml:
<applicationandroid:usesCleartextTraffic="true"
... >O projeto atual armazena as tarefas em um array na memória do processo Node.js.
Consequências:
- os dados não são gravados em banco de dados;
- a lista é perdida quando o processo é reiniciado;
- um novo deploy restaura os dados iniciais definidos no código;
- a API é adequada para demonstração e aprendizado, mas não para persistência de produção.
Uma evolução possível seria adicionar uma camada de persistência com PostgreSQL, MongoDB ou outro banco de dados.
A estrutura dos campos id, title, description e completed precisa permanecer compatível com o modelo Kotlin utilizado pelo Android.
Cada operação retorna um status coerente com o resultado, permitindo que o cliente diferencie sucesso, validação e recurso inexistente.
O uso de UUID evita depender de uma sequência numérica mantida manualmente para as novas tarefas.
A implementação simplifica o aprendizado das rotas REST, mas evidencia a diferença entre dados em memória e persistência permanente.
Manter frontend e backend em repositórios próprios aproxima o projeto de um fluxo cliente-servidor real e facilita a publicação independente de cada aplicação.
Desenvolvido por Dierlisson Santos Justiniano como backend do projeto TaskListApp-wAPI.
- E-mail:dierlisson1@gmail.com
- LinkedIn:linkedin.com/in/dierlissonjustiniano
- GitHub:github.com/dierlisson