ClimbIt es una aplicación web y móvil pensada para organizar la actividad de escaladores dentro de rocódromos. La aplicación permite a cada usuario registrarse como escalador, gestionar su perfil, suscribirse a rocódromos y consultar la información de sus zonas y rutas.
Además de la consulta de rutas, el usuario puede marcar el estado de las rutas, valorar su dificultad y seguir su progreso mediante estadísticas personales y por rocódromo. La interfaz está diseñada para funcionar en dispositivos móvil, e incluye soporte PWA para ofrecer una experiencia más cercana a una app instalada.
Esta guía te muestra cómo poner en marcha el proyecto en tu máquina local.
Asegúrate de tener instalado lo siguiente:
- Node.js (versión recomendada: 25.1.0 o superior)
- npm (viene con Node.js)
- Docker y Docker Compose
- Git (para clonar el repositorio)
Nota: Este proyecto usa Docker para la base de datos PostgreSQL, por lo que no necesitas instalar PostgreSQL manualmente.
Sigue estos pasos en orden:
git clone https://github.com/Melendo/ClimbIt.git
cd ClimbItEste proyecto usa Lerna para gestionar el monorepo. Ejecuta:
npm run setupEste comando instalará Lerna globalmente (si no lo tienes) y luego instalará las dependencias de todos los paquetes (backend y frontend). Después de instalar las dependencias, ejecuta los post install de cada paquete listado en la white list de lavamoat de cada workspace.
Crea un archivo .env en apps/backend/ basándote en el archivo de ejemplo .env.example:
cd apps/backend
cp .env.example .envEdita el archivo .env con tus propias configuraciones.
Desde la carpeta apps/backend/, ejecuta:
docker-compose up -dEsto levantará:
- PostgreSQL en el puerto
5432 - pgAdmin en el puerto
5050(accesible enhttp://localhost:5050)
Verifica que los contenedores estén corriendo:
docker psDesde la carpeta apps/backend/, ejecuta:
npm run db:migrateEsto creará las tablas necesarias en la base de datos.
Nota: Para visualizar las tablas creadas, puedes usar pgAdmin siguiendo la Guía de conexión de PostgreSQL con pgAdmin en el punto 3.
Vuelve a la carpeta raíz del proyecto:
cd ../..Ejecuta ambos servicios (backend y frontend) en modo desarrollo con hot reload:
npm run devEsto iniciará:
- Backend en
http://localhost:3000(puerto definido en .env y con auto-reload) - Frontend en
http://localhost:5173(puerto variable y con auto-reload)
- Frontend: http://localhost:5173
- Backend API: http://localhost:3000
- pgAdmin: http://localhost:5050
Desde la carpeta raíz:
-
Ejecutar todos los tests:
npm run test -
Ejecutar tests con cobertura de código:
npm run test:coverage
Los reportes de cobertura se generan en apps/backend/coverage/.
-
Linting:
npm run lint npm run lint:fix
-
Formateo de código:
npm run format
-
Limpiar dependencias:
npm run clean
-
Gestión de migraciones:
cd apps/backend # Revertir la última migración npm run db:migrate:undo # Crear una nueva migración npm run db:migrate:new -- nombre-de-la-migracion
-
Gestión de seeds (datos de prueba):
cd apps/backend # Ejecutar todos los seeders (poblar BD con datos de ejemplo) npm run db:seed # Revertir todos los seeders npm run db:seed:undo # Crear un nuevo seeder npm run db:seed:new -- nombre-del-seeder
-
Detener Docker:
cd apps/backend docker-compose down
Cambia los puertos en:
- Backend: modifica
PORTenapps/backend/.env
- Verifica que Docker esté corriendo:
docker ps - Verifica las credenciales en
apps/backend/.env - Asegúrate de que el puerto 5432 no esté ocupado
- Verifica que la base de datos esté levantada
- Asegúrate de estar en la carpeta
apps/backend/al ejecutar las migraciones - Verifica el
DATABASE_URLen el archivo.env
pgAdmin es una herramienta de administración gráfica para PostgreSQL que se levanta automáticamente con Docker Compose.
-
Asegúrate de que los contenedores de Docker estén corriendo:
docker ps
-
Abre tu navegador y accede a: http://localhost:5050
-
Inicia sesión con las credenciales definidas en tu archivo
.env:- Email: El valor de
PGADMIN_EMAIL - Password: El valor de
PGADMIN_PASSWORD
- Email: El valor de
Una vez dentro de pgAdmin, sigue estos pasos para conectarte a la base de datos:
- En el panel izquierdo, haz clic derecho en "Servers"
- Selecciona "Register" > "Server..."
- Name: Escribe un nombre descriptivo (ejemplo:
ClimbIt DB)
Completa los siguientes campos con los valores de tu archivo .env:
-
Host name/address:
dbImportante: Usa
db(nombre del servicio en docker-compose), NOlocalhost -
Port:
5432 -
Maintenance database:
postgres -
Username: El valor de
POSTGRES_USERde tu.env -
Password: El valor de
POSTGRES_PASSWORDde tu.env -
(opcional) Marca la opción "Save password" (para no tener que ingresarla cada vez)
Haz clic en "Save" para establecer la conexión.
Si todo está correcto, deberías ver:
- Tu servidor listado en el panel izquierdo
- Al expandirlo: Databases > [nombre de tu BD]
- Dentro encontrarás: Schemas > public > Tables (con las tablas creadas por las migraciones)
Usa db en lugar de localhost. Cuando pgAdmin corre dentro de Docker, debe usar el nombre del servicio definido en docker-compose.yml.
- Verifica que ambos contenedores estén corriendo:
docker ps - Asegúrate de que las credenciales en
.envcoincidan con las que usas en pgAdmin - Verifica que el puerto 5432 no esté siendo usado por otra instancia de PostgreSQL
Las credenciales están en apps/backend/.env:
- Email:
PGADMIN_EMAIL - Password:
PGADMIN_PASSWORD
Si necesitas eliminar todos los datos y empezar de cero:
cd apps/backend
# Detener contenedores y eliminar volúmenes
docker-compose down -v
# Volver a levantar con BD limpia
docker-compose up -d
# Ejecutar migraciones de nuevo
npm run db:migrateEl flag -v elimina los volúmenes de Docker, borrando completamente los datos de PostgreSQL.