Este repositório contém uma API completa para gerenciamento de drinks, ingredientes, estoque, pedidos e fornecedores, desenvolvida com Node.js/TypeScript, Express e Prisma.
A API de Drinks é uma solução completa para bares e estabelecimentos que trabalham com bebidas, permitindo o gerenciamento de:
- Drinks e suas receitas
- Ingredientes e controle de estoque
- Pedidos e atendimento
- Fornecedores e relações
- Categorias e unidades de medida
- Autenticação e autorização de usuários
A API foi desenvolvida seguindo os princípios SOLID, com uma arquitetura em camadas que separa claramente as responsabilidades entre controllers, services e repositories.
- Backend: Node.js, TypeScript, Express
- ORM: Prisma
- Banco de Dados: PostgreSQL
- Validação: Zod
- Autenticação: JWT
- Testes: Jest
- Infraestrutura: AWS (Lambda, API Gateway, RDS, Cognito)
- IaC: Terraform
api-drinks/
├── docs/ # Documentação
│ ├── architecture/ # Diagramas e descrições de arquitetura
│ ├── routes/ # Documentação das rotas da API
│ └── examples/ # Exemplos de payloads
├── prisma/ # Configuração do Prisma e schemas
├── src/ # Código-fonte
│ ├── config/ # Configurações da aplicação
│ ├── controllers/ # Controllers da API
│ ├── dtos/ # Data Transfer Objects
│ ├── errors/ # Classes de erro
│ ├── interfaces/ # Interfaces e tipos
│ ├── middlewares/ # Middlewares Express
│ ├── repositories/ # Repositories para acesso ao banco
│ ├── routes/ # Definição de rotas
│ ├── services/ # Serviços com lógica de negócio
│ ├── utils/ # Utilitários
│ ├── lambda.ts # Ponto de entrada para AWS Lambda
│ └── main.ts # Ponto de entrada da aplicação
├── terraform/ # Configuração de infraestrutura AWS
└── tests/ # Testes automatizados
├── unit/ # Testes unitários
└── integration/ # Testes de integração
- Node.js 18+
- PostgreSQL
- AWS CLI (para deploy)
- Terraform (para infraestrutura)
-
Clone o repositório:
git clone https://github.com/DiogoSis/api-drinks.git cd api-drinks -
Instale as dependências:
npm install
-
Configure as variáveis de ambiente:
cp .env.example .env # Edite o arquivo .env com suas configurações -
Execute as migrações do banco de dados:
npx prisma migrate dev
-
Inicie o servidor de desenvolvimento:
npm run dev
# Testes unitários
npm run test:unit
# Testes de integração
npm run test:integration
# Todos os testes
npm test-
Configure suas credenciais da AWS:
aws configure
-
Inicialize o Terraform:
cd terraform terraform init -
Crie um arquivo de variáveis:
cp terraform.tfvars.example terraform.tfvars # Edite o arquivo terraform.tfvars com suas configurações -
Planeje e aplique a infraestrutura:
terraform plan -out=tfplan terraform apply tfplan
-
Construa o projeto:
npm run build
-
Empacote para o Lambda:
npm run package
-
Faça o upload do pacote para o Lambda:
cd dist aws lambda update-function-code --function-name api-drinks-dev-auth --zip-file fileb://lambda.zip # Repita para cada função Lambda
A documentação completa da API está disponível na pasta docs/:
- Arquitetura: Diagramas e descrições da arquitetura do sistema
- Rotas: Documentação detalhada de todas as rotas da API
- Exemplos: Exemplos de payloads para as principais operações
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/nova-feature) - Faça commit das suas alterações (
git commit -m 'Adiciona nova feature') - Faça push para a branch (
git push origin feature/nova-feature) - Abra um Pull Request
Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE para detalhes.