Skip to content
Alejandro Castillo edited this page Mar 20, 2025 · 1 revision
# 📖 Wiki: iCal-Sync API

## 🌐 Overview
API que convierte calendarios de Airbnb (en formato `.ics`) a JSON estructurado. Ideal para integrar disponibilidad de alojamientos en apps web/móviles o sistemas de gestión.

---

## 🛠 Installation

### Prerequisites
- Node.js v18+
- npm v9+

### Steps
```bash
git clone https://github.com/alejandro-castillo-delgado/ical-sync.git
cd ical-sync
npm install

🚀 Getting Started

Start Server

npm start
# Servidor iniciado en http://localhost:3000

Environment Variables

Crea un archivo .env:

PORT=4000
CORS_ORIGIN=*

📡 API Reference

Endpoint Principal

GET /calendar
Convierte un calendario Airbnb ICS a JSON.

Parámetros

Parámetro Tipo Requerido Ejemplo
url string https://airbnb.com/calendar/xxx.ics

Ejemplo de Uso

curl "http://localhost:3000/calendar?url=URL_DEL_CALENDARIO"

Respuesta Exitosa

{
  "success": true,
  "events": [
    {
      "start": "2024-07-01T12:00:00Z",
      "end": "2024-07-05T12:00:00Z",
      "status": "reserved",
      "summary": "Reserva - Juan Pérez",
      "uid": "airbnb@event123"
    }
  ]
}

Errores Comunes

{
  "success": false,
  "error": "Missing URL parameter"
}

⚙️ Advanced Configuration

Variables de Entorno

Variable Default Descripción
PORT 3000 Puerto del servidor
CORS_ORIGIN * Dominios permitidos (CORS)
LOG_LEVEL info Nivel de logs (error, warn, info, debug)

Logging

Ejemplo para modo debug:

LOG_LEVEL=debug npm start

🤝 Contributing

Workflow

  1. Crea un fork del proyecto
  2. Implementa cambios en una rama nueva:
    git checkout -b feature/nueva-funcionalidad
  3. Ejecuta tests (próximamente)
  4. Envía un Pull Request

Code Style

  • 2 espacios de indentación
  • Preferir async/await sobre callbacks
  • Comentar endpoints complejos

⚠️ Troubleshooting

Errores Comunes

Error Solución
ECONNREFUSED Verifica que el servidor esté activo
Invalid ICS format Valida la URL del calendario
CORS blocked Configura CORS_ORIGIN correctamente

📄 License

MIT License - Ver LICENSE.


❓ FAQ

¿Funciona con calendarios privados de Airbnb?

Solo con calendarios públicos. Airbnb requiere autenticación para calendarios privados.

¿Cómo actualizar los datos?

Cada solicitud obtiene datos en tiempo real directamente de la URL proporcionada.

¿Soporta otros formatos de calendario?

Actualmente solo procesa archivos ICS estándar.

Ver repositorio | Documentación iCal.js