Skip to content

zegnhabi/AT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

91 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bus Ticketing System

Sistema web para la venta de boletos de autobuses. Permite buscar corridas por origen/destino/fecha, seleccionar asientos en un mapa visual, registrar pasajeros e imprimir boletos con código QR.

PHP Laravel PostgreSQL Bootstrap Docker Nginx jQuery GitHub

Ver historial completo de cambios en CHANGELOG.md


Stack Tecnológico

Componente v1 (legacy) v2 (moderno)
Backend PHP 5 + mysqli Laravel 11 (PHP 8.2)
Base datos MySQL + MyISAM PostgreSQL 16
ORM SQL manual Eloquent ORM + Migraciones
Frontend XHTML 1.0 + Bootstrap 2 HTML5 + Bootstrap 5.3
QR phpqrcode (archivo PNG) simple-qrcode (base64 inline)
i18n include() condicional Laravel Translation + JSON + DB
PWA Service Worker + Manifest
Contenedor Podman / Docker Compose
Servidor Apache / Heroku Nginx + PHP-FPM
CI/CD GitHub Actions → GHCR

Requisitos

  • PHP 8.2+
  • Composer 2.x
  • PostgreSQL 16
  • Podman o Docker (opcional, para contenedores)
  • Extensión PHP: gd, pdo_pgsql

Instalación

Con Podman / Docker (recomendado)

# 1. Clonar el repositorio
git clone <repo-url> AT
cd AT

# 2. Iniciar servicios (app + nginx + postgres)
podman-compose up -d

# 3. Ejecutar migraciones y sembrar datos demo
podman exec bus_ticketing_app php artisan migrate --seed

# 4. Abrir en navegador
xdg-open http://localhost:8080

Desarrollo local

cp .env.example .env
# Editar .env con credenciales de PostgreSQL

composer install
php artisan key:generate
php artisan migrate --seed
php artisan serve --host=0.0.0.0 --port=8080

Testing

touch database/database.sqlite
php artisan migrate --force
php vendor/bin/phpunit

Comandos útiles (Podman)

# Logs
podman-compose logs -f app

# Detener todo
podman-compose down

# Reset completo (borra volúmenes de datos)
podman-compose down -v && podman-compose up -d
podman exec bus_ticketing_app php artisan migrate --seed

# Acceder al contenedor
podman exec -it bus_ticketing_app bash

Funcionalidades

Público

  • Búsqueda de corridas por origen, destino y fecha (incluye paradas intermedias)
  • Selección de asientos en mapa visual (horizontal bus, 4 asientos por columna, 1-2 pisos)
  • Compra de 1 a 5 boletos con nombre de pasajero y correo electrónico
  • Envío de boletos por correo con QR incluido
  • Impresión de boletos con código QR
  • Compartir por WhatsApp y correo electrónico
  • PWA: instalable como app, funciona offline parcial
  • 4 idiomas: español, inglés, alemán, francés
  • Analytics: GA4 con eventos personalizados de funnel completo — búsqueda, selección de asientos, compras exitosas/fallidas

Admin (/admin/*) — requiere autenticación

  • Dashboard con KPIs (viajes/boletos/ingresos hoy, ocupación)
  • CRUD completo: choferes, autobuses, ciudades, viajes
  • Paradas intermedias por viaje
  • Corte de caja diario y arqueo por fechas (exportar CSV, imprimir)
  • Impresión y exportación CSV de lista de pasajeros por viaje
  • Cancelación de boletos con liberación de asientos
  • Personalización de marca: colores, logo, favicon, idiomas disponibles
  • Traducciones gestionadas desde BD con import de archivos PHP
  • Panel completamente localizado en 4 idiomas

Rutas

Método URI Controlador Descripción
GET / HomeController@index Página principal
GET /buscar HomeController@search Resultados de búsqueda
GET /elegir/{id} SeatController@select Mapa de asientos
POST /comprar SeatController@purchase Procesar compra
GET /imprimir TicketController@print Boletos + QR
GET /lang/{es|en|de|fr} LocaleController@switch Cambiar idioma
GET /validar ValidationController@index Validar boleto (folio)
POST /validar ValidationController@validate Resultado de validación

Estructura del Proyecto

AT/
├── app/
│   ├── Http/
│   │   ├── Controllers/
│   │   │   ├── Controller.php
│   │   │   ├── HomeController.php
│   │   │   ├── LocaleController.php
│   │   │   ├── SeatController.php
│   │   │   ├── TicketController.php
│   │   │   └── Admin/
│   │   │       ├── BrandingController.php
│   │   │       ├── BusController.php
│   │   │       ├── CityController.php
│   │   │       ├── DashboardController.php
│   │   │       ├── DriverController.php
│   │   │       └── TripController.php
│   │   └── Middleware/SetLocale.php
│   ├── Models/
│   │   ├── Bus.php
│   │   ├── Driver.php
│   │   ├── Ticket.php
│   │   ├── Translation.php
│   │   ├── Trip.php
│   │   └── TripStop.php
│   └── Providers/
│       ├── AppServiceProvider.php
│       └── TranslationServiceProvider.php
├── database/
│   ├── migrations/
│   │   ├── 0001_create_buses_table.php
│   │   ├── 0002_create_drivers_table.php
│   │   ├── 0003_create_trips_table.php
│   │   ├── 0004_create_tickets_table.php
│   │   ├── 0005_create_settings_table.php
│   │   ├── 0006_create_trip_stops_table.php
│   │   └── 0007_create_translations_table.php
│   └── seeders/
│       ├── DatabaseSeeder.php
│       ├── DriverSeeder.php
│       ├── BusSeeder.php
│       ├── TripSeeder.php
│       └── TranslationSeeder.php
├── docker/
│   ├── entrypoint-prod.sh
│   └── nginx.conf
├── resources/
│   ├── lang/
│   │   ├── de/messages.php
│   │   ├── en/messages.php
│   │   ├── es/messages.php
│   │   └── fr/messages.php
│   └── views/
│       ├── home.blade.php
│       ├── search.blade.php
│       ├── seats.blade.php
│       ├── tickets.blade.php
│       └── admin/
│           ├── layouts/app.blade.php
│           ├── dashboard.blade.php
│           ├── drivers/
│           ├── buses/
│           ├── trips/
│           ├── cities/
│           ├── branding/index.blade.php
│           └── cashier/
├── routes/
│   ├── web.php
│   ├── admin.php
│   └── console.php
├── public/
│   ├── manifest.json
│   ├── sw.js
│   └── images/
├── docker-compose.yml
├── Dockerfile
├── README.md
├── README_es.md
└── CHANGELOG.md

Licencia

MIT — Jose Ibanez (zegnhabi@gmail.com)

About

Sistema de Boletaje para Terminales de Autobuses/ Ticket System for Bus Terminals

Topics

Resources

License

Stars

3 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors

Languages