Uma API REST moderna construída com Fastify, TypeScript, e Prisma, fornecendo documentação automática via Swagger.
- Node.js (v20 ou superior)
- Docker e Docker Compose
- Git
git clone [URL_DO_SEU_REPOSITORIO]
cd [NOME_DO_DIRETORIO]Crie um ficheiro .env na raiz do projeto para o ambiente de produção:
POSTGRES_USER=seu_usuario
POSTGRES_PASSWORD=sua_senha
POSTGRES_DB=nome_do_banco# Iniciar em modo desenvolvimento com Docker
npm run docker:dev
# Parar os contentores de desenvolvimento
npm run docker:dev:down
# Ver logs dos contentores
npm run docker:logs# Iniciar em modo produção
npm run docker:prod
# Parar os contentores de produção
npm run docker:prod:down# Limpar volumes e contentores
npm run docker:clean
# Limpar todos os recursos Docker não utilizados
npm run docker:prune# Gerar cliente Prisma
npm run prisma:generate
# Executar migrações
npm run prisma:migrate├── src/
│ ├── server.ts # Configuração do servidor Fastify
│ └── routes/ # Rotas da API
├── prisma/
│ └── schema.prisma # Schema do Prisma
├── docker-compose.dev.yml # Configuração Docker para desenvolvimento
├── docker-compose.prod.yml # Configuração Docker para produção
└── Dockerfile # Configuração multi-stage do Docker
- Servidor Fastify com TypeScript
- Validação de tipos com Zod
- Documentação Swagger automática
- CORS configurado
- Gestão de erros centralizada
- Healthcheck endpoint
- Conteniorização com Docker
- ORM com Prisma
Após iniciar o servidor, aceda à documentação Swagger em:
http://localhost:3333/docs
GET /health: Verificação do estado do servidorGET /docs: Documentação Swagger- Outros endpoints disponíveis em
/api/*
Para produção, certifique-se de configurar as seguintes variáveis no .env:
POSTGRES_USER=seu_usuario
POSTGRES_PASSWORD=sua_senha
POSTGRES_DB=nome_do_bancoO projeto utiliza multi-stage builds para otimização:
- Desenvolvimento: Utilizando hot-reload
- Produção: Build otimizado e configurações de segurança
- Configuração CORS
- Validação de tipos com Zod
- Utilizador não-root no Docker
- Gestão de erros centralizada
- Certifique-se de ter as portas 3333 e 5432 disponíveis
- Em desenvolvimento, as alterações são refletidas automaticamente
- Em produção, é necessário rebuildar a imagem para aplicar alterações
Contribuições são bem-vindas! Por favor, crie um fork do projeto e submeta um PR com as suas alterações.
https://hub.docker.com/repository/docker/pedropereira32168/api-tipada-full/general