celcat-back est un serveur proxy simple et efficace conçu pour récupérer les emplois du temps depuis un serveur Celcat, les mettre en cache et les exposer via une API JSON propre.
- Proxy pour Celcat : Récupère les données iCalendar (
.ics) depuis n'importe quelle instance Celcat. - Mise en Cache Intelligente : Intègre un cache en mémoire pour réduire la charge sur le serveur Celcat et accélérer les réponses.
- API JSON Claire : Transforme les données iCal en un format JSON facile à utiliser.
- Filtrage par Date : Permet de requêter des événements pour une période spécifique.
- Gestion des Erreurs : Fournit des messages d'erreur clairs pour les requêtes invalides ou les problèmes serveur.
- Configurable : Utilise des variables d'environnement pour une configuration flexible.
- Prêt pour Docker : Livré avec un
Dockerfilepour un déploiement facile et reproductible.
- Node.js (v18 ou supérieure)
- Docker (Optionnel, pour le déploiement)
-
Clonez le dépôt :
git clone https://github.com/okayhappex/celcat-back.git cd celcat-back -
Installez les dépendances :
npm install
-
Lancez le serveur de développement : Ce script utilise
nodemonpour redémarrer automatiquement le serveur à chaque modification.npm run dev
Le serveur sera accessible à l'adresse
http://localhost:5000.
-
Construisez l'image Docker :
docker build -t celcat-back . -
Lancez le conteneur : Vous pouvez configurer l'application en passant des variables d'environnement.
docker run -d -p 5000:5000 --name celcat-proxy \ -e PORT=5000 \ -e CACHE_TTL_SECONDS=600 \ -e CELCAT_BASE_URL="https://celcat.rambouillet.iut-velizy.uvsq.fr" \ celcat-back
L'application est configurable via les variables d'environnement suivantes :
| Variable | Description | Défaut |
|---|---|---|
PORT |
Le port sur lequel le serveur écoute. | 5000 |
CACHE_TTL_SECONDS |
La durée de vie du cache en secondes. | 600 (10 minutes) |
CELCAT_BASE_URL |
L'URL de base de l'instance Celcat à requêter. | https://celcat.rambouillet.iut-velizy.uvsq.fr |
Récupère l'emploi du temps pour un groupe spécifique.
groupId(paramètre de chemin, requis) : L'identifiant du groupe Celcat (ex:133).start(paramètre de requête, requis) : La date de début de la période souhaitée, au formatYYYY-MM-DD.end(paramètre de requête, optionnel) : La date de fin de la période. Si non fournie, la recherche s'étend sur 5 jours après la date de début.
curl "http://localhost:5000/edt/133?start=2024-09-02&end=2024-09-08"[
{
"uid": "...",
"summary": "R1.01 - Initiation au développement",
"start": "2024-09-02T08:00:00.000Z",
"end": "2024-09-02T10:00:00.000Z",
"location": "Amphi WEISS",
"description": "..."
},
...
]{
"error": "Missing 'start' query parameter."
}Ce projet est sous licence GPL-3.0.