01ecf06215114dca1a536663a37c5030c5af530b
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
# 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
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) |
Description
Languages
TypeScript
86.4%
CSS
13.2%
HTML
0.4%