ParkingControl es un sistema integral de gestión de estacionamientos diseñado para optimizar el control de entradas y salidas de vehículos, la administración de espacios y la facturación automática mediante tarifas configurables.
El proyecto implementa una arquitectura Cliente-Servidor moderna, separando la lógica de presentación (Frontend) de la lógica de negocio, la cual reside híbrida entre el Backend y la Base de Datos (mediante Procedimientos Almacenados).
- Características Principales
- Tecnologías Utilizadas
- Arquitectura del Proyecto
- Pre-requisitos
- Instalación y Configuración
- Gestión de Espacios: Visualización en tiempo real del estado de los espacios (Libre, Ocupado, Reservado).
- Control de Tickets: Emisión de tickets de entrada con códigos únicos y cálculo automático de los montos al momento de la salida.
- Sistema de Tarifas: Tarifas configurables por tipo de vehículo (Sedan, SUV, Moto, etc.).
- Gestión de Usuarios y Roles: Sistema de autenticación con roles definidos (Admin, Supervisor, Operador).
- Seguridad: Encriptación de contraseñas (SHA256) manejada directamente a nivel de la base de datos.
- Reportes: Generación de reportes de ocupación e ingresos.
- React: Biblioteca principal para la interfaz de usuario.
- Vite: Empaquetador de módulos rápido para el entorno de desarrollo.
- Tailwind CSS: Framework de estilos utilitarios.
- Shadcn/ui: Componentes de interfaz reutilizables y accesibles.
- Node.js & Express: Servidor REST API.
- MySQL2: Driver optimizado para la conexión con la base de datos.
- Nodemon: Utilidad para el desarrollo ágil (hot-reload).
- MySQL: Motor de base de datos relacional.
- Stored Procedures: Lógica de negocio encapsulada en la BD para operaciones críticas (Pagos, Reservas, Auth).
El sistema prioriza la integridad de datos delegando operaciones transaccionales complejas a la base de datos:
- Frontend: Consume la API REST y gestiona el estado de la UI.
- Backend (Node/Express): Actúa como middleware, recibiendo peticiones, validando datos básicos y ejecutando
CALL sp_nombre_procedimientohacia MySQL. - Database: Ejecuta la lógica de negocio (cálculos, bloqueos, actualizaciones en cascada) asegurando consistencia ACID.
Antes de comenzar, asegúrate de tener instalado:
- Node.js (v18 o superior recomendado)
- MySQL Server (v8.0 o superior)
- Git
Sigue estos pasos en orden para levantar el proyecto localmente.
- Accede a tu gestor de base de datos (ej. MySQL Workbench).
- Ejecuta el script de estructura y datos iniciales:
- Archivo:
database/parkingcontrol_db.sql
- Archivo:
- Ejecuta el script de lógica de negocio (Procedimientos y Funciones):
- Archivo:
database/procesosyfunciones_parkingcontrol.sql
- Archivo:
Navega a la carpeta del servidor e instala las dependencias:
cd backend
npm installConfigura la conexión a la base de datos en src/database/connection.js (o crea un archivo .env basado en la configuración):
// Ejemplo de configuración esperada en connection.js
export const db = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'tu_password',
database: 'parkingcontrol_db'
});
Inicia el servidor (correrá en el puerto 8800 por defecto):
npm start
# O para modo desarrollo
npm run devEn una nueva terminal, navega a la carpeta del cliente:
cd frontend
npm install
Inicia la aplicación (correrá usualmente en el puerto 5173):
npm run dev