尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Sistema de gestion para restaurantes: mesas, pedidos, cocina, caja, stock y reportes con permisos por rol. Laravel 10 + PostgreSQL + Docker, arquitectura por capas y API REST documentada. Demo en vivo: admin/admin123
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Aplicación web para la operación completa de un restaurante: salón, pedidos, comandas de cocina, caja, stock, reportes y permisos por rol.
| Usuario | Contraseña | Rol |
|---|---|---|
admin | admin123 | Administrador (acceso completo) |
Entorno de demostración con datos de prueba. Podés crear, editar y borrar libremente.
| Salón de mesas | Pedido |
|---|---|
| Caja | Reportes |
|---|---|
| Capa | Ubicación | Responsabilidad |
|---|---|---|
| Controladores HTTP (API) | app/Http/Controllers/Api/ | Request/response JSON, autorización (Gate / policies), delegación al servicio |
| Controladores web (legado gradual) | app/Http/Controllers/ | Vistas Blade, Livewire; se documentan puntos de entrada hacia la nueva API |
| Servicios | app/Services/ | Reglas de negocio; ProductService, UserService, ClientService, OrderRestService orquestan repositorios y, en pedidos, reutilizan OrderService / Eloquent para no romper observers y notificaciones |
| Repositorios | app/Repositories/ | Acceso a datos con PDO y sentencias preparadas |
| Modelos | app/Models/ | Entidades Eloquent (persistencia web y compatibilidad) |
| Requests | app/Requests/Api/ | Validación y saneo de entrada API |
| Núcleo | app/Core/ | Database (singleton PDO), Logger, Container (DI mínima), ApiRouter (tabla método+path) |
routes/api.php
→ middleware auth:sanctum
→ ApiRouter::sharedRestRoutes() (products, orders, clients)
→ role:ADMIN,GERENTE → ApiRouter::adminUserRestRoutes()
password_hash / verificación compatible con el stack Laravel.app/Requests/Api/*.strip_tags, filter_var en emails donde aplica).mbstring, openssl, pdo_mysql, tokenizer, xml, ctype, json, bcmath)git clone <repo> && cd restaurante-laravelcomposer installnpm installcp .env.example .env (o copiar desde tu plantilla; configurar APP_KEY, DB, etc.)php artisan key:generate.envphp artisan migrate --seedphp artisan serve y en otra terminal npm run devServicios: nginx (puerto 8080), PHP-FPM (app), MySQL 8.
docker compose up -d --build
Dentro del contenedor app (o en el host con la misma .env):
composer install
cp .env.example .env # ajustar DB_HOST=mysql, DB_DATABASE=restaurante, etc.
php artisan key:generate
php artisan migrate --seed
http://localhost:808033060 (usuario laravel / contraseña secret según docker-compose.yml).Variables útiles en compose (ya definidas en docker-compose.yml para el servicio app):
DB_HOST=mysqlDB_DATABASE=restauranteDB_USERNAME=laravelDB_PASSWORD=secretAutenticación: Laravel Sanctum (token Bearer o cookie según configuración SPA).
Cabecera recomendada: Accept: application/json.
/api)| Método | Ruta | Descripción |
|---|---|---|
| GET | /api/products | Lista productos del restaurante |
| GET | /api/products/{id} | Detalle |
| POST | /api/products | Alta (políticas: rol con permiso de creación) |
| PUT/PATCH | /api/products/{id} | Actualización |
| DELETE | /api/products/{id} | Baja (no permite si hay ítems en pedidos) |
| GET/POST | /api/orders | Lista / crear (crear usa OrderService interno) |
| GET/PUT/PATCH/DELETE | /api/orders/{id} | CRUD acotado por policies |
| GET/POST | /api/clients | Clientes CRM (clients); requiere migración 2026_03_29_000001 |
| GET/PUT/PATCH/DELETE | /api/clients/{id} | |
| GET/POST | /api/users | Solo ADMIN y GERENTE (middleware role) |
| GET/PUT/PATCH/DELETE | /api/users/{id} |
Respuesta típica: { "success": true, "data": ... } o errores de validación 422.
| Método | Ruta | Descripción |
|---|---|---|
| POST | /api/auth/select-branch | Elige la sucursal activa (restaurant_id); devuelve un par de tokens atado a ella. login y me informan branches y requires_branch_selection |
| GET | /api/tables?sort= | Mesas en el mismo orden que la web: number (natural, por defecto), status o capacity |
| GET/POST | /api/stock/reset | Puesta a punto: vista previa y ejecución (permiso stock.reset, confirmación PUESTA A PUNTO) |
| GET | /api/kitchen/board | Tablero de cocina de solo lectura (pedidos + ítems + server_time) |
Los ítems de pedido aceptan variant_id: si el producto tiene variantes activas es obligatorio y define el precio de la línea.
GET /api/products devuelve variants en cada producto.
Pizza con control de stock y una variante por sabor (Napolitana $20.000, Jamón y morrones $24.000).
Cada venta descuenta una pizza y, si la variante tiene insumos propios, también esos insumos.Fernet con coca, medida del vaso 500 cc, receta 30% Fernet + 70% Coca.
Cada venta descuenta 150 y 350 de cada insumo (los insumos se llevan en la misma unidad que el vaso: ml/cc)./api/v1/*Se mantienen rutas anteriores (tables, orders parcial, products lectura extendida) bajo /api/v1/....
GET /api/user (Sanctum)storage/logs/app.log (clase App\Core\Logger).storage/logs/laravel.log.Requiere MySQL/MariaDB con una base testing aparte (las migraciones no corren en SQLite).
Guía completa, variables y qué cubre cada archivo: docs/TESTING.md.
DB_DATABASE=testing DB_USERNAME=test DB_PASSWORD=test php artisan test
./vendor/bin/pintvendor/bin/phpstan analyse (también en el CI)composer auditAñadí la carpeta docs/screenshots/ para que puedas versionar capturas (dashboard, pedidos, caja, respuestas de la API en Postman/Insomnia). Sustituí los placeholders por imágenes reales cuando quieras publicar la documentación.
.env, permisos de storage/ y bootstrap/cache/, php artisan key:generate.api.clients: ejecutar php artisan migrate tras actualizar el código.Si cambian reglas de roles o flujos de pedido, actualizá policies (app/Policies) y este README para mantener coherencia entre web y API.