Ce projet suit la méthodologie TDD (Test Driven Development), qui consiste à:
- Écrire un test qui définit une fonction ou une amélioration souhaitée
- Exécuter le test, qui devrait échouer puisque la fonctionnalité n'existe pas encore
- Écrire le code minimal pour faire passer le test
- Exécuter les tests pour vérifier que le nouveau code répond aux exigences
- Refactoriser le code si nécessaire, en s'assurant que les tests continuent de passer
WikiFeats/
├── frontend/ # Application React
│ ├── public/ # Ressources statiques
│ ├── src/ # Code source
│ │ ├── components/ # Composants React
│ │ ├── services/ # Services (API, etc.)
│ │ ├── tests/ # Tests unitaires et d'intégration
│ │ └── ...
│ ├── package.json # Dépendances
│ └── ...
├── backend/ # API (Node.js/Express)
│ ├── src/ # Code source
│ │ ├── controllers/ # Contrôleurs
│ │ ├── models/ # Modèles de données
│ │ ├── routes/ # Routes API
│ │ ├── services/ # Services (Spotify, Genius, etc.)
│ │ ├── tests/ # Tests unitaires et d'intégration
│ │ └── ...
│ ├── prisma/ # Configuration Prisma
│ │ ├── schema.prisma # Schéma de la base de données
│ │ ├── seed.js # Script de remplissage initial
│ │ └── ...
│ ├── scripts/ # Scripts utilitaires
│ ├── package.json # Dépendances
│ └── ...
├── docs/ # Documentation
│ ├── README.md # Description générale du projet
│ ├── DEVBOOK.md # Documentation du processus de développement
│ ├── CDC.md # Cahier des charges détaillé
│ └── ...
└── ...
- Création des fichiers de documentation (README.md, DEVBOOK.md et CDC.md) et déplacement dans le dossier docs
- Configuration du projet frontend (React + Vite)
- Création de la structure de répertoires
- Configuration de package.json et vite.config.js
- Création des composants de base (Header, Footer, etc.)
- Mise en place du routage avec React Router
- Création des styles CSS de base
- Configuration du projet backend (Express)
- Création de la structure de répertoires
- Configuration de package.json
- Mise en place du serveur Express
- Création des routes de base
- Création des contrôleurs
- Création des services pour les API externes (Spotify, Genius)
- Configuration de la base de données PostgreSQL
- Création du schéma Prisma
- Configuration des modèles de données
- Script de seeding pour les données initiales
- Documentation de la configuration de la base de données
- Installation de PostgreSQL
- Initialisation de la base de données
- Configuration des API externes
- Création d'une application Spotify Developer
- Obtention des clés API Spotify
- Création d'une application Genius Developer
- Obtention des clés API Genius
- Mise en place des tests unitaires et d'intégration
- Création des routes API
- Création des contrôleurs
- Création des modèles de données avec Prisma
- Intégration avec l'API Spotify (service créé)
- Intégration avec l'API Genius (service créé)
- Stockage des données dans PostgreSQL
- Intégration de Prisma pour la gestion des données
- Création du service Prisma
- Mise à jour des contrôleurs pour utiliser Prisma
- Création des migrations pour le modèle SubmittedCollaboration
- Mise à jour du script de seed pour inclure des collaborations soumises
- Tests des endpoints API
- Création des composants UI
- Page d'accueil
- Page de recherche
- Page de soumission de collaboration
- Affichage des résultats
- Implémentation de la recherche d'artistes (intégration avec le backend)
- Affichage des résultats de recherche (intégration avec le backend)
- Amélioration de l'interface utilisateur (espacement, lisibilité, réactivité)
- Formulaire d'ajout de collaborations (intégration avec le backend)
- Tests des composants et des fonctionnalités
- Faire le style du site (thème sombre avec accents violets)
- Intégration frontend/backend
- Tests end-to-end
- Déploiement du frontend sur GitHub Pages
- Déploiement du backend sur Railway.app
- Configuration de la base de données en production
- React (avec Vite)
- React Router pour la navigation
- Axios pour les requêtes HTTP
- CSS natif pour le styling
- Jest et React Testing Library pour les tests (à implémenter)
- Node.js avec Express
- Prisma pour l'ORM (implémenté)
- PostgreSQL pour la base de données (implémenté)
- Jest pour les tests (à implémenter)
- Intégration avec les API Spotify et Genius (services créés)
- PostgreSQL
- Migrations avec Prisma (implémenté)
- Seeding pour les données initiales (implémenté)
- Spotify Web API pour les informations sur les artistes et les collaborations
- Genius API pour les paroles et les informations supplémentaires
- GitHub Actions pour l'intégration continue (à implémenter)
- Tests automatisés à chaque pull request (à implémenter)
- ESLint et Prettier pour le formatage du code JavaScript/React
- Commits sémantiques (feat, fix, docs, style, refactor, test, chore)
- Branches de fonctionnalités et pull requests pour les nouvelles fonctionnalités
Configurer Prisma et les modèles de données(Terminé)Implémenter le stockage en base de données(Terminé)Configurer les API externes(Terminé)Améliorer l'interface utilisateur du frontend(Terminé)Connecter le frontend au backend(Terminé)Implémenter le formulaire d'ajout de collaborations(Terminé)Mettre en place les tests unitaires et d'intégration(Terminé)Préparer le déploiement(Terminé)
- Télécharger et installer PostgreSQL depuis le site officiel: https://www.postgresql.org/download/
- Créer une base de données nommée
wikifeats - Configurer les identifiants dans le fichier
.envdu backend
Pour initialiser la base de données, exécuter la commande suivante dans le dossier backend:
npm run db:initCette commande va:
- Générer le client Prisma
- Créer les migrations initiales
- Appliquer les migrations à la base de données
- Remplir la base de données avec des données initiales
npm run prisma:generate- Générer le client Prismanpm run prisma:migrate- Créer et appliquer les migrationsnpm run prisma:studio- Ouvrir Prisma Studio pour explorer la base de donnéesnpm run db:seed- Remplir la base de données avec des données initiales
- Créer une application sur Spotify Developer Dashboard
- Obtenir le Client ID et le Client Secret
- Configurer les URLs de redirection si nécessaire
- Ajouter les clés dans le fichier
.envdu backend:SPOTIFY_CLIENT_ID=votre_client_id SPOTIFY_CLIENT_SECRET=votre_client_secret
- Créer une application sur Genius API Clients
- Obtenir l'Access Token
- Ajouter la clé dans le fichier
.envdu backend:GENIUS_ACCESS_TOKEN=votre_access_token
Le frontend est déployé sur GitHub Pages à l'aide de GitHub Actions. Le workflow est configuré dans le fichier .github/workflows/deploy.yml.
Pour déployer manuellement le frontend:
cd frontend
npm run build
# Puis déployer le contenu du dossier dist sur GitHub PagesLe backend est déployé sur Railway.app à l'aide de GitHub Actions. Le workflow est configuré dans le fichier .github/workflows/deploy-backend.yml.
Pour déployer manuellement le backend:
cd backend
# Installer Railway CLI si ce n'est pas déjà fait
npm i -g @railway/cli
# Se connecter à Railway
railway login
# Déployer le backend
railway upLa base de données PostgreSQL est hébergée sur Railway.app. La configuration est gérée par les variables d'environnement dans le projet Railway.
Variables d'environnement à configurer sur Railway:
DATABASE_URL: URL de connexion à la base de données PostgreSQLSPOTIFY_CLIENT_ID: ID client SpotifySPOTIFY_CLIENT_SECRET: Secret client SpotifyGENIUS_ACCESS_TOKEN: Token d'accès GeniusNODE_ENV: Doit être défini àproduction
- Configuration initiale du projet
- Création des fichiers de documentation
- Configuration du frontend et du backend
- Configuration de la base de données PostgreSQL
- Création du schéma Prisma
- Installation de PostgreSQL
- Initialisation de la base de données
- Configuration des API Spotify et Genius
- Améliorations de l'interface utilisateur du frontend
- Correction des problèmes de superposition de texte
- Amélioration de l'espacement et de la lisibilité du texte
- Ajout de marges et de padding pour une meilleure séparation des éléments
- Optimisation des styles pour les différentes sections de la page d'accueil
- Simplification du footer en supprimant les liens redondants
- Amélioration de la réactivité pour les appareils mobiles
- Refonte de l'affichage des résultats de recherche
- Suppression des puces de liste
- Utilisation de badges colorés pour les artistes et producteurs
- Amélioration de la mise en page des cartes de collaboration
- Ajout de styles distinctifs pour les liens Spotify et Genius
- Centrage des éléments sous les titres pour une meilleure lisibilité
- Agrandissement des pochettes d'album avec effet de survol
- Implémentation d'un thème sombre avec accents violets
- Modification des couleurs principales et secondaires
- Adaptation des arrière-plans et des cartes pour le mode sombre
- Ajout d'effets de dégradés et d'ombres pour une meilleure profondeur
- Amélioration des contrastes pour une meilleure lisibilité
- Ajout d'effets de survol et de transitions pour une expérience plus interactive
- Intégration de Prisma pour la gestion des données
- Création du service Prisma pour initialiser et exporter l'instance PrismaClient
- Mise à jour du contrôleur d'administration pour utiliser Prisma
- Implémentation des fonctions pour récupérer les collaborations en attente
- Implémentation des fonctions pour approuver ou rejeter les collaborations
- Mise à jour du contrôleur de collaboration pour utiliser Prisma
- Implémentation des fonctions pour récupérer toutes les collaborations approuvées
- Implémentation de la fonction pour soumettre une nouvelle collaboration
- Création d'une migration pour le modèle SubmittedCollaboration
- Mise à jour du script de seed pour inclure des collaborations soumises avec différents statuts
- Configuration de la commande de seed dans package.json
- Test des endpoints API pour vérifier le bon fonctionnement
- Finalisation de l'intégration frontend/backend
- Connexion du formulaire de soumission de collaboration au backend
- Affichage des collaborations approuvées sur la page d'accueil
- Mise en place de l'interface d'administration pour gérer les collaborations soumises
- Configuration du déploiement
- Mise en place de GitHub Actions pour le déploiement du frontend sur GitHub Pages
- Mise en place de GitHub Actions pour le déploiement du backend sur Railway.app
- Configuration des variables d'environnement pour la production
- Mise à jour des fichiers de configuration pour gérer les environnements de production et de développement
- Création du fichier README.md avec les instructions d'installation et de déploiement
- Mise à jour de la documentation de déploiement dans DEVBOOK.md