Carte sonore interactive pour un projet en collaboration avec Eau de Paris
đź“– NEW! Complete Documentation Available! Check out DOCUMENTATION.md for comprehensive, friendly documentation in English. Note: App content is in French (project-specific for Eau de Paris, but you're welcome to adapt it for your own projects!)
🔊 Sounds Not Playing? If sounds fall back to beep when clicked, see FIXING_SOUNDS.md for the complete solution.
O2Paris est une application de carte interactive qui affiche la ville de Paris avec des points sonores. Chaque point peut être cliqué pour afficher un tooltip avec un texte et des contrôles audio (lecture/pause) qui déclenchent des sons hébergés sur Neon PostgreSQL. L'application suit un thème aquatique en lien avec l'institution publique Eau de Paris.
- Carte Interactive : Visualisation de Paris basée sur Leaflet.js
- Points Sonores : Marqueurs cliquables avec descriptions et lecteurs audio
- Interface d'Administration : GUI protégée par mot de passe pour :
- Créer, modifier et supprimer des points sur la carte
- Télécharger et gérer des fichiers audio
- Configurer les tuiles de carte, le centre, le zoom
- Personnaliser les icĂ´nes et le design
- Thème Eau : Design inspiré de l'eau avec une palette de couleurs bleues
- Base de Données : PostgreSQL (Neon) pour stocker les points, sons et configuration
- Next.js 14 : Framework React avec App Router
- TypeScript : Typage statique
- Leaflet.js : Bibliothèque de cartes interactives
- React-Leaflet : Composants React pour Leaflet
- Neon PostgreSQL : Base de données serverless
- Tailwind CSS : Framework CSS utility-first
- Vercel : Plateforme de déploiement
- Clonez le dépôt :
git clone https://github.com/lightmyfireadmin/o2paris.git
cd o2paris- Installez les dépendances :
npm install- Configurez les variables d'environnement :
Créez un fichier
.envbasé sur.env.example:
cp .env.example .envÉditez .env avec vos informations :
DATABASE_URL: Votre chaîne de connexion Neon PostgreSQLADMIN_PASSWORD: Votre mot de passe admin en texte clair (par défaut: Admin123 en développement)NEXTAUTH_SECRET: Secret généré avecopenssl rand -base64 32
-
Initialisez la base de données :
- Option CLI :
psql "$DATABASE_URL" -f scripts/migrations/001_init.sql - Option HTTP : accĂ©dez Ă
/api/initaprès le premier démarrage pour créer les tables et insérer des données de démonstration
- Option CLI :
-
Lancez le serveur de développement :
npm run devOuvrez http://localhost:3000 dans votre navigateur.
-
Connectez votre dépôt GitHub à Vercel
-
Configurez les variables d'environnement dans les paramètres Vercel :
DATABASE_URL: Chaîne de connexion Neon PostgreSQL (requis)ADMIN_PASSWORD: Votre mot de passe admin (requis pour production)
Note importante pour Vercel : Le nom de la variable d'environnement pour le mot de passe admin doit ĂŞtre exactement
ADMIN_PASSWORD. Utilisez un mot de passe fort et sécurisez-le via les variables d'environnement cryptées de Vercel. -
Déployez !
Vercel détectera automatiquement Next.js et utilisera la configuration appropriée.
- Visualisez la carte de Paris avec les points sonores
- Cliquez sur un point pour voir sa description et écouter le son associé
- Utilisez les contrĂ´les de lecture/pause pour contrĂ´ler l'audio
- AccĂ©dez Ă
/admin - Connectez-vous avec le mot de passe admin (par défaut en développement:
Admin123) - Gérez les points, sons et configuration de la carte
- Créez de nouveaux points en spécifiant latitude, longitude, titre, description et URL du son
- Modifiez ou supprimez les points existants
- Téléchargez des fichiers audio (MP3, WAV, OGG, etc.)
- Utilisez l'ID retourné dans l'URL du son pour un point :
/api/sounds?id=ID
- Personnalisez l'URL des tuiles de carte
- Ajustez le centre de la carte (latitude/longitude)
- Configurez les niveaux de zoom (initial, min, max)
- Modifiez l'attribution de la carte
o2paris/
├── app/ # App Router de Next.js
│ ├── api/ # Routes API
│ │ ├── auth/ # Authentification
│ │ ├── config/ # Configuration de la carte
│ │ ├── init/ # Initialisation de la DB
│ │ ├── pinpoints/ # CRUD des points
│ │ └── sounds/ # Upload/récupération des sons
│ ├── admin/ # Page d'administration
│ ├── globals.css # Styles globaux
│ ├── layout.tsx # Layout racine
│ └── page.tsx # Page principale (carte)
├── components/ # Composants React
│ └── Map.tsx # Composant carte Leaflet
├── lib/ # Utilitaires et bibliothèques
│ ├── auth.ts # Authentification
│ └── db.ts # Configuration et schémas DB
├── public/ # Fichiers statiques
├── .env.example # Exemple de variables d'environnement
├── .gitignore # Fichiers ignorés par Git
├── next.config.js # Configuration Next.js
├── package.json # Dépendances
├── postcss.config.js # Configuration PostCSS
├── tailwind.config.ts # Configuration Tailwind CSS
├── tsconfig.json # Configuration TypeScript
└── vercel.json # Configuration Vercel
-
GET /api/pinpoints: Récupère tous les points -
POST /api/pinpoints: Crée un nouveau point -
PUT /api/pinpoints: Met Ă jour un point -
DELETE /api/pinpoints?id=ID: Supprime un point -
GET /api/sounds?id=ID: Récupère un fichier audio -
POST /api/sounds: Télécharge un nouveau son -
DELETE /api/sounds?id=ID: Supprime un son -
GET /api/config: Récupère la configuration de la carte -
PUT /api/config: Met Ă jour la configuration -
POST /api/auth: Authentification admin -
DELETE /api/auth: Déconnexion -
GET /api/init: Initialise la base de données
- L'interface d'administration est protégée par authentification
- Utilisez un mot de passe fort pour
ADMIN_PASSWORDen production - Les variables d'environnement sensibles ne sont pas committées
- Les sessions utilisent des cookies HTTP-only
- Les mots de passe sont sécurisés via les variables d'environnement cryptées de Vercel
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request.
Ce projet est développé pour Eau de Paris.
| Document | Description |
|---|---|
| DOCUMENTATION.md | đź“– COMPLETE GUIDE - Comprehensive, friendly documentation (English) |
| QUICK_FIX.md | ⚡ Solution rapide (5 min) pour problèmes de son |
| FIXING_SOUNDS.md | 🔊 Guide complet pour réparer la lecture audio |
| VERCEL_SETUP.md | ⚙️ Configuration Vercel et variables d'environnement |
| TROUBLESHOOTING.md | 🔧 Dépannage et solutions aux problèmes courants |
| DATABASE_CONFIG_NOTES.md | 🗄️ Notes sur la configuration de la base de données |
| DEPLOYMENT.md | 🚀 Guide de déploiement complet |
| QUICKSTART.md | ⏱️ Démarrage rapide (5 minutes) |
| ARCHITECTURE.md | 🏗️ Architecture technique détaillée |
| CONTRIBUTING.md | 🤝 Guide pour contributeurs |
| PROJECT_SUMMARY.md | 📋 Résumé du projet |
Pour toute question ou problème, veuillez ouvrir une issue sur GitHub.