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.
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.
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.
The project follows a 10-week development cycle divided into three phases: Conception, UI/UX Design (Figma), and Development.
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.
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.
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.
Administrators access moderation tools, partner management, and statistical insights including film origin by country and most-used AI tools.
Integration with YouTube Data API validates music and image rights before submitted films hosted on YouTube are listed on the platform.
The entire interface is available in French and English via i18n (internationalization).
marsAI is built with the following:
- Dev Tooling:
- 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
- Prisma is both:
- Frontend:
- React.js
- Styling:
- Database:
- MySQL version 8.4+
- Testing:
- [Vitest)(https://vitest.dev/) Testing framework
- 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
- TypeScript
- Architecture:
- MVC Pattern
- Unit testing on critical functions
- WCAG accessibility compliance
- Mobile First responsive design
- Lighthouse performance optimization
Prerequisites
Before getting started, ensure the following software is installed with the required versions:
Git: latest stable version- fnm (Fast Node Manager)
- macOS (with Homebrew):
Then update your shell dotfiles
brew install fnm
- Windows:
- macOS (with Homebrew):
- [Node.js}(https://nodejs.org/en/download): version 24+ LTS (important)
Install Node.js andnpmwithfnm, like so:cd mars-ai-project fnm use - MySQL: version 8.4+
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
Create and populate the .env files in packages/database and packages/backend.
- Copy
.env.exampleas.envcp packages/backend/.env.example packages/backend/.env cp packages/database/.env.example packages/database/.env
- Edit and adjust the variables in
.envfiles# 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_URLYou 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.
- Make your own copy of the database creation script packages/database/create-database.sql
Where:
-- 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;
marsaidenotes the main databaseprisma_migrate_shadow_db_marsaiPrisma (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).
- Edit the copy to adjust all the variables according to your current database configuration
(database name, database username and password...). - log in to MySQL as
root - Run your copy of the SQL script
- Create the database structure (tables...) and add the seeds, like so:
cd mars-ai-project npm run db:migrate dev npm run db:seed
- Run the backend:
# cd mars-ai-project npm run dev:backend - Run the frontend:
# cd mars-ai-project npm run dev:frontend
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
- ...
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.
We are a team of five:
- Eva DAUMAS: GitHub
- Salah BELHASSAN: GitHub
- Alex BACHIR: LinkedIn | GitHub
- Benjamin ASTIER: GitHub
- Eric BOUCHUT: LinkedIn | GitHub
Thank you to our instructors for their involvement and help: