Application web pour consulter la disponibilité des salles de l'Université d'Avignon en temps réel.
- 🔍 Consultation des salles libres - Visualisation en temps réel des salles disponibles par campus
- 📅 Planification horaire - Sélection d'une date et heure spécifique pour planifier à l'avance
- 📱 Interface responsive - Design adapté mobile et desktop avec shadcn/ui
- 🔐 Panneau d'administration - Gestion des salles et statistiques de visites
- 📊 Statistiques - Suivi des visites journalières
- 🗺️ Multi-campus - Support de plusieurs sites (CERI, Agroscience, Avignon-Centre)
- Framework : Next.js 16 (App Router)
- Langage : TypeScript
- Base de données : PostgreSQL
- UI : shadcn/ui + Tailwind CSS 4
- Authentification : iron-session
- Charts : Recharts
- Node.js 20+
- PostgreSQL 15+
- npm ou yarn
- Cloner le repository
git clone https://github.com/votre-org/jssalles.git
cd jssalles- Installer les dépendances
npm install- Configurer la base de données
# Créer les tables
psql -U $DB_USER -d $DB_NAME -f db/init.sql- Configurer les variables d'environnement
Créer un fichier .env à la racine :
# Base de données
DB_USER=votre_utilisateur
DB_HOST=localhost
DB_NAME=jssalles
DB_PASSWORD=votre_mot_de_passe
DB_PORT=5432
# Session (générer une clé sécurisée)
SESSION_SECRET=votre_cle_secrete_de_32_caracteres_min- Lancer le serveur de développement
npm run devL'application est accessible sur http://localhost:3000
jssalles/
├── src/
│ ├── app/ # Routes Next.js (App Router)
│ │ ├── api/ # API Routes
│ │ │ ├── auth/ # Authentification (login/logout)
│ │ │ ├── admin/ # Endpoints admin (rooms, stats)
│ │ │ └── rooms/ # API des salles libres
│ │ ├── admin/ # Page admin
│ │ ├── login/ # Page de connexion
│ │ ├── univ/[univ]/ # Page des salles par université
│ │ └── layout.tsx # Layout principal
│ ├── components/ # Composants React
│ │ ├── ui/ # Composants shadcn/ui
│ │ ├── room-list.tsx # Liste des salles
│ │ ├── room-dashboard.tsx
│ │ └── navbar.tsx
│ └── lib/ # Utilitaires
│ ├── db.ts # Connexion PostgreSQL
│ ├── queries.ts # Requêtes SQL
│ └── room-utils.ts # Logique métier des salles
├── db/ # Scripts SQL
│ ├── init.sql # Schéma de la BDD
│ └── sample_data.sql # Données d'exemple
└── public/ # Assets statiques
Les salles sont configurées dans la table rooms avec leur URL de calendrier ICS (format iCalendar) :
INSERT INTO rooms (univ, room_name, room_url) VALUES
('ceri', 'Amphi Blaise', 'https://.../amphi_blaise.ics');ceri- CERI (Centre d'Enseignement et de Recherche en Informatique)agroscience- Agroscienceavignon-centre- Avignon Centre
- Générer un hash du mot de passe via l'endpoint :
curl http://localhost:3000/api/admin/hash?password=votre_mot_de_passe- Insérer l'utilisateur en base :
INSERT INTO users (username, password)
VALUES ('admin', 'hash_généré');- Gestion des salles (ajout, modification, suppression)
- Vérification des URLs de calendriers
- Statistiques de visites journalières
npm run build
npm startCe projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Développé avec ❤️ pour les étudiants de l'Université d'Avignon