Skip to content

Repository files navigation

🎬 marsAI Film Festival - Backend API

Backend complet pour le festival de films IA marsAI.

✅ Fonctionnalités Implémentées

🔐 Authentification & Utilisateurs

  • ✅ Inscription avec validation âge 18+
  • ✅ Connexion avec JWT tokens (7 jours)
  • ✅ Roles: DIRECTOR, JURY, ADMIN
  • ✅ Gestion profils utilisateurs (CRUD)

🎥 Films

  • ✅ 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

🤖 Déclaration IA

  • ✅ Formulaire déclaration utilisation IA
  • ✅ Types: FULL_AI (100% IA) ou HYBRID (mix IA/humain)
  • ✅ Description outils et méthodologie
  • ✅ Association à chaque film

📤 Upload de Fichiers

  • ✅ Upload images (poster, stills) - JPG, PNG, WEBP
  • ✅ Upload sous-titres - SRT, VTT
  • ✅ Limite: 5MB par fichier
  • ✅ Support upload simple et multiple (max 5)

👨‍⚖️ Modération (ADMIN)

  • ✅ Approbation des films soumis
  • ✅ Refus avec raison
  • ✅ Logs de modération

🏆 Jury & Votes

  • ✅ Notation des films (1-10)
  • ✅ Commentaires jury
  • ✅ Historique des votes

🔒 Sécurité

  • ✅ JWT authentication
  • ✅ CORS configuré
  • ✅ Validation inputs
  • ✅ Hachage passwords (bcrypt)
  • ✅ RBAC (Role-Based Access Control)

📊 Base de Données

  • ✅ 8 tables: users, films, ratings, profiles, film_ai_declarations, film_media, collaborators, moderation_logs
  • ✅ Relations avec foreign keys
  • ✅ Migrations SQL disponibles

🚀 Installation Backend

Prérequis

  • Node.js 14+
  • MySQL/MariaDB 5.5+
  • npm ou yarn

Configuration

  1. Installer les dépendances
cd back_end
npm install
  1. Configuration .env
cp .env.example .env
# Éditer .env avec vos paramètres DB et JWT
  1. 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
  1. Démarrer le serveur
npm start
# ou en dev
npm run dev

Le serveur démarre sur http://localhost:5000

📡 API Endpoints

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 - Connexion
  • GET /api/films - Films publiés
  • POST /api/films - Soumettre un film
  • POST /api/profile - Créer profil
  • POST /api/upload/single - Upload fichier
  • PATCH /api/moderation/:id/approve - Approuver (ADMIN)
  • POST /api/admin/:filmId/rate - Noter (ADMIN/SUPER_ADMIN)

🌐 Déploiement

Production: https://marsai.alwaysdata.net

Base de données: AlwaysData MySQL 5.5
Hébergement: AlwaysData Node.js

📚 Technologies

  • Framework: Express.js 4.18
  • Base de données: MySQL 5.5 + mysql2
  • Auth: JWT + bcrypt
  • Upload: Multer
  • Validation: Custom validators
  • Architecture: MVC pattern

🔧 Structure Projet

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)

📋 Commits Récents

  • f03548c - Add submission period validation middleware
  • ed7f508 - Add upload, profiles, AI declaration features + age validation + CORS
  • eb4392f - Add JWT auth and film fields

👥 Contributeurs

  • Backend API: Complete ✅
  • Branch: installer-node
  • Version: 1.0.0

📄 License

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages