Project 01 · 2026 · Live
Astero
A portfolio you fly, not scroll

- Role
- Design, 3D, and all front-end development
- Stack
- Three.js
- WebGL
- Astro
- Blender
- WebXR
- Web Audio API
The website is the spaceship. Instead of a homepage, you land inside a first-person cockpit you can look around in 360° — holographic project panels on one wall, site settings on the other, an arcade room behind you. Built from scratch in Three.js with a custom Blender-to-web pipeline, WebXR support for headsets, and a procedural Web Audio soundtrack.
- 360°navigable cockpit
- 47 KBDraco-compressed 3D model
- 60 fpsdesktop, mobile and VR
Project 02 · 2026 · Live
Shinka
Stand at the glass and watch life go by

- Role
- Concept, art direction, development
- Stack
- Three.js
- WebGL
- Web Audio API
- Blender
- Python
- GLSL
A contemplative 3D site: you stand at the glass of a large tank and watch life go by. Nine species cross the view — some often, some almost never; rarity follows the visitor’s real time of day, and at night the jellyfish glow and other species come out. You catch nothing: you observe, keeping the cursor on an animal, and it joins your notebook. The animals are generated by Blender scripts — geometry, a skin computed point by point, swimming written as biomechanics — and every sound except the music is synthesised live in Web Audio. What it taught me: designing a place where almost nothing happens, and making that enough.
- 9species, from the sardine to the whale shark
- 0recorded sound effects — every one is synthesised live
- 4rarity tiers, following the visitor’s real time of day
Project 03 · 2026 · Finished
WeatherHub
A native weather app whose sky is drawn by the GPU

- Role
- Design and development
- Stack
- Swift
- SwiftUI
- Metal
- MapKit
- Open-Meteo API
A macOS weather app in Swift and SwiftUI, on Open-Meteo data. Forecasts, favourite cities, UV and air quality, a solar arc, a map of sports facilities, and sport profiles with adjustable thresholds that tell you whether today is a running day. The part I care about most is the sky: nineteen conditions — ten of them extreme — rendered in Metal, so the weather is something you watch move, not a label you read. What it taught me: a native app forces you to finish — every empty state, every error, every contrast ratio.
- 19sky conditions drawn on the GPU
- 8sports, each scored against your own thresholds
Project 04 · 2026 · Live
Cypher&co
A spy agency’s website, where every page is a room

- Role
- Theme, 3D scenes, design and development
- Stack
- WordPress
- PHP
- Three.js
- WebGL
- GLSL
- Blender
A WordPress site for an invented spy agency — four agents, a gadget shop, case files — built on a theme I wrote from scratch. Each page is a room rendered in Three.js: an investigator’s office where the cases come out of the WordPress database, a circus tent whose big red button reveals the contact, a gadget workshop. Same cinematic pipeline everywhere — AgX, ambient occlusion, bloom, film grain. Around it, a surveillance HUD, an “agency terminal” intro, crossfades between pages, a liquid-glass engine in WebGL, and two easter eggs: a Caesar cipher and the Konami code. What it taught me: a CMS is not a limit on what a site can be.
- 3rooms in 3D, one per page
- 2easter eggs to crack
Project 05 · 2026 · Finished
Signaux actions
Stock signals, measured before they are trusted

- Role
- Design and development
- Stack
- Python
- pandas
- WebGL2
- GLSL
- PyObjC
- yfinance
A stock-signal system in Python. It started in April 2026 as crypto bots — grid, scalping, machine learning — with a backtester to compare them. It became a bot that scans 49 large US companies every five minutes, ranks them by momentum and technical state, and places no order: I do that by hand. Its dashboard is a native macOS app whose main view is a room — five glass panels hanging in front of a city drawn in raw WebGL2, with the real sun, its shadows and passing clouds. The part I am proudest of is the measurement: every ranking is replayed session by session against 200 shuffled versions of itself — the same signals, handed to the wrong stocks. My own score turned out to have no predictive power, and the dashboard says so. What it taught me: a signal you have not measured is an opinion.
- 49large US companies, scanned every five minutes
- 200shuffled rankings to beat — the same signals, given to the wrong stocks
- 0orders placed by the bot — I decide, by hand
Project 06 · 2026 · Live
Kaorie
An invented perfume and drinks brand, from shop window to back office

- Role
- Front end, identity, animations — with Léa Devallez
- Stack
- HTML
- CSS
- Vanilla JS
- PHP
- Twig
- MySQL
A school project, as a pair with Léa Devallez: a complete shop for an invented brand of perfumes and drinks. The front end is hand-written HTML, CSS and JavaScript — intro loader, live search, a cart that survives reloads, a bottle-engraving modal, forms with real validation, cookie banner — and behind it a PHP and Twig back office on a MySQL database we designed together, from the conceptual model down to the SQL. I took the identity, the animations and the product pages; she took the cart and the search. What I learnt: working in two on one codebase means writing to be read by someone else.
- 8products, cart to checkout
- 2of us — with Léa Devallez
About · Blois, France — able to relocate
Where I come from, and what I am good at.
I started with a vocational degree in digital systems — fixing machines, configuring networks, installing cameras and alarm systems. I liked the hands-on work and the social side that came with it. But I wanted to explore other horizons.
So I moved to multimedia design, and there I found my path: designing and coding websites and apps. Today I run a small creative studio with a friend, which lets me explore new tools and what they make possible.
I am learning Japanese every day — I even built my own app for it — and I am working on my English too. I want to do my internship abroad, to work inside another design and code culture.
What I do
Real-time 3D on the webThree.js and WebGL scenes that run at 60fps in a browser — and in VR headsets. Custom Blender-to-web pipelines, Draco compression, shader work.
Interface designI design what I build. Typography, motion, and interaction are not a layer on top of the code — they are the reason the code exists.
Sound & generative audioWeb Audio API, procedural sound, MIDI. Most of my projects have their own sound identity, because silence is a design decision too.
Path
2025 — 2028BUT Multimedia & Internet (MMI)IUT de Blois — University of Tours, France · Design, front-end development, audiovisual production.
2022 — 2025Vocational Baccalaureate — Digital SystemsLycée Saint-Jean-Baptiste de La Salle, Bourges, France · Hardware, networks, systems maintenance. Where I learned how machines actually work.
Skills
3D & real-timeThree.js · WebGL / WebGL2 · GLSL · Blender · WebXR · Draco
Front-endJavaScript · HTML / CSS · Astro · Canvas API · PWA
Native & back-endSwift · SwiftUI · Metal · Python · PHP · MySQL · WordPress
Sound & toolsWeb Audio API · MIDI · Ableton · Git · Godot
Languages
EnglishA2–B1 (CEFR) — practising every day
JapaneseBeginner — studying daily, aiming for JLPT N5
A small creative studio I run with a friend. He handles the people, I handle the code and the design. It is where I learned to finish things, ship them, and then live with the consequences.
Practical details
I am looking for a spring 2027 internship abroad, in creative development, front-end, or interactive design. I practise English every day — my level is A2–B1 — and I study Japanese daily, aiming for JLPT N5.
Availability12 April – 25 June 2027
Based inBlois, France — able to relocate
Working languagesFrench, English (A2–B1)
I reply within 48 hours.