Skip to content

Repository files navigation

⛽ EPSDC Noel Rodríguez

Sistema de Gestión de Distribución de Gas / Gas Distribution Management System

PHP MySQL Bootstrap jQuery WebSocket Composer

Estado License Venezuela


🇪🇸 Español | 🇬🇧 English below


🇪🇸 Versión en Español

📌 Descripción General

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.


🏗️ Arquitectura del Proyecto

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)

✨ Funcionalidades Principales

📋 Gestión de Solicitudes

  • 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

🏭 Control de Inventario

  • 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

👥 Administración de Usuarios y Accesos

  • 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

🔔 Notificaciones en Tiempo Real

  • Servidor WebSocket con Workerman para push notifications
  • Panel de notificaciones por usuario
  • Bitácora de actividades para auditoría

📊 Reportes y Estadísticas

  • 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

🔐 Seguridad

  • 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

🛠️ Stack Tecnológico

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

🚀 Instalación y Configuración

Prerrequisitos

  • 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.)

Pasos

# 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

👤 Actores Predeterminados en el Sistema

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

👨‍💻 Autores

Gustavo Heredia

Wilker Alburjas

Jhon Arrieche


🇬🇧 English Version

📌 Overview

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.


🏗️ Project Architecture

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)

✨ Key Features

📋 Request Management

  • 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

🏭 Inventory Control

  • Real-time monitoring of gas stock in the warehouse
  • Incoming gas with full history
  • Gas cylinder price management with change history

👥 User & Access Management

  • Full CRUD for users, employees, and drivers
  • Granular roles and permissions system
  • Community council and representative management
  • User profile management with photo upload

🔔 Real-Time Notifications

  • WebSocket server powered by Workerman for push notifications
  • Per-user notification panel
  • Activity audit log

📊 Reports & Statistics

  • Dashboard with key operational metrics
  • PDF report generation (FPDF)
  • Statistics on requests, deliveries, and communities
  • Driver attendance tracking

🔐 Security

  • 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

🛠️ Tech Stack

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

🚀 Setup & Installation

Prerequisites

  • 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.)

Steps

# 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

👤 Predetermined Actors in the System

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

👨‍💻 Authors

Gustavo Heredia

Wilker Alburjas

Jhon Arrieche


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 🇻🇪

About

Sistema universitario de gestión administrativa y control operativo para la empresa de distribución de gas EPSDC Noel Rodríguez, con actualización de datos en tiempo real.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages