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