Aplicación web moderna para gestionar de manera eficiente el parqueadero de motos de la Universidad del Magdalena. Desarrollada con tecnologías actuales como Spring Boot para el backend y React con Vite para el frontend.
- Características
- Requisitos Previos
- Estructura del Proyecto
- Instalación
- Configuración
- Ejecución
- API Documentation
- Tecnologías Utilizadas
- Contribuidores
- ✅ Registro y autenticación de usuarios con JWT
- ✅ Gestión de espacios de parqueo en tiempo real
- ✅ Sistema de reservas y control de acceso
- ✅ Panel administrativo completo
- ✅ Reportes y estadísticas
- ✅ Interfaz responsiva y moderna
- ✅ Base de datos PostgreSQL robusta
sgpm/
├── sgpm-server/ # Backend en Spring Boot
│ ├── src/
│ ├── pom.xml
│ └── application.properties
├── sgpm-client/ # Frontend en React + Vite
│ ├── src/
│ ├── package.json
│ └── vite.config.js
├── docker-compose.yml # Configuración de contenedores
├── .env # Variables de entorno
└── README.md
Antes de instalar SGPM, asegúrate de tener las siguientes herramientas instaladas:
- Java 17+ - Descargar
- Node.js 18+ - Descargar
- Docker Desktop - Descargar
- PostgreSQL 14+ - (Se levanta en Docker)
- IntelliJ IDEA - Descargar (o tu IDE Java preferido)
- Git - Descargar
Crea un archivo .env en la raíz del proyecto con las siguientes variables:
# PostgreSQL Configuration
POSTGRES_DB=sgpm_db
POSTGRES_USER=admin
POSTGRES_PASSWORD=admin123
POSTGRES_PORT=5433
# pgAdmin Configuration
PGADMIN_DEFAULT_EMAIL=admin@sgpm.local
PGADMIN_DEFAULT_PASSWORD=admin123
# Application Configuration
SERVER_PORT=8080
CLIENT_PORT=3000Asegúrate de que Docker Desktop esté corriendo, luego ejecuta desde la raíz del proyecto:
docker-compose up -dEsto levantará los siguientes servicios:
- PostgreSQL: http://localhost:5433
- pgAdmin: http://localhost:8081
Accede a pgAdmin con las credenciales configuradas en el .env.
-
Abre la carpeta
sgpm-serveren IntelliJ IDEA -
Espera a que Maven descargue las dependencias
-
Configura la base de datos en
application.properties:spring.datasource.url=jdbc:postgresql://localhost:5433/sgpm_db spring.datasource.username=admin spring.datasource.password=admin123 spring.jpa.hibernate.ddl-auto=update
-
Ejecuta la aplicación - Busca la clase principal (por ejemplo,
SgpmApplication.java) y ejecuta conShift + F10o haz clic en el botón de Play -
Verifica que el servidor esté corriendo:
- Backend disponible en:
http://localhost:8080 - Documentación Swagger:
http://localhost:8080/swagger-ui.html
- Backend disponible en:
-
Abre una terminal en la carpeta
sgpm-client -
Instala las dependencias:
npm install
-
Inicia el servidor de desarrollo:
npm run dev
-
Accede a la aplicación:
- Frontend disponible en:
http://localhost:3000
- Frontend disponible en:
Sigue estos pasos en orden para ejecutar toda la aplicación:
-
Inicia Docker Desktop
-
Levanta los contenedores desde la raíz del proyecto:
docker-compose up -d
Verifica que los contenedores estén corriendo:
docker-compose ps
-
Levanta el Backend:
- Abre
sgpm-serveren IntelliJ IDEA - Ejecuta la clase principal
- Espera a que veas:
Tomcat started on port(s): 8080
- Abre
-
Levanta el Frontend:
- Abre otra terminal en
sgpm-client - Ejecuta:
npm run dev - Espera a que veas:
Local: http://localhost:3000
- Abre otra terminal en
-
Accede a la aplicación:
- Abre tu navegador en:
http://localhost:3000 - Inicia sesión con tus credenciales
- Abre tu navegador en:
La documentación interactiva de la API está disponible en Swagger:
http://localhost:8080/swagger-ui.html
POST /api/v1/auth/login- Iniciar sesiónPOST /api/v1/auth/register- Registrar nuevo usuarioPOST /api/v1/auth/logout- Cerrar sesión
GET /api/v1/parking/spaces- Obtener espacios disponiblesPOST /api/v1/parking/reserve- Realizar una reservaGET /api/v1/parking/reservations- Obtener mis reservas
GET /api/v1/admin/users- Listar usuariosDELETE /api/v1/admin/users/{id}- Eliminar usuario
- Spring Boot 3.x - Framework web
- Spring Security - Autenticación y autorización
- JWT - Tokens de seguridad
- JPA/Hibernate - ORM
- PostgreSQL - Base de datos
- Maven - Gestor de dependencias
- Swagger/OpenAPI - Documentación de API
- React 18+ - Biblioteca de UI
- Vite - Herramienta de construcción
- Axios - Cliente HTTP
- React Router - Enrutamiento
- Tailwind CSS o Material-UI - Estilos
- Docker - Containerización
- Docker Compose - Orquestación de contenedores
docker-compose down -v
docker-compose up -d# En IntelliJ, mira la consola de salida
# O desde línea de comandos:
docker logs sgpm-postgresEn application.properties:
server.port=8081Se recomienda usar servicios como:
- Backend: AWS, Heroku, Railway
- Frontend: Vercel, Netlify, GitHub Pages
- 🔐 JWT está habilitado por defecto a través de Spring Security
- 🔒 Seguridad: Cambia las credenciales por defecto antes de usar en producción
- 💾 Base de datos: Los datos persisten en volúmenes de Docker
- 🌐 CORS: Configurado para desarrollo local (ajusta en producción)
- 📱 Responsive: La aplicación está optimizada para dispositivos móviles
- 🚀 Escalabilidad: Este proyecto está diseñado para uso local y académico
Si encuentras problemas, intenta:
- Verifica que Docker esté corriendo
- Elimina
node_modulesy reinstala:npm install - Limpia el caché de Maven en IntelliJ
- Revisa los logs en la consola de IntelliJ
Este proyecto fue desarrollado por:
| Nombre | Rol |
|---|---|
| León Cantillo | Software Architect |
| Steven Navarro | Backend Developer |
| Jonathan Vizcaíno | Backend Developer |
| Juan Sebastián Sarmiento | Frontend Developer |
| León Cantillo | Frontend Developer |
| Iván Marchena | DevOps/Infrastructure |
Las contribuciones son bienvenidas. Para contribuir:
- Haz un fork del repositorio
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Haz commit de tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Última actualización: 15 de febrero de 2026
¡Gracias por usar SGPM! 🚀