Executando verificação de segurança...
1

Apresentando: Notes API - Uma API REST modular e minimalista em Node.js

Olá a todos,

Gostaria de compartilhar com a comunidade o projeto Notes API, uma implementação simples e modular de uma API REST para gerenciamento de notas (CRUD), desenvolvida utilizando Node.js e Express.js.

O foco principal deste projeto é demonstrar uma estrutura de código organizada e escalável em pequenos contextos, seguindo boas práticas de arquitetura. Utilizamos uma divisão clara de responsabilidades entre Controllers, Services, Middlewares e uma camada de Database, garantindo que cada parte do sistema tenha uma única função bem definida.

Para manter o projeto leve e de fácil execução, escolhemos o SQLite como banco de dados, ideal para projetos que priorizam a simplicidade de setup e a portabilidade. Além disso, toda a validação de dados de entrada é feita de forma robusta e declarativa com a biblioteca Zod.

Estrutura e Boas Práticas Adotadas

A arquitetura do projeto foi desenhada para ser limpa e intuitiva:

  • Validação rigorosa com Zod antes de qualquer operação de negócio.
  • Design RESTful utilizando corretamente os verbos HTTP (GET, POST, PUT, PATCH, DELETE) sobre o recurso /notes.
  • Tratamento de erros customizado, garantindo que o cliente sempre receba um retorno claro, com códigos de status HTTP e mensagens padronizadas.
  • Cobertura de testes utilizando Mocha e Supertest, essenciais para garantir a funcionalidade da API.

Como Instalar e Rodar

Para quem tiver interesse em explorar a estrutura ou utilizá-la como base para um projeto pessoal:

Pré-requisitos: Node.js (versão 18+)

  1. Clone o projeto:
    git clone https://github.com/rickferrdev/notes-api
    cd notes-api
    
  2. Instale as dependências:
    npm install
    
  3. Inicie a API em modo de desenvolvimento:
    npm run watch
    

Exemplo de Uso (CRUD Básico)

Com a API rodando em http://localhost:8080, você pode interagir com ela usando qualquer cliente HTTP (como Insomnia, Postman ou curl):

1. Criar uma Nova Nota (POST)

curl -X POST http://localhost:8080/notes \
-H "Content-Type: application/json" \
-d '{"title": "Ideias para o TabNews", "content": "Estruturar o próximo post sobre testes unitários."}'

2. Obter a Nota Recém-Criada (GET)
(Assumindo que o ID retornado na criação foi 1)

curl http://localhost:8080/notes/1

3. Atualizar Parcialmente (PATCH)

curl -X PATCH http://localhost:8080/notes/1 \
-H "Content-Type: application/json" \
-d '{"title": "Ideias para o TabNews (Revisado)"}'

Sinta-se à vontade para analisar a estrutura, sugerir melhorias ou utilizá-la em seus próprios aprendizados.

Obrigado pela leitura e por prestigiarem o projeto!

Carregando publicação patrocinada...