Case study — 02

Musée FABI

Context
SAÉ 2.03 — BUT MMI, 1st year
Year
2026
Role
Full-stack development
Deliverables
Dynamic site + PHP API + database
Links
GitHub ↗

A complete website for a fictional art museum, the Musée FABI, built around two main workstreams: a 3D virtual tour and a database that powers the whole site.

The 3D tour, built with Three.js, recreates the museum room by room: free keyboard navigation (ZQSD/WASD), sprinting, and a custom collision system that tests the player's position against the navigation zones of each room and corridor. A real-time minimap shows the visitor's position in the building, and artwork labels appear by proximity — title, artist, art movement — when you approach a sculpture or painting. Rooms and their artworks are loaded on the fly depending on the player's distance, to keep the experience smooth.

Behind the interface, a MySQL database structures all the content: artworks, categories, rooms, users, ratings and comments. I designed the schema, wrote the queries with PDO using prepared statements, and exposed the data to the front end through a PHP API (catalogue, favourites, ratings, user session). The catalogue shown on the site and the artworks hung in the 3D tour come from this same data source.

Around this foundation, the site also offers a full customer area (sign-up, login, PHP sessions, favourites), ticket booking by email via PHPMailer, a donation page, a newsletter and a multilingual interface.

This is my first complete full-stack project: designing a database, securing an API, handling authentication and real-time 3D — while crafting a dark, painterly art direction worthy of a museum.