🇪🇸 Español | 🇬🇧 English below
EPSDC Noel Rodríguez es un sistema web completo desarrollado como proyecto universitario para la empresa distribuidora de gas del mismo nombre, ubicada en el municipio Jiménez, estado Lara, Venezuela. El sistema digitaliza y automatiza toda la cadena operativa de distribución: desde la solicitud de abastecimiento por parte de los consejos comunales, hasta la recepción y entrega de cilindros de gas.
El objetivo principal es eliminar los procesos manuales, reducir errores administrativos y brindar visibilidad en tiempo real del estado de cada operación a todos los actores del proceso.
El proyecto sigue el patrón MVC (Modelo-Vista-Controlador) implementado de forma artesanal sobre PHP puro, con autoloading PSR-4 gestionado por Composer. La comunicación en tiempo real se maneja a través de un servidor WebSocket propio basado en Workerman.
EPSDC-Noel-Rodriguez/
│
├── 📁 controlador/ # Lógica de negocio y manejo de peticiones HTTP/AJAX
│ ├── solicitud.php # Gestión completa del ciclo de solicitudes
│ ├── entrega.php # Control de entregas a comunidades
│ ├── recepcion.php # Registro de recepciones de gas
│ ├── usuario.php # Administración de usuarios y roles
│ └── ... # +29 controladores adicionales
│
├── 📁 modelo/ # Capa de datos y acceso a BD (MySQL / PDO)
│ ├── solicitud.php # Modelo más robusto (~55KB de lógica)
│ ├── entrega.php # Gestión de entregas y asignaciones
│ ├── reporte.php # Generación de datos para reportes y PDF
│ ├── correo.php # Servicio de correos (PHPMailer)
│ └── ... # +30 modelos adicionales
│
├── 📁 vistas/ # Plantillas HTML con PHP (SSR)
│ ├── estadisticas.php # Dashboard con gráficas interactivas
│ ├── home.php # Panel de control principal
│ ├── manual-usuario.php # Manual de usuario completo (~96KB)
│ └── ... # +60 vistas adicionales
│
├── 📁 assets/js/ # Scripts del lado del cliente (AJAX / jQuery)
│ ├── solicitud-list.js # Lógica AJAX más compleja (~26KB)
│ ├── estadisticas.js # Gráficas y métricas (~29KB)
│ └── ... # +75 archivos JS
│
├── 📁 websocket/ # Servidor de notificaciones en tiempo real
│ ├── server.php # Servidor Workerman WebSocket
│ └── WsHelper.php # Helper para broadcast de eventos
│
├── 📁 config/helpers/ # Utilidades de seguridad
│ ├── csrf.php # Protección CSRF con tokens
│ ├── RateLimiter.php # Limitador de tasa de peticiones
│ └── LoginAttemptLimiter.php # Protección contra fuerza bruta
│
└── index.php # Front Controller único (enrutamiento central)
- Registro de solicitudes de abastecimiento por voceros comunales
- Adjuntar comprobantes de pago digitales
- Seguimiento del estado de la solicitud en tiempo real
- Validación y aprobación de pagos por el administrador
- Programación de recepciones y fechas de entrega
- Monitoreo del stock de gas en el almacén
- Registro de entradas de gas con historial completo
- Gestión de precios de bombonas con historial de cambios
- CRUD completo de usuarios, empleados y choferes
- Sistema de roles y permisos granulares
- Gestión de voceros comunales y sus consejos
- Perfil de usuario con actualización de datos y foto
- Servidor WebSocket con Workerman para push notifications
- Panel de notificaciones por usuario
- Bitácora de actividades para auditoría
- Dashboard con métricas clave de operación
- Exportación de reportes a PDF (FPDF)
- Estadísticas de solicitudes, entregas y comunidades
- Control de asistencia de choferes
- Protección CSRF en todos los formularios
- Rate Limiting con caché Symfony Cache
- Limitador de intentos de inicio de sesión (anti fuerza bruta)
- Recuperación de contraseña por correo electrónico (PHPMailer)
- Autenticación basada en sesiones PHP
| Capa | Tecnología |
|---|---|
| Backend | PHP 8.x |
| Base de Datos | MySQL + PDO |
| Servidor WebSocket | Workerman 5.x |
| Frontend | Bootstrap 5.3, jQuery 3.7, Font Awesome 6 |
| Comunicación Asíncrona | AJAX + jQuery |
| Generación de PDF | FPDF 1.86 |
| Correo Electrónico | PHPMailer 6.9 |
| Caché / Rate Limiting | Symfony Cache 7.2 |
| Variables de Entorno | vlucas/phpdotenv 5.6 |
| Autoloading | Composer PSR-4 |
| Tablas Interactivas | DataTables |
| Alertas UI | SweetAlert2 |
- PHP 8.0 o superior
- MySQL 5.7+ o MariaDB
- Composer
- Node.js + NPM (para dependencias de frontend)
- Servidor web (Apache / Nginx con XAMPP, Laragon, etc.)
# 1. Clonar el repositorio
git clone https://github.com/Gusthere/EPSDC-Noel-Rodriguez.git
cd EPSDC-Noel-Rodriguez
# 2. Instalar dependencias PHP
composer install
# 3. Instalar dependencias de frontend
npm install
# 4. Configurar variables de entorno
cp .env.example .env
# Editar .env con tus credenciales de BD y configuración de correo
# 5. Importar las bases de datos
# Importar los archivos SQL incluidos en /database/ a tu servidor MySQL
# 6. Iniciar el servidor WebSocket (en una terminal separada)
php websocket/server.php start
# 7. Acceder desde el navegador
# http://localhost/EPSDC-Noel-Rodriguez| Rol | Descripción |
|---|---|
| Administrador | Acceso total: gestión de usuarios, aprobaciones y configuración del sistema |
| Empleado | Gestión operativa de recepciones, entregas y almacén |
| Chofer | Registro de asistencia y visualización de entregas asignadas |
| Vocero Comunal | Registro de solicitudes y seguimiento del estado |
Gustavo Heredia
- GitHub: @Gusthere
Wilker Alburjas
- GitHub: @Wilker2504
Jhon Arrieche
- GitHub: @Kaygrem
EPSDC Noel Rodríguez is a full-featured web system developed as a university project for a gas distribution company of the same name, located in Jiménez Municipality, Lara State, Venezuela. The system digitizes and automates the entire operational supply chain: from gas requests submitted by community councils, to the reception and delivery of gas cylinders.
The main goal is to eliminate manual paperwork, reduce administrative errors, and provide real-time visibility of every operation's status to all actors involved in the process.
The project follows an MVC (Model-View-Controller) pattern implemented natively in pure PHP, with PSR-4 autoloading managed by Composer. Real-time communication is handled through a custom WebSocket server powered by Workerman.
EPSDC-Noel-Rodriguez/
│
├── 📁 controlador/ # Business logic and HTTP/AJAX request handling
├── 📁 modelo/ # Data layer and database access (MySQL / PDO)
├── 📁 vistas/ # PHP HTML templates (SSR)
├── 📁 assets/js/ # Client-side scripts (AJAX / jQuery)
├── 📁 websocket/ # Real-time notification server (Workerman)
├── 📁 config/helpers/ # Security utilities (CSRF, Rate Limiting)
└── index.php # Single Front Controller (central routing)
- Community council representatives register gas supply requests
- Attach digital payment receipts
- Real-time status tracking through the full approval workflow
- Payment validation and approval by administrators
- Reception and delivery date scheduling
- Real-time monitoring of gas stock in the warehouse
- Incoming gas with full history
- Gas cylinder price management with change history
- Full CRUD for users, employees, and drivers
- Granular roles and permissions system
- Community council and representative management
- User profile management with photo upload
- WebSocket server powered by Workerman for push notifications
- Per-user notification panel
- Activity audit log
- Dashboard with key operational metrics
- PDF report generation (FPDF)
- Statistics on requests, deliveries, and communities
- Driver attendance tracking
- CSRF protection on all forms
- Rate Limiting using Symfony Cache
- Login attempt limiter (anti-brute-force)
- Password recovery via email (PHPMailer)
- PHP session-based authentication
| Layer | Technology |
|---|---|
| Backend | PHP 8.x |
| Database | MySQL + PDO |
| WebSocket Server | Workerman 5.x |
| Frontend | Bootstrap 5.3, jQuery 3.7, Font Awesome 6 |
| Async Communication | AJAX + jQuery |
| PDF Generation | FPDF 1.86 |
| Email Service | PHPMailer 6.9 |
| Cache / Rate Limiting | Symfony Cache 7.2 |
| Environment Variables | vlucas/phpdotenv 5.6 |
| Autoloading | Composer PSR-4 |
| Interactive Tables | DataTables |
| UI Alerts | SweetAlert2 |
- PHP 8.0 or higher
- MySQL 5.7+ or MariaDB
- Composer
- Node.js + NPM (for frontend dependencies)
- Web server (Apache / Nginx via XAMPP, Laragon, etc.)
# 1. Clone the repository
git clone https://github.com/Gusthere/EPSDC-Noel-Rodriguez.git
cd EPSDC-Noel-Rodriguez
# 2. Install PHP dependencies
composer install
# 3. Install frontend dependencies
npm install
# 4. Configure environment variables
cp .env.example .env
# Edit .env with your database credentials and email settings
# 5. Import the databases
# Import the SQL files from /database/ into your MySQL server
# 6. Start the WebSocket server (in a separate terminal)
php websocket/server.php start
# 7. Access from your browser
# http://localhost/EPSDC-Noel-Rodriguez| Role | Description |
|---|---|
| Administrator | Full access: user management, approvals, and system configuration |
| Employee | Operational management of receptions, deliveries, and warehouse |
| Driver | Attendance registration and view of assigned deliveries |
| Community Representative | Submit supply requests and track their status |
Gustavo Heredia
- GitHub: @Gusthere
Wilker Alburjas
- GitHub: @Wilker2504
Jhon Arrieche
- GitHub: @Kaygrem
Proyecto de Ingenieria de Software para la obtencion del titulo de Ingeniero en Sistemas en Venezuela 🇻🇪
Software Engineering project for the obtention of the title of Systems Engineer in Venezuela 🇻🇪