Sistema de punto de venta desarrollado con Ionic/Angular (Frontend) y Laravel (Backend) para gestión de vales y transacciones.
Antes de comenzar, asegúrate de tener instalado:
- Node.js (v16 o superior) y npm
- PHP (v8.0 o superior)
- Composer (gestor de dependencias de PHP)
- Git
git clone https://github.com/vicentearaya/app.git
cd app# Navegar a la carpeta del frontend
cd app
# Instalar dependencias
npm install
# Iniciar servidor de desarrollo
npm start
# o alternativamente:
ionic serveEl frontend estará disponible en: http://localhost:4200
# Navegar a la carpeta del backend
cd primeroproyectolaravel
# Instalar dependencias de PHP
composer installEl proyecto está configurado para usar SQLite por defecto (más fácil para desarrollo).
# Crear archivo de base de datos SQLite (si no existe)
touch database/database.sqliteSi prefieres usar MySQL, edita el archivo .env:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nombre_base_datos
DB_USERNAME=tu_usuario
DB_PASSWORD=tu_contraseña# Ejecutar migraciones y poblar la base de datos con datos de prueba
php artisan migrate:fresh --seedEsto creará las tablas y agregará:
- 15 productos de ejemplo (bebidas, desayunos, almuerzos, cenas, postres)
- 4 vales de prueba (VALE001, VALE002, VALE003, VALE004)
# Iniciar servidor Laravel
php artisan serve --host=0.0.0.0 --port=8000El backend estará disponible en: http://localhost:8000
La API estará disponible en: http://localhost:8000/api/v1
app/
├── src/
│ ├── app/
│ │ ├── caja/ # Punto de venta
│ │ ├── home/ # Página principal
│ │ ├── login/ # Login
│ │ ├── totem/ # Solicitar vale
│ │ ├── reportes/ # Reportes
│ │ ├── models/ # Modelos TypeScript
│ │ └── services/ # Servicios API
│ └── environments/ # Configuración de entornos
│
primeroproyectolaravel/
├── app/
│ ├── Http/
│ │ └── Controllers/
│ │ └── Api/ # Controladores API
│ └── Models/ # Modelos Eloquent
├── database/
│ ├── migrations/ # Migraciones de BD
│ └── seeders/ # Seeders con datos de prueba
└── routes/
└── api.php # Rutas de la API
GET /api/v1/productos- Listar todos los productosGET /api/v1/productos?categoria=bebida- Filtrar por categoríaGET /api/v1/productos/{id}- Obtener un productoPOST /api/v1/productos- Crear productoPUT /api/v1/productos/{id}- Actualizar productoDELETE /api/v1/productos/{id}- Eliminar producto
GET /api/v1/vales- Listar todos los valesGET /api/v1/vales/{id}- Obtener un valePOST /api/v1/vales- Crear valePOST /api/v1/vales/buscar- Buscar vale por códigoGET /api/v1/vales/user/{userId}- Obtener vales de un usuarioPUT /api/v1/vales/{id}- Actualizar valeDELETE /api/v1/vales/{id}- Eliminar vale
GET /api/v1/transacciones- Listar todas las transaccionesGET /api/v1/transacciones/{id}- Obtener una transacciónPOST /api/v1/transacciones- Crear transacciónGET /api/v1/transacciones/vale/{valeId}- Obtener transacciones de un valeDELETE /api/v1/transacciones/{id}- Eliminar transacción
- VALE001: $10,000 disponibles
- VALE002: $10,000 disponibles (de $15,000)
- VALE003: $20,000 disponibles
- VALE004: Usado (sin saldo)
- Bebidas: Café Americano ($1,500), Café con Leche ($1,800), Jugo Natural ($2,000), Agua Mineral ($1,000)
- Desayunos: Huevos Revueltos ($3,500), Pan con Palta ($2,500), Avena con Frutas ($3,000)
- Almuerzos: Sandwich Mixto ($4,000), Ensalada César ($4,500), Pollo a la Plancha ($5,500)
- Cenas: Pasta Carbonara ($5,000), Pizza Margherita ($6,000)
- Postres: Tarta de Manzana ($2,500), Helado de Vainilla ($2,000), Brownie con Helado ($3,000)
# Desde la carpeta del frontend
cd app
npm test- Ionic 8 - Framework UI
- Angular 20 - Framework TypeScript
- TypeScript - Lenguaje de programación
- RxJS - Programación reactiva
- Laravel 9 - Framework PHP
- SQLite - Base de datos (desarrollo)
- Eloquent ORM - ORM de Laravel
- CORS: El backend está configurado para aceptar peticiones desde
http://localhost:4200 - Base de Datos: Por defecto usa SQLite, pero puedes cambiar a MySQL editando el
.env - Puertos:
- Frontend:
4200 - Backend:
8000
- Frontend:
- Ambiente: El frontend está configurado para conectarse a
http://localhost:8000/api/v1
- Verifica que el backend esté corriendo en
http://localhost:8000 - Revisa la consola del navegador (F12) para ver errores de conexión
- Asegúrate de que CORS esté configurado correctamente
- El proyecto usa SQLite por defecto, no MySQL
- Si quieres usar MySQL, configura las credenciales en
.env
- Asegúrate de que el archivo
database/database.sqliteexista - Verifica los permisos de escritura en la carpeta
database
Este proyecto es de código abierto.