Files
CES_SERVE_WEB/README.md
Welton Moura 402ac776ac 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
2026-07-21 12:47:15 -03:00

157 lines
5.0 KiB
Markdown

# 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) |