Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
Al Toque는 레스토랑 전체를 관리하는 시스템으로, 좌석, 주문, 주방, 결제까지 지원합니다
Al Toque es un sistema para gestionar un restaurante completo —salón de mesas, pedidos, cocina, caja, stock y reportes— y también centros culturales, escuelas, talleres, mercados y nodos: inscripcione
비즈니스PHP · BladeGitHub @Smansilla98온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.