Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

6 Commits

Repository files navigation

🔌 QuickList API

API REST para gerenciamento de tarefas, desenvolvida com Node.js e Express para atender ao aplicativo Android TaskListApp-wAPI.

Node.jsExpressREST API

📋 Sobre o projeto

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

📱 Aplicativo Android

O aplicativo que consome esta API está disponível em:

TaskListApp-wAPI

✨ Funcionalidades

  • 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.

🛠️ Tecnologias utilizadas

TecnologiaVersão declaradaAplicação
Node.jsNão especificadaAmbiente de execução do backend.
Express5.2.1Servidor HTTP e definição das rotas.
CORS2.8.6Permissão de requisições externas.
UUID13.0.0Geração de identificadores únicos.
JavaScriptCommonJSImplementação da aplicação.
RenderHospedagem da versão utilizada pelo aplicativo.

🌐 URL da API

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.

📦 Modelo de dados

Uma tarefa possui a seguinte estrutura:

{
"id": "c493c06d-0000-0000-0000-000000000000",
"title": "Estudar Kotlin",
"description": "Revisar integração com Retrofit",
"completed": false
}
CampoTipoDescrição
idstringIdentificador da tarefa. Novos registros recebem um UUID.
titlestringTítulo da tarefa.
descriptionstringDescrição da tarefa.
completedbooleanIndica se a tarefa foi concluída.

🛣️ Endpoints principais

MétodoRotaDescriçãoResposta esperada
GET/tasksRetorna todas as tarefas.200 OK
POST/tasksCria uma tarefa.201 Created
PUT/tasks/:idAtualiza uma tarefa existente.200 OK
DELETE/tasks/:idExclui uma tarefa.204 No Content

GET /tasks

Retorna a lista completa:

curl http://localhost:3000/tasks

Exemplo de resposta:

[
{
"id": "1",
"title": "Aprender Retrofit",
"description": "Estudar como conectar API no Android",
"completed": false
}
]

POST /tasks

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.

PUT /tasks/:id

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.

DELETE /tasks/:id

Remove uma tarefa:

curl -X DELETE http://localhost:3000/tasks/1

Possíveis respostas:

  • 204 No Content: tarefa removida;
  • 404 Not Found: identificador inexistente.

📂 Estrutura do projeto

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.

🚀 Como executar localmente

Pré-requisitos

  • Node.js instalado;
  • npm instalado;
  • terminal ou prompt de comando.

1. Clonar o repositório

git clone https://github.com/dierlisson/quicklistapp-api.git
cd quicklistapp-api

2. Instalar as dependências

Como o projeto possui package-lock.json, utilize:

npm ci

Também é possível instalar com:

npm install

3. Iniciar o servidor

npm start

O script executado é:

node index.js

A saída esperada no terminal é semelhante a:

Servidor rodando na porta 3000

4. Verificar a API

Em outro terminal:

curl http://localhost:3000/tasks

Também é possível abrir no navegador:

http://localhost:3000/tasks

📲 Como conectar o aplicativo Android à API local

No projeto TaskListApp-wAPI, altere a constante BASE_URL do arquivo RetrofitClient.kt.

Emulador Android

privateconstvalBASE_URL="http://10.0.2.2:3000/"

Dispositivo físico na mesma rede

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"
... >

⚠️ Persistência dos dados

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.

🚧 Desafios técnicos e aprendizados

1. Contrato entre backend e aplicativo

A estrutura dos campos id, title, description e completed precisa permanecer compatível com o modelo Kotlin utilizado pelo Android.

2. Respostas HTTP

Cada operação retorna um status coerente com o resultado, permitindo que o cliente diferencie sucesso, validação e recurso inexistente.

3. Identificadores únicos

O uso de UUID evita depender de uma sequência numérica mantida manualmente para as novas tarefas.

4. Persistência em memória

A implementação simplifica o aprendizado das rotas REST, mas evidencia a diferença entre dados em memória e persistência permanente.

5. Separação de projetos

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.

👤 Autor e contato profissional

Desenvolvido por Dierlisson Santos Justiniano como backend do projeto TaskListApp-wAPI.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages