Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/er1ck122/pizzashop-api
Esse projeto foi desenvolvido com os ensinamentos do Diego Fernandes da Rocketseat, uma API para servir um painel de gerenciamento de pedidos, utilizando o runtime Bun, como alternativa ao Node.js. Além disso, como framework HTTP, foi utilizado o Elysia e para conexão com banco de dados, o ORM Drizzle.
https://github.com/er1ck122/pizzashop-api
Last synced: 9 days ago
JSON representation
Esse projeto foi desenvolvido com os ensinamentos do Diego Fernandes da Rocketseat, uma API para servir um painel de gerenciamento de pedidos, utilizando o runtime Bun, como alternativa ao Node.js. Além disso, como framework HTTP, foi utilizado o Elysia e para conexão com banco de dados, o ORM Drizzle.
- Host: GitHub
- URL: https://github.com/er1ck122/pizzashop-api
- Owner: ER1CK122
- Created: 2025-02-02T04:34:14.000Z (13 days ago)
- Default Branch: main
- Last Pushed: 2025-02-02T04:54:52.000Z (13 days ago)
- Last Synced: 2025-02-02T05:25:01.985Z (13 days ago)
- Language: TypeScript
- Homepage:
- Size: 0 Bytes
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# PizzaShop API 🍕
API para gerenciamento de restaurantes e pedidos, desenvolvida como solução backend para um sistema de delivery de pizzas. Fornece endpoints para operações CRUD, autenticação segura, métricas de negócio e integração com banco de dados relacional.
## Funcionalidades Principais
### 🛠️ Gestão de Pedidos
- Fluxo completo de pedidos (criação, aprovação, entrega, cancelamento)
- Atualização de status em tempo real
- Histórico de pedidos com filtros e paginação
- Cálculo de valores e totais### 🔐 Autenticação
- Magic Links para login sem senha
- Controle de acesso baseado em roles (gerente/cliente)
- Proteção de rotas com JWT
- Sistema de logout seguro### 📊 Business Intelligence
- Métricas em tempo real:
- Receita diária/mensal
- Pedidos ativos
- Produtos populares
- Taxa de cancelamento
- Relatórios periódicos### 🏢 Gestão do Restaurante
- Cadastro de estabelecimento
- Atualização de informações
- Controle de produtos do cardápio
- Gerenciamento de equipe## Stack Tecnológica
**Runtime:**
[](https://bun.sh/)
**Principais tecnologias:**
- **Bun** - Runtime JavaScript de alta performance
- **Elysia** - Framework web moderno
- **Drizzle ORM** - Interface type-safe para PostgreSQL
- **PostgreSQL** - Banco de dados relacional
- **Zod** - Validação de schemas
- **Day.js** - Manipulação de datas
- **Nodemailer** - Envio de emails## Estrutura do Projeto
```
pizzashop-api/
├── src/
│ ├── db/ # Configuração do banco de dados
│ │ ├── schema/ # Schemas do Drizzle ORM
│ │ └── ... # Migrações e seeds
│ │
│ ├── http/ # Camada HTTP
│ │ ├── auth/ # Autenticação JWT
│ │ ├── errors/ # Handlers de erro
│ │ └── routes/ # Endpoints da API
│ │
│ └── lib/ # Utilitários
└── drizzle/ # Migrações do banco
```## Requisitos
- Bun >= 1.0.0
- PostgreSQL >= 15
- Node.js >= 18 (apenas para dependências)## Instalação
```bash
# Clonar repositório
git clone https://github.com/seu-usuario/pizzashop-api.git
cd pizzashop-api# Instalar dependências
bun install# Configurar variáveis de ambiente (criar .env)
cp .env.example .env# Executar migrações do banco
bun run migrate# Popular banco com dados de teste (opcional)
bun run seed# Iniciar servidor em modo desenvolvimento
bun run dev
```## Variáveis de Ambiente
| Variável | Obrigatório | Descrição |
|--------------------|-------------|------------------------------------|
| DATABASE_URL | Sim | URL de conexão do PostgreSQL |
| API_BASE_URL | Sim | URL base da API |
| AUTH_REDIRECT_URL | Sim | URL para redirecionamento de login |## Endpoints Principais
### Autenticação
- `POST /authenticate` - Envia magic link
- `GET /auth-links/authenticate` - Valida código de autenticação### Pedidos
- `GET /orders` - Lista pedidos com filtros
- `GET /orders/:orderId` - Detalhes do pedido
- `PATCH /orders/:orderId/[action]` - Ações no pedido (approve, deliver, cancel, dispatch)### Métricas
- `GET /metrics/day-orders-amount` - Pedidos do dia
- `GET /metrics/month-receipt` - Receita mensal
- `GET /metrics/popular-products` - Produtos mais vendidos### Restaurante
- `POST /restaurants` - Cadastra novo restaurante
- `GET /managed-restaurant` - Dados do restaurante## Execução em Produção
```bash
# Build do projeto
bun run build# Iniciar em produção
bun run start
```## Contribuição
1. Faça fork do projeto
2. Crie sua feature branch (`git checkout -b feature/nova-feature`)
3. Commit suas mudanças (`git commit -m 'Adiciona nova feature'`)
4. Push para a branch (`git push origin feature/nova-feature`)
5. Abra um Pull Request## 👤 Autor
### Erick Nunes
[![LinkedIn](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/erck-nunes/)
[![GitHub](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/ER1CK122)---
Desenvolvido com 💙 por Erick Nunes