Sistema web para gestionar reservas de propiedades en Airbnb, Booking y reservas particulares.
- Calendario visual de reservas
- Gestión de caja con ingresos y egresos
- División de ingresos y egresos por socio (Maxy, Oso y Laura)
- Resumen de ganancias
- Integración con APIs de Airbnb y Booking
- Backend: FastAPI, SQLAlchemy, PostgreSQL
- Frontend: React, Tailwind CSS, FullCalendar
- Infraestructura: Docker, Docker Compose
- Docker y Docker Compose
- Node.js (v18 o superior)
- Python (v3.11 o superior)
- PostgreSQL (sólo si ejecutas sin Docker)
- Visual Studio Code con extensión Docker (recomendado)
Este método ejecuta toda la aplicación con un solo comando utilizando contenedores Docker.
# Clonar el repositorio
git clone <repo-url>
cd ReservasAbby
# Crear archivo .env desde el ejemplo (si no existe)
cp .env.example .env
# Iniciar los servicios
docker compose up -dLa aplicación estará disponible en:
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- Documentación API: http://localhost:8000/docs
- Base de datos PostgreSQL: localhost:5432
Para probar el desarrollo local, necesitarás PostgreSQL. Puedes:
Opción A: Usar la base de datos en Docker
# Iniciar sólo el contenedor de la base de datos
docker compose up -d db
# Verificar que está funcionando
docker psOpción B: Instalar PostgreSQL localmente
- Instala PostgreSQL en tu sistema
- Crea una base de datos llamada
reservas_abby - Configura los detalles de conexión en el archivo
.env
# Navegar al directorio backend
cd backend
# Crear y activar entorno virtual
python -m venv venv
source venv/bin/activate # En Linux/Mac
# En Windows: venv\Scripts\activate
# Instalar dependencias
pip install -r requirements.txt
# Ejecutar el servidor de desarrollo
uvicorn src.main:app --reload --host 0.0.0.0 --port 8000El backend estará disponible en http://localhost:8000
# Navegar al directorio frontend
cd frontend
# Instalar dependencias
npm install
# Iniciar servidor de desarrollo
npm startEl frontend estará disponible en http://localhost:3000
La extensión Docker de VS Code proporciona herramientas visuales para administrar contenedores:
- Abre VS Code e instala la extensión Docker si aún no lo has hecho
- Navega al panel de Docker en la barra lateral izquierda
- Allí podrás:
- Ver contenedores en ejecución
- Iniciar/detener/reiniciar contenedores
- Ver logs de contenedores
- Acceder a la terminal de un contenedor
- Eliminar contenedores y imágenes
Para ver los logs del backend (útil para depuración):
- En el panel de Docker, encuentra
reservasabby-backend-1 - Haz clic derecho y selecciona "View Logs"
Si el contenedor backend se reinicia constantemente:
# Ver los logs para identificar el problema
docker logs reservasabby-backend-1Problemas comunes:
- Falta módulos Python requeridos → Actualiza requirements.txt
- Errores de importación → Verifica la estructura de carpetas
- No puede conectarse a la base de datos → Verifica variables de entorno
Para conectarte directamente a la base de datos PostgreSQL:
# Usando el cliente psql dentro del contenedor
docker exec -it reservasabby-db-1 psql -U postgres -d reservas_abby
# O usando herramientas como pgAdmin con:
# Host: localhost
# Puerto: 5432
# Usuario: postgres
# Contraseña: postgres (o la establecida en .env)
# Base de datos: reservas_abby# Detener todos los contenedores
docker compose down
# Iniciar todos los contenedores
docker compose up -d# Reconstruir todos los servicios e iniciarlos
docker compose up -d --buildReservasAbby/
├── backend/ # Servidor FastAPI
│ ├── src/ # Código fuente del backend
│ ├── requirements.txt # Dependencias Python
│ └── Dockerfile # Instrucciones para construir imagen backend
├── frontend/ # Aplicación React
│ ├── src/ # Código fuente del frontend
│ ├── public/ # Archivos estáticos
│ ├── package.json # Dependencias y scripts
│ └── Dockerfile # Instrucciones para construir imagen frontend
├── docker-compose.yml # Configuración de servicios
└── .env # Variables de entorno (no subir al repositorio)
Para desarrollar nuevas características:
- Crea una rama para tu característica
- Realiza tus cambios
- Ejecuta pruebas
- Envía un pull request