API REST simples para gerenciamento de notas com Node.js, Fastify, TypeScript e Prisma.
- Node.js - Runtime JavaScript
- Fastify - Framework web
- TypeScript - Tipagem estática
- Prisma - ORM
- Zod - Validação de dados
- PostgreSQL - Banco de dados
- Docker - Containerização
git clone https://github.com/PedrFelip/notes-api.git
cd notes-api
npm installCrie um arquivo .env baseado no exemplo abaixo (ou copie o .env.example):
cp .env.example .envConteúdo do .env.example:
POSTGRES_USER=notes_user
POSTGRES_PASSWORD=notes_123
POSTGRES_DB=notes_db
# para o prisma
DATABASE_URL="postgresql://notes_user:notes_123@localhost:5432/notes_db?schema=public"docker-compose up -dnpx prisma generate
npx prisma migrate devnpm startServidor rodando em: http://localhost:3000
POST /api/notes{
"titulo": "Minha nota",
"conteudo": "Conteúdo da nota"
}GET /api/notes/read/:idPATCH /api/notes/update/:id{
"titulo": "Novo título",
"conteudo": "Novo conteúdo"
}DELETE /api/notes/delete/:idGET /src/
├── modules/
│ └── notes/
│ ├── dto/notes.schema.ts # Validações Zod
│ ├── note.controller.ts # Handlers HTTP
│ ├── note.service.ts # Lógica de negócio
│ ├── note.repository.ts # Acesso ao banco
│ └── notes.routes.ts # Rotas
└── index.ts # Servidor
{
id: string // UUID
titulo: string // 2-100 caracteres
conteudo: string // 10-1000 caracteres
createdAt: Date
updatedAt: Date
}- Título: 2 a 100 caracteres
- Conteúdo: 10 a 1000 caracteres
- ID: deve ser UUID válido
- Títulos duplicados são automaticamente numerados
Desenvolvido por Pedro Felipe