Desafios de Backend com Node.js + Express

Siga seu número de chamada.

Use Thunder Client para testar CRUD. Foco: rotas, status HTTP, organização básica do código.

1. Instruções Gerais

Stack: Node.js + Express (sem banco de dados, pode usar arrays em memória).

Objetivo: Criar uma API REST simples com CRUD completo para 1 ou 2 recursos principais.

Passo a passo mínimo

  1. Inicializar projeto
    • npm init -y
    • npm install express
  2. Criar servidor
    • Arquivo index.js ou server.js
    • Importar Express, configurar app, usar express.json() e subir em uma porta (ex: 3000).
  3. Definir dados em memória
    • Criar um array com objetos (ex: const livros = [];).
    • Cada objeto deve ter um id numérico ou string e os campos do tema.
  4. Criar rotas CRUD principais (exemplo para o seu recurso):
    • GET /recurso → lista todos
    • GET /recurso/:id → busca por id
    • POST /recurso → cria novo
    • PUT /recurso/:id → atualiza tudo
    • DELETE /recurso/:id → remove
  5. Testar tudo no Thunder Client
    • Criar coleção com as 5 requisições CRUD.
    • Enviar corpo em JSON nas rotas POST e PUT.

Extra (para quem acabar antes): adicionar validação simples de dados, filtros com query params e mensagens de erro amigáveis.

2. Desafios (Siga seu número de chamada 32 temas)

#01 – Biblioteca de Livros

API de Biblioteca

Gerencie um acervo de livros.

Recurso principal
  • /livros
Campos sugeridos
  • id, titulo, autor, anoPublicacao, disponivel (boolean)
Extra
  • Filtro por autor: GET /livros?autor=...
#02 – Catálogo de Filmes

API de Filmes

Cadastre e gerencie filmes.

Recurso principal
  • /filmes
Campos sugeridos
  • id, titulo, diretor, ano, genero, rating (0–10)
Extra
  • Filtro por gênero: GET /filmes?genero=acao
#03 – Loja de Produtos

API de Produtos

Simule um estoque de loja.

Recurso principal
  • /produtos
Campos sugeridos
  • id, nome, preco, categoria, estoque
Extra
  • Filtro de preço mínimo: GET /produtos?precoMin=100
#04 – Agenda de Contatos

API de Contatos

Gerencie uma agenda telefônica pessoal.

Recurso principal
  • /contatos
Campos sugeridos
  • id, nome, telefone, email, favorito (boolean)
Extra
  • Filtro por favoritos: GET /contatos?favorito=true
#05 – Sistema de Tarefas

API de To‑Do

Faça um gerenciador de tarefas simples.

Recurso principal
  • /tarefas
Campos sugeridos
  • id, titulo, descricao, status (ex: aberto, feito)
Extra
  • Filtro por status: GET /tarefas?status=feito
#06 – Cadastro de Alunos

API de Alunos

Gerencie um cadastro de alunos de uma escola.

Recurso principal
  • /alunos
Campos sugeridos
  • id, nome, turma, idade, media
Extra
  • Listar alunos acima de uma média: GET /alunos?mediaMin=7
#07 – Reservas de Hotel

API de Reservas

Controle reservas de quartos de hotel (simples).

Recurso principal
  • /reservas
Campos sugeridos
  • id, nomeCliente, quarto, dataEntrada, dataSaida
Extra
  • Filtro por quarto: GET /reservas?quarto=101
#08 – Catálogo de Jogos

API de Jogos

Liste jogos de videogame e suas informações.

Recurso principal
  • /jogos
Campos sugeridos
  • id, titulo, plataforma, genero, preco
Extra
  • Filtro por plataforma: GET /jogos?plataforma=PC
#09 – Sistema de Vagas de Emprego

API de Vagas

Cadastre vagas abertas de uma empresa.

Recurso principal
  • /vagas
Campos sugeridos
  • id, titulo, area, salario, remoto (boolean)
Extra
  • Filtro remoto: GET /vagas?remoto=true
#10 – Cardápio de Restaurante

API de Cardápio

Gerencie pratos de um restaurante.

Recurso principal
  • /pratos
Campos sugeridos
  • id, nome, categoria (entrada, prato principal, sobremesa), preco, vegano
Extra
  • Filtro vegano: GET /pratos?vegano=true
#11 – Controle de Estoque de Farmácia

API de Medicamentos

Controle simples de remédios de uma farmácia.

Recurso principal
  • /medicamentos
Campos sugeridos
  • id, nome, fabricante, estoque, precisaReceita
Extra
  • Filtro por necessidade de receita: GET /medicamentos?precisaReceita=true
#12 – Sistema de Turmas e Professores

API de Turmas

Gerencie turmas de uma escola.

Recurso principal
  • /turmas
Campos sugeridos
  • id, nome, ano, professor, turno
Extra
  • Filtro por turno: GET /turmas?turno=manha
#13 – Agenda de Consultas Médicas

API de Consultas

Cadastre consultas com médico, paciente e horário.

Recurso principal
  • /consultas
Campos sugeridos
  • id, paciente, medico, data, hora, status
Extra
  • Filtro por médico: GET /consultas?medico=...
#14 – Locadora de Carros

API de Veículos

Gerencie carros disponíveis para locação.

Recurso principal
  • /veiculos
Campos sugeridos
  • id, modelo, marca, ano, precoDiaria, disponivel
Extra
  • Filtro por disponibilidade: GET /veiculos?disponivel=true
