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:
2026-07-21 12:47:15 -03:00
commit 402ac776ac
55 changed files with 7403 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
import { FastifyInstance } from 'fastify';
import * as productController from '../controllers/product.controller';
import { authenticate, requireRoles } from '../middlewares/auth.middleware';
export async function productRoutes(app: FastifyInstance) {
app.get('/produtos', { preHandler: [authenticate] }, productController.listProductsController);
app.get('/produtos/mais-vendidos', { preHandler: [authenticate] }, productController.getTopProductsController);
app.get('/produtos/busca', { preHandler: [authenticate] }, productController.searchProductsController);
app.get('/produtos/baixo-estoque', { preHandler: [requireRoles(['ADMIN'])] }, productController.getLowStockProductsController);
app.get('/produtos/:id', { preHandler: [authenticate] }, productController.getProductController);
app.post('/produtos', { preHandler: [requireRoles(['ADMIN'])] }, productController.createProductController);
app.put('/produtos/:id', { preHandler: [requireRoles(['ADMIN'])] }, productController.updateProductController);
app.patch('/produtos/:id', { preHandler: [requireRoles(['ADMIN'])] }, productController.updateProductController);
app.delete('/produtos/:id', { preHandler: [requireRoles(['ADMIN'])] }, productController.deleteProductController);
}