Skip to content

Marseille 1-minute AI-generated film festival platform

License

Notifications You must be signed in to change notification settings

ebouchut/mars-ai-project

Repository files navigation

marsAI - International AI Film Festival

About the Project

Mars Artificial Intelligence Festival (marsAI) is a film festival in Marseille (France) for one-minute films made entirely by Artificial Intelligence.

This project is a co-creation between La Plateforme (digital school in Marseille) and the Mobile Film Festival.

Description

marsAI celebrates human creativity at the intersection of filmmaking and artificial intelligence. The festival theme for this inaugural edition is Imaginez des futurs souhaitables (Imagine Desirable Futures). The platform serves as the digital hub for film submissions, public viewing of finalist works, jury evaluation, and festival administration.

Key Metrics

Based on Mobile Film Festival's track record with international competitions, the project targets representation from over 120 countries, more than 600 film submissions during the call for projects, and a minimum of 3,000 visitors at the physical event in Marseille.

From all submissions, 50 short films will be selected for the official competition.

Project Timeline

The project follows a 10-week development cycle divided into three phases: Conception, UI/UX Design (Figma), and Development.

Features

Submission Portal

Filmmakers create profiles, submit their 1-minute films, and document the AI tools used throughout their creative process. Videos are hosted externally on YouTube; the platform embeds them after copyright validation.

Public Gallery

Visitors browse and watch all 50 finalist films. The gallery supports filtering by category, AI tool type, and keyword search. Social sharing and newsletter subscription are available without authentication.

Jury Interface

A private, secure voting system allows jury members to rate films on a scale of 1 to 10 and provide comments. Each jury member has an individual dashboard to prevent influence from other members' ratings.

Admin Dashboard

Administrators access moderation tools, partner management, and statistical insights including film origin by country and most-used AI tools.

Copyright Verification

Integration with YouTube Data API validates music and image rights before submitted films hosted on YouTube are listed on the platform.

Bilingual Support

The entire interface is available in French and English via i18n (internationalization).

Tech Stack

marsAI is built with the following:

  • Dev Tooling:
    • fnm Fast Node Manager allows installing and switching Node versions.
    • npm version 11.7+ ‒ the default package manager for Node.js.
    • git ‒ a distributed version control system that tracks changes in code
  • Backend:
    • Express
    • Node.js version 24+
      • Prisma is both:
        • an ORM (library) that translates JS method calls on entities/models into SQL queries on database tables,
        • a CLI tool to handle database migrations to apply, revert changes to the database.
          The database migration (SQL file) and ORM client code are generated based on changes made to the database schema that acts as a source of truth).
      • Joi for defining schemas that describe valid JSON input data
  • Frontend:
  • Database:
  • Testing:
  • Languages:
    • TypeScript
      All woskspace packages in this project use TypeScript ‒ a strongly typed programming language that builds on JavaScript.
    • SQL We use Prisma, an ORM that maps entities
  • Architecture:
    • MVC Pattern

Additional Requirements

  • Unit testing on critical functions
  • WCAG accessibility compliance
  • Mobile First responsive design
  • Lighthouse performance optimization

Prerequisites

Prerequisites

Before getting started, ensure the following software is installed with the required versions:

Installation

Make sure you meet the prerequisites which are necessary for the next steps.

  • Clone the project
    git clone https://github.com/ebouchut/mars-ai-project.git
    cd mars-ai-project
  • Install all dependencies (database, backend, frontend)
    # cd mars-ai-project  
    npm install         # From the project root folder

Configuration

Environment Variables

