ClimbIt es una aplicación web/móvil que permite a un usuario registrarse para crear su perfil de “escalador” con el cual podrá asignarse a un rocódromo existente. Estos rocódromos añadidos tendrán un registro actualizado de las pistas que hay activas. Estas pistas pueden tener una dificultad asignada de base y además si un escalador marca como completada una pista puede dar su opinión sobre el nivel de dificultad de esta. Completando pistas subirás el nivel de tu perfil y se actualizará estadísticas sobre tu progreso en la escalada permitiéndote compararlo con tu grupo de amigos.
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 installEsto instalará las dependencias tanto del proyecto raíz como de todos los workspaces (backend y frontend).
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:8080
- 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.