feat: sistema GastroBar PDV completo
- Backend: Fastify + Prisma/SQLite com autenticacao JWT - CRUD completo: usuarios, categorias, produtos, comandas - Sistema de comandas com itens, status, pagamento - Controle de estoque (entrada/saida automatica) - Relatorios e dashboard com KPIs - Notificacoes sonoras na cozinha - Frontend: SPA vanilla TS com tema dark glassmorphism - Mobile-first com bottom-sheet e cards compactos - Busca de comandas por periodo - Modal de detalhes com secao editavel colapsavel
This commit is contained in:
156
README.md
Normal file
156
README.md
Normal file
@@ -0,0 +1,156 @@
|
||||
# Gastrobar PDV
|
||||
|
||||
Sistema de PDV (Ponto de Venda) e gerenciamento para gastrobar/restaurante. Gerencia comandas de clientes, pedidos, cardápio de produtos, usuários com diferentes perfis de acesso e fluxo de preparo na cozinha/bar.
|
||||
|
||||
## Stack
|
||||
|
||||
### Backend
|
||||
- **Runtime:** Node.js + TypeScript
|
||||
- **Framework:** Fastify
|
||||
- **ORM:** Prisma
|
||||
- **Banco:** SQLite (desenvolvimento)
|
||||
- **Validação:** Zod
|
||||
- **Auth:** JWT (@fastify/jwt) + bcrypt
|
||||
|
||||
### Frontend
|
||||
- **Bundler:** Vite
|
||||
- **Linguagem:** TypeScript vanilla (sem framework)
|
||||
- **Estilo:** CSS customizado com dark theme e glassmorphism
|
||||
|
||||
## Funcionalidades
|
||||
|
||||
- **Autenticação JWT** com controle por roles (ADMIN, CAIXA, GARÇOM, COZINHA, BARMAN)
|
||||
- **Painel de Cozinha/Bar** com atualização em tempo real e notificações sonoras
|
||||
- **Gestão de Comandas** com formas de pagamento, desconto, acréscimo e taxa de serviço
|
||||
- **Caixa/Checkout** com busca avançada e seleção de pagamento
|
||||
- **Cardápio** com gestão de produtos e categorias, controle de estoque
|
||||
- **Equipe** com gestão de usuários e redefinição de senha
|
||||
- **Relatórios** de vendas por período
|
||||
- **Dashboard** com KPIs para administradores
|
||||
|
||||
## Estrutura do Projeto
|
||||
|
||||
```
|
||||
app_ces/
|
||||
├── prisma/ # Schema do banco e seed
|
||||
│ ├── schema.prisma
|
||||
│ └── seed.ts
|
||||
├── src/ # Backend (API)
|
||||
│ ├── server.ts
|
||||
│ ├── lib/prisma.ts
|
||||
│ ├── middlewares/
|
||||
│ ├── controllers/
|
||||
│ ├── services/
|
||||
│ ├── schemas/
|
||||
│ └── routes/
|
||||
└── web/ # Frontend (SPA)
|
||||
└── src/
|
||||
├── main.ts
|
||||
├── api.ts
|
||||
├── utils.ts
|
||||
└── views/
|
||||
```
|
||||
|
||||
## Como Rodar
|
||||
|
||||
### Backend
|
||||
|
||||
```bash
|
||||
# Instalar dependências
|
||||
npm install
|
||||
|
||||
# Gerar cliente Prisma e aplicar schema
|
||||
npx prisma db push
|
||||
|
||||
# Popular banco com dados iniciais
|
||||
npm run db:seed
|
||||
|
||||
# Iniciar servidor de desenvolvimento
|
||||
npm run dev
|
||||
```
|
||||
|
||||
O servidor estará disponível em `http://localhost:3333`.
|
||||
|
||||
### Frontend
|
||||
|
||||
```bash
|
||||
cd web
|
||||
|
||||
# Instalar dependências
|
||||
npm install
|
||||
|
||||
# Iniciar dev server
|
||||
npm run dev
|
||||
```
|
||||
|
||||
O frontend estará disponível em `http://localhost:5173`.
|
||||
|
||||
## Rotas da API
|
||||
|
||||
### Autenticação
|
||||
| Método | Rota | Descrição |
|
||||
|--------|------|-----------|
|
||||
| POST | `/api/auth/login` | Login e geração de JWT |
|
||||
| PATCH | `/api/auth/senha` | Alterar própria senha |
|
||||
|
||||
### Categorias
|
||||
| Método | Rota | Descrição | Permissão |
|
||||
|--------|------|-----------|-----------|
|
||||
| GET | `/api/categorias` | Listar categorias | Autenticado |
|
||||
| GET | `/api/categorias/:id` | Obter categoria | Autenticado |
|
||||
| POST | `/api/categorias` | Criar categoria | ADMIN |
|
||||
| PUT | `/api/categorias/:id` | Atualizar categoria | ADMIN |
|
||||
| DELETE | `/api/categorias/:id` | Deletar categoria | ADMIN |
|
||||
|
||||
### Produtos
|
||||
| Método | Rota | Descrição | Permissão |
|
||||
|--------|------|-----------|-----------|
|
||||
| GET | `/api/produtos` | Listar produtos | Autenticado |
|
||||
| GET | `/api/produtos/mais-vendidos` | Top produtos por vendas | Autenticado |
|
||||
| GET | `/api/produtos/busca` | Buscar produto por nome | Autenticado |
|
||||
| GET | `/api/produtos/baixo-estoque` | Produtos com estoque baixo | ADMIN |
|
||||
| GET | `/api/produtos/:id` | Obter produto | Autenticado |
|
||||
| POST | `/api/produtos` | Criar produto | ADMIN |
|
||||
| PUT | `/api/produtos/:id` | Atualizar produto | ADMIN |
|
||||
| DELETE | `/api/produtos/:id` | Deletar produto | ADMIN |
|
||||
|
||||
### Comandas
|
||||
| Método | Rota | Descrição | Permissão |
|
||||
|--------|------|-----------|-----------|
|
||||
| GET | `/api/comandas` | Listar/filtrar comandas | Autenticado |
|
||||
| POST | `/api/comandas` | Criar comanda | GARÇOM/CAIXA/ADMIN |
|
||||
| POST | `/api/comandas/:id/itens` | Adicionar item | GARÇOM/CAIXA/ADMIN |
|
||||
| PATCH | `/api/comandas/:id` | Atualizar comanda | GARÇOM/CAIXA/ADMIN |
|
||||
| POST | `/api/comandas/:id/pagar` | Pagar comanda | CAIXA/ADMIN |
|
||||
| DELETE | `/api/comandas/itens/:id` | Remover item | CAIXA/ADMIN |
|
||||
|
||||
### Painel Cozinha/Bar
|
||||
| Método | Rota | Descrição | Permissão |
|
||||
|--------|------|-----------|-----------|
|
||||
| GET | `/api/painel/itens` | Listar itens do painel | COZINHA/BARMAN/ADMIN |
|
||||
| PATCH | `/api/painel/itens/:id/status` | Atualizar status | COZINHA/BARMAN/ADMIN |
|
||||
|
||||
### Relatórios
|
||||
| Método | Rota | Descrição | Permissão |
|
||||
|--------|------|-----------|-----------|
|
||||
| GET | `/api/relatorios/vendas` | Vendas por período | ADMIN |
|
||||
| GET | `/api/relatorios/dashboard` | Dados do dashboard | ADMIN |
|
||||
|
||||
### Usuários
|
||||
| Método | Rota | Descrição | Permissão |
|
||||
|--------|------|-----------|-----------|
|
||||
| GET | `/api/usuarios` | Listar usuários | ADMIN |
|
||||
| POST | `/api/usuarios` | Criar usuário | ADMIN |
|
||||
| PATCH | `/api/usuarios/:id` | Atualizar usuário | ADMIN |
|
||||
| PATCH | `/api/usuarios/:id/senha` | Resetar senha | ADMIN |
|
||||
| DELETE | `/api/usuarios/:id` | Deletar usuário | ADMIN |
|
||||
|
||||
## Roles e Permissões
|
||||
|
||||
| Role | Acesso |
|
||||
|------|--------|
|
||||
| **ADMIN** | Acesso total ao sistema |
|
||||
| **CAIXA** | Comandas, checkout, pagamento |
|
||||
| **GARÇOM** | Criar/gerenciar comandas |
|
||||
| **COZINHA** | Painel de preparo (cozinha) |
|
||||
| **BARMAN** | Painel de preparo (bar) |
|
||||
Reference in New Issue
Block a user