Create and populate the .env files in packages/database and packages/backend.

  1. Copy .env.example as .env
    cp packages/backend/.env.example  packages/backend/.env
    cp packages/database/.env.example packages/database/.env
  2. Edit and adjust the variables in .env files
    # Edit both .env files and update the variables according to your development environment:
    #   - DATABASE_HOST=TODO_HOST_HERE
    #   - DATABASE_PORT=TODO_PORT_HERE
    #   - DATABASE_USER=TODO_USERNAME_HERE
    #   - DATABASE_PASSWORD=TODO_PASSWORD_HERE
    #   - DATABASE_NAME=TODO_DATABASE_NAME_HERE
    #
    #   - DATABASE_URL=TODO_SEE_.env_FOR_DETAILS
    #   - SHADOW_DATABASE_URL=TODO_SEE_.env_FOR_DETAILS
    #
    #   # Only in packages/backend/.env
    #   - JWT_SECRET=TODO_YOUR_SECRET_KEY_HERE
    #   - JWT_EXPIRES_IN=1h
    #   - JWT_ISSUER=marsai

Important

The .env file MUST NOT be under version control. NEVER ever git commit .env files. It is already gitignored.

The .env file defines environment variables which contains sensitive information, such as database username and password, database name...

Note

How to read variables defined in .env?

When starting up, the application reads the .env file and exports its variables as environment variables.
You can then read variables defined .env like so:

import "dotenv/config"
// ...
process.process.env.DATABASE_URL  // => Return the value of DATABASE_URL

Database Setup

Creating the Databases

You will now run once a SQL script below to create two databases and a database user. Then you will give it access to these databases.

  1. Make your own copy of the database creation script packages/database/create-database.sql
    -- Create the databases for the marsAI project and the database user
    -- Replace the database names, username and password with your current configuration in .env.
    
    CREATE DATABASE IF NOT EXISTS marsai                          DEFAULT CHARACTER SET utf8mb4;
    CREATE DATABASE IF NOT EXISTS prisma_migrate_shadow_db_marsai DEFAULT CHARACTER SET utf8mb4;
    
    CREATE USER IF NOT EXISTS marsai@localhost IDENTIFIED BY 'TODO_PASSWORD_HERE';
    
    GRANT ALL PRIVILEGES ON marsai.*                          TO marsai@localhost;
    -- See: https://www.prisma.io/docs/orm/prisma-migrate/understanding-prisma-migrate/shadow-database
    GRANT ALL PRIVILEGES ON prisma_migrate_shadow_db_marsai.* TO marsai@localhost;
    GRANT CREATE, DROP   ON *.*                               TO marsai@localhost;
    FLUSH PRIVILEGES;
    Where:
    • marsai denotes the main database
    • prisma_migrate_shadow_db_marsai Prisma (the ORM and migration tool) uses this shadow database to detect if a migration introduces unexpected changes such as schema drift and potential data loss. This database contains the N-1 version of the database (before the migration).
  2. Edit the copy to adjust all the variables according to your current database configuration
    (database name, database username and password...).
  3. log in to MySQL as root
  4. Run your copy of the SQL script
  5. Create the database structure (tables...) and add the seeds, like so:
    cd mars-ai-project
    
    npm run db:migrate dev
    npm run db:seed

Usage

Running the Application

Development Mode

  • Run the backend:
    # cd mars-ai-project
    npm run dev:backend
  • Run the frontend:
    # cd mars-ai-project
    npm run dev:frontend

Contributing

See CONTRIBUTING.md for detailed guidelines, including:

  • Architecture overview and directory structure
  • Code documentation
  • Naming conventions
  • Database schema, ERD (Entity Relationships Diagram)
  • Git branching strategy and commit conventions
  • Updating the database schema (Prisma workflow)
  • Adding dependencies
  • Running tests
  • Submitting pull requests
  • ...

License

This project is developed for educational purposes as part of the CDPI program at La Plateforme_ in partnership with Mobile Film Festival.

🇺🇸 This project is dual-licensed under AGPL v3 for open source use and a commercial license for proprietary use. Contact ebouchut@gmail.com for commercial licensing.

🇫🇷 Ce projet est sous double licence AGPL v3 pour une utilisation open source et sous licence commerciale pour une utilisation propriétaire. Contactez ebouchut@gmail.com pour obtenir une licence commerciale.

Authors

We are a team of five:

Acknowledgments

Thank you to our instructors for their involvement and help:

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •