Backend complet pour le festival de films IA marsAI.
- ✅ Inscription avec validation âge 18+
- ✅ Connexion avec JWT tokens (7 jours)
- ✅ Roles: DIRECTOR, JURY, ADMIN
- ✅ Gestion profils utilisateurs (CRUD)
- ✅ Soumission de films par réalisateurs
- ✅ Galerie publique des films publiés
- ✅ Gestion des films par statut (PENDING, REFUSED, PUBLISHED, FINALIST)
- ✅ Validation période de soumission (fenêtre configurable)
- ✅ Champs: titre, durée, langue, description, pays, YouTube, poster
- ✅ Formulaire déclaration utilisation IA
- ✅ Types: FULL_AI (100% IA) ou HYBRID (mix IA/humain)
- ✅ Description outils et méthodologie
- ✅ Association à chaque film
- ✅ Upload images (poster, stills) - JPG, PNG, WEBP
- ✅ Upload sous-titres - SRT, VTT
- ✅ Limite: 5MB par fichier
- ✅ Support upload simple et multiple (max 5)
- ✅ Approbation des films soumis
- ✅ Refus avec raison
- ✅ Logs de modération
- ✅ Notation des films (1-10)
- ✅ Commentaires jury
- ✅ Historique des votes
- ✅ JWT authentication
- ✅ CORS configuré
- ✅ Validation inputs
- ✅ Hachage passwords (bcrypt)
- ✅ RBAC (Role-Based Access Control)
- ✅ 8 tables: users, films, ratings, profiles, film_ai_declarations, film_media, collaborators, moderation_logs
- ✅ Relations avec foreign keys
- ✅ Migrations SQL disponibles
- Node.js 14+
- MySQL/MariaDB 5.5+
- npm ou yarn
- Installer les dépendances
cd back_end
npm install- Configuration .env
cp .env.example .env
# Éditer .env avec vos paramètres DB et JWT- Créer la base de données
# Exécuter back_end/sql/schema.sql dans MySQL
# Puis back_end/sql/migration_01.sql pour les nouvelles tables- Démarrer le serveur
npm start
# ou en dev
npm run devLe serveur démarre sur http://localhost:5000
Voir la documentation complète: back_end/ENDPOINTS.md
Principaux endpoints:
POST /api/auth/register- Créer un compte admin (ADMIN/SUPER_ADMIN)POST /api/auth/login- ConnexionGET /api/films- Films publiésPOST /api/films- Soumettre un filmPOST /api/profile- Créer profilPOST /api/upload/single- Upload fichierPATCH /api/moderation/:id/approve- Approuver (ADMIN)POST /api/admin/:filmId/rate- Noter (ADMIN/SUPER_ADMIN)
Production: https://marsai.alwaysdata.net
Base de données: AlwaysData MySQL 5.5
Hébergement: AlwaysData Node.js
- Framework: Express.js 4.18
- Base de données: MySQL 5.5 + mysql2
- Auth: JWT + bcrypt
- Upload: Multer
- Validation: Custom validators
- Architecture: MVC pattern
back_end/
├── controllers/ # Logique métier
├── models/ # Accès base de données
├── routes/ # Définition endpoints
├── middlewares/ # Auth, CORS, validation période
├── validators/ # Validation inputs
├── config/ # Configuration DB et env
├── sql/ # Schémas et migrations
├── uploads/ # Fichiers uploadés
└── modules/ # Helpers (JWT)
f03548c- Add submission period validation middlewareed7f508- Add upload, profiles, AI declaration features + age validation + CORSeb4392f- Add JWT auth and film fields
- Backend API: Complete ✅
- Branch: installer-node
- Version: 1.0.0
MIT