#15 – Sistema de Pedidos de Lanchonete

API de Pedidos

Cadastre pedidos de uma lanchonete.

Recurso principal
  • /pedidos
Campos sugeridos
  • id, nomeCliente, itens (texto simples), valorTotal, status
Extra
  • Filtro por status (em preparo, pronto): GET /pedidos?status=pronto
#16 – Blog de Postagens

API de Blog

Gerencie posts de um blog simples.

Recurso principal
  • /posts
Campos sugeridos
  • id, titulo, conteudo, autor, dataPublicacao
Extra
  • Filtro por autor: GET /posts?autor=...
#17 – Sistema de Feedbacks

API de Feedback

Registre feedbacks de usuários sobre um produto.

Recurso principal
  • /feedbacks
Campos sugeridos
  • id, usuario, comentario, nota (1–5)
Extra
  • Filtro por nota mínima: GET /feedbacks?notaMin=4
#18 – Sistema de Inscrição em Eventos

API de Inscrições

Gerencie inscrições de pessoas em um evento.

Recurso principal
  • /inscricoes
Campos sugeridos
  • id, nome, email, tipoIngresso, pago
Extra
  • Filtro por pago: GET /inscricoes?pago=true
#19 – Sistema de Cupons de Desconto

API de Cupons

Cadastre cupons promocionais.

Recurso principal
  • /cupons
Campos sugeridos
  • id, codigo, descontoPercentual, ativo, validade
Extra
  • Filtro por ativos: GET /cupons?ativo=true
#20 – Sistema de Playlist de Músicas

API de Músicas

Gerencie músicas de uma playlist.

Recurso principal
  • /musicas
Campos sugeridos
  • id, titulo, artista, duracaoSegundos, genero
Extra
  • Filtro por gênero: GET /musicas?genero=rock
#21 – Sistema de Chamados de Suporte

API de Chamados

Registre chamados de suporte técnico.

Recurso principal
  • /chamados
Campos sugeridos
  • id, titulo, descricao, prioridade, status
Extra
  • Filtro por prioridade: GET /chamados?prioridade=alta
#22 – Sistema de Aluguel de Bicicletas

API de Bicicletas

Gerencie um pequeno sistema de aluguel de bikes.

Recurso principal
  • /bicicletas
Campos sugeridos
  • id, modelo, tamanho, disponivel, precoHora
Extra
  • Filtro por disponíveis: GET /bicicletas?disponivel=true
#23 – Sistema de Personagens de RPG

API de Personagens

Gerencie personagens de um jogo de RPG.

Recurso principal
  • /personagens
Campos sugeridos
  • id, nome, classe, nivel, pontosVida
Extra
  • Filtro por classe: GET /personagens?classe=mago
#24 – Sistema de Rotina de Treinos

API de Treinos

Cadastre treinos de academia.

Recurso principal
  • /treinos
Campos sugeridos
  • id, nome, grupoMuscular, duracaoMinutos, nivel
Extra
  • Filtro por grupo muscular: GET /treinos?grupoMuscular=pernas
#25 – Sistema de Receitas de Culinária

API de Receitas

Gerencie receitas gastronômicas.

Recurso principal
  • /receitas
Campos sugeridos
  • id, titulo, ingredientes (texto), tempoMinutos, nivelDificuldade
Extra
  • Filtro por tempo máximo: GET /receitas?tempoMax=30
#26 – Sistema de Pontuações de Jogos

API de Rankings

Cadastre rankings de jogadores.

Recurso principal
  • /scores
Campos sugeridos
  • id, jogador, pontos, jogo, data
Extra
  • Filtro por jogo: GET /scores?jogo=...
#27 – Sistema de Animais para Adoção

API de Adoção

Gerencie animais disponíveis para adoção.

Recurso principal
  • /animais
Campos sugeridos
  • id, nome, especie, idade, adotado
Extra
  • Filtro por não adotados: GET /animais?adotado=false
#28 – Sistema de Notícias

API de Notícias

Cadastre notícias de um portal simples.

Recurso principal
  • /noticias
Campos sugeridos
  • id, titulo, conteudo, categoria, dataPublicacao
Extra
  • Filtro por categoria: GET /noticias?categoria=tecnologia
#29 – Sistema de Inscritos em Curso Online

API de Alunos de Curso

Gerencie inscrições em um curso online.

Recurso principal
  • /inscritos
Campos sugeridos
  • id, nome, email, progresso (%)
Extra
  • Filtro por progresso mínimo: GET /inscritos?progressoMin=50
#30 – Sistema de Desafios de Programação

API de Desafios

Cadastre desafios de programação com dificuldade.

Recurso principal
  • /desafios
Campos sugeridos
  • id, titulo, descricao, dificuldade, linguagem
Extra
  • Filtro por dificuldade: GET /desafios?dificuldade=avancado
#31 – Sistema de Rotas de Viagem

API de Viagens

Gerencie pacotes de viagem.

Recurso principal
  • /viagens
Campos sugeridos
  • id, destino, duracaoDias, preco, tipo (nacional, internacional)
Extra
  • Filtro por tipo: GET /viagens?tipo=nacional
#32 – Sistema de Objetivos pessoais

API de Metas

Gerencie metas pessoais do usuário.

Recurso principal
  • /metas
Campos sugeridos
  • id, titulo, descricao, prazo, concluida
Extra
  • Filtro por concluídas: GET /metas?concluida=true

3. Checklist para Entrega