Rama Herbin — Track Record

In Five Volumes

A catalogue of five projects, presented as a bound collection — front-end architecture, interaction design and the initiative behind each one.

RH·01 · VOL. I

Fleur de Papier

Period
2020–2023
Discipline
Cultural mediation · creative development
Role
Creative Developer, 2020–2023, Paris — front-end architecture, interaction and animation across all productions.

Turn cultural collections into touch-driven installations for national institutions and museums.

Key initiative
Treated Flash-to-web migrations as redesigns, preserving narrative value while improving interaction and feedback.
Shipped
6 productions across 5 institutions, including BnF Richelieu, La Contemporaine and an interactive comic.
SPREAD 01 · THE PREMISE

Collections visitors can touch

For five cultural institutions across France, collections became something visitors could touch, zoom into and follow as a story — not just look at through glass.

The output

  • 6 productions across 5 institutions
  • Creative Developer, 2020–2023, Paris
  • Stack: Vue · Nuxt · GSAP
  • More than 40 interactive cultural and museum devices over the period

BnF Richelieu · La Contemporaine · Terre Adélice · L’Atrium de Rouen · Auberge des Dauphins.

SPREAD 02 · THE INITIATIVE

More than a Flash port

Flash-to-web migrations weren’t literal ports. Each rebuild preserved the story’s narrative value, and I proposed the animations and interactions that carried it into the modern web.

  • Migrated legacy Flash / ActionScript 3 experiences to standards-based JavaScript and Vue.js
  • Flash → modern web migrations — role row tagged LEGACY, alongside front-end architecture on ALL PROJECTS
  • Migrations were not literal ports — narrative value was preserved while interaction and feedback improved

I

  • Proposed treating Flash migrations as redesigns rather than literal ports
  • Designed the interaction and animation layer with GSAP and Canvas
  • Implemented the front-end architecture across all six productions

WE

  • Explored how each story should read on shared gallery touchscreens
  • Iterated the migrated interfaces with designers, illustrators and the institutions
  • Shipped rebuilt experiences for the BnF, museums and exhibitions

Rama played a key role in the transition of our interactive projects from Adobe Flash (ActionScript) to modern web technologies (JavaScript / Vue), bringing both technical initiative and a strong sensitivity to design and user experience. He was not only focused on code quality but also contributed creatively by proposing animations and interactions that enhanced the immersive experiences we built for cultural institutions such as the BnF, museums and exhibitions.

— Romain Déflache, Fleur de Papier, Digital Cultural Mediation · LinkedIn recommendation, June 2026
SPREAD 03 · THE CHALLENGE

Working for every kind of visitor

Public installations had to work on modest kiosk hardware, gallery networks and for visitors from children to first-time museum-goers — with zero instruction.

  • Public installations must work for everyone: children, seniors and first-time visitors alike
  • Smooth motion on modest kiosk hardware and fast loads on gallery networks: performance is part of the design
  • A multi-language idle attract screen (DÉBUT · START · INICIO) invites passers-by without a word of instruction
Screen capture: cleaning the coins with a fingertip
Visitors clean and explore ancient coins by touch on a shared gallery screen.
Screen capture: the 169 BCE coin-hoard opening scene with the DÉBUT / START / INICIO language bar
A multi-language idle attract screen invites passers-by without a word of instruction.
On-site constraints
  • Touch-first gestures with generous hit targets for one visitor or several at once
  • Shared large-format screens
  • Kiosk & touch-table deployment across venues
SPREAD 04 · THE COLLABORATION

Built alongside designers and illustrators

Every production moved from prototype to on-site installation with designers, project managers, illustrators and the institutions themselves — not built alone.

  • Terre Adélice credits: illustration by Nicolas (@nicolart_dumanoir), design by Elia (@pierrrenoire)
  • Content shaped together with curators and institutions, interfaces designed for visitors of every age
  • Took productions from prototype to on-site installation alongside designers, project managers and illustrators
Screen capture: illustrated narrative of Joseph Pellerin’s coin inventory
An illustrated narrative walks visitors through Joseph Pellerin’s 18th-century coin inventory.
Terre Adélice — an interactive comic combining illustration, narration and web interactions. · 00:51
SPREAD 05 · THE SHIPPED WORK

Six productions, five institutions

Six productions shipped for five institutions — from BnF Richelieu’s touch tables to an interactive comic set in the Ardèche.

  • BnF Richelieu — touch, zoom, FR/EN/ES attract screen
  • La Contemporaine — editorial web, exile testimonies and the Chilean dictatorship, accessibility-focused
  • Terre Adélice — interactive comic; illustration by Nicolas, design by Elia
  • La Contemporaine touch tables, L’Atrium de Rouen, Auberge des Dauphins

I

  • Proposed and built the interaction layer for the BnF Richelieu attract screen
  • Implemented touch and zoom interactions on shared gallery hardware
  • Designed the animation timelines for the Terre Adélice interactive comic

WE

  • Explored the multi-language attract experience with the BnF team
  • Iterated production media with illustrators and designers over three years
  • Shipped six productions across five cultural institutions
Visitors explore grouped collection highlights by touch, then zoom into individual works for a closer look. · 00:29
RH·02 · VOL. II

FancyUI

Period
2026–
Discipline
Open-source component library
Role
Self-initiated open-source project — sole author of concept, visual direction, implementation, APIs and docs.

Build a reusable, maintainable Svelte 5 component system without losing each interaction’s personality.

Key initiative
Noticed motion experiments needed a system: treated motion as part of a component’s identity, not decoration.
Shipped
132 components, 2,900+ unit tests, published to npm as fancy-ui-svelte with a live docs site.
SPREAD 01 · THE PREMISE

Motion experiments needed a system

Nobody assigned FancyUI. It grew out of motion experiments that needed somewhere to live as a reusable, maintainable component system rather than one-off demos.

  • Self-initiated — Rama owns concept, visual direction, implementation, APIs and docs
  • 132 components: core primitives (forms, navigation, overlays) alongside buttons, text animations, backgrounds and effects
  • MIT license, author Rama Herbin, published to npm as fancy-ui-svelte
Stack
  • Svelte 5 runes
  • SvelteKit 2
  • Tailwind CSS 4
  • TypeScript 5
  • Vitest 4
  • bits-ui 2
  • GSAP 3
SPREAD 02 · THE INITIATIVE

Motion as identity, not decoration

Nobody assigned this. I treated each component’s motion as identity, not decoration — then built a system to keep that promise at scale.

  • The challenge: preserve each interaction’s personality inside a reusable, maintainable system
  • 2,900+ unit tests with Vitest and Testing Library
  • Initial public release 0.1.0 (2026-03-13): 50 components across 10 categories
  • Now 132 components in the repo (published npm README at 0.9.1 still lists 61 components / 600+ tests)

I

  • Proposed treating motion as a first-class part of each component’s identity
  • Designed the component APIs, visual direction and documentation site
  • Implemented the WebGPU/WebGL renderers behind FluidCursor and FireworksHdr

WE

  • Explored which interactions were worth generalising into reusable primitives
  • Iterated the library from 50 components at 0.1.0 to 132 today
  • Shipped fancy-ui-svelte to npm with a live docs site and llms.txt
In production
  • apps/main — hero FluidCursor, skins engine
  • apps/hdr — FireworksHdr fireworks engine
SPREAD 03 · THE CHALLENGE

Reusable, yet still full of personality

The hard part wasn’t building 132 components — it was keeping each one’s personality intact while making the system predictable, typed and testable enough to reuse anywhere.

  • Components named in the brief: FluidCursor (WebGL fluid simulation following cursor), ImageTrailCursor (cursor-following image trail, 8 variants), LiquidGlass (liquid glass morphism effect)
  • CI gates: pnpm check:registry (component registry parity) and pnpm check:i18n (i18n catalog parity)
  • Full TypeScript typing for props and events across all components
Testing & quality
  • 2,900+ unit tests (Vitest + Testing Library)
  • Playwright end-to-end suite
  • svelte-check strict type checking
  • Registry + i18n parity gates in CI
SPREAD 04 · THE COLLABORATION

Built for other developers, and agents

FancyUI serves two audiences at once: developers browsing the docs site, and AI coding agents reading structured llms.txt references before they write a line of code.

  • Documented for AI agents via llms.txt and llms-full.txt (full props reference)
  • Part of the "Claude for Open Source" program
  • Used in production by apps/main (hero FluidCursor, skins engine) and apps/hdr (FireworksHdr)
  • Inspired by Inspira UI, Aceternity UI and Magic UI
SPREAD 05 · THE SHIPPED WORK

132 components, live and versioned

From 50 components at the first public release to 132 today, with almost 3,000 tests behind them — versioned, documented and shipped to npm.

  • 0.1.0 — 2026-03-13: initial public release, 50 components across 10 categories
  • 132 components, 2,900+ unit tests, at 0.9.1
  • MIT licensed, npm package fancy-ui-svelte

I

  • Proposed and designed the component APIs and visual direction
  • Implemented the renderer behind FluidCursor and FireworksHdr
  • Wrote the documentation and the llms.txt reference

WE

  • Explored contributions and issues from the open-source community
  • Iterated the release process with Changesets-driven versioning
  • Shipped ten minor and patch releases from 0.1.0 to 0.9.1
RH·03 · VOL. III

Ansys Digital Safety Manager

Period
current
Discipline
Safety-critical B2B application
Role
Front-End & UI Engineer at Ansys, part of Synopsys Inc., Lyon, France — current.

Build intuitive, high-performance UIs for safety engineers planning, executing and monitoring safety cases.

Key initiative
Presented his Claude Code workflow at a team workshop to make AI-assisted development concrete and reproducible.
Shipped
Enterprise-scale safety applications built with Angular, used internally to plan, execute and monitor safety cases.
SPREAD 01 · THE PREMISE

UIs for safety-critical engineering work

Ansys Digital Safety Manager gives safety engineers one interface to plan, execute and monitor safety cases — enterprise-scale software built with Angular.

  • Front-End & UI Engineer at Ansys (part of Synopsys Inc.), current, Lyon
  • Enterprise-scale safety applications built with Angular: UI/UX for safety engineers planning, executing and monitoring safety cases
  • Tags: Angular · TypeScript · Enterprise
  • Confidential project · no public visuals

DETAILS UNDER NDA — this volume speaks in the shape of the work, not its screens.

SPREAD 02 · THE INITIATIVE

A workshop on AI-assisted development

I presented my Claude Code workflow at a team workshop, turning a personal habit into something colleagues could reproduce on their own safety-critical codebase.

  • Presented his Claude Code workflow at a team workshop to make AI-assisted development concrete and reproducible
  • Worked on comparison logic, filters, indicators and baseline-difference experiences
  • SonarQube quality expectations applied to the codebase

I

  • Proposed presenting a live Claude Code workflow instead of just describing it
  • Designed the workshop format to make AI-assisted development concrete
  • Implemented comparison, filter, indicator and baseline-diff features on the team’s roadmap

WE

  • Explored how AI-assisted workflows could fit safety-critical development
  • Iterated the workshop format based on the team’s questions
  • Shipped features under the same SonarQube quality bar as the rest of the codebase

consistently delivers clean, maintainable interfaces and approaches problems with both technical rigor and creativity.

— Hichem Rekouane, Staff R&D Engineer at Synopsys · LinkedIn recommendation, March 2026
SPREAD 03 · THE CHALLENGE

Making dense differences legible

Comparing safety cases means surfacing what actually changed in dense engineering data — filters, indicators and baseline-diffs that make a difference legible at a glance.

  • Comparison logic, filters, indicators and baseline-difference experiences
  • SonarQube quality expectations
  • Confidential project · no public visuals
Stack
  • Angular
  • TypeScript
  • Enterprise-scale safety application
SPREAD 04 · THE COLLABORATION

Trusted by the platform team

None of this was built in isolation — a colleague led the platform side while this volume covers the front-end, reviewed and shaped alongside the rest of the team.

Rama worked on full-stack tooling used by more than 200 engineers to manage Kubernetes deployments, combining Angular frontends with CI/CD pipelines built with GitHub Actions.

— Mathilde Gallouët, Platform Engineer at Synopsys · LinkedIn recommendation, July 2026
  • Presented his Claude Code workflow at a team workshop, in front of colleagues
  • Tags: Angular · TypeScript · Enterprise

Two different roles — platform engineering and R&D — recommending the same collaborator.

SPREAD 05 · THE SHIPPED WORK

In production, details withheld

Ansys Digital Safety Manager is live, enterprise software used daily by safety engineers — the work is real and current, even where the screens can’t be shown.

  • Confidential project · no public visuals
  • Enterprise-scale safety applications built with Angular
  • Current role, Lyon, France

I

  • Proposed and presented the Claude Code workshop that made AI-assisted development reproducible for the team
  • Built comparison, filter, indicator and baseline-diff features for safety-case review
  • Held the same SonarQube quality bar as the rest of the codebase

WE

  • Explored how the platform and front-end sides of the product should meet
  • Iterated the interface with safety engineers who use it daily
  • Shipped and maintain Ansys Digital Safety Manager in production
RH·04 · VOL. IV

Is My Screen HDR?

Period
2026
Discipline
WebGPU product experiment
Role
Solo product experiment — concept, WebGPU/WebGL engine, verdict copy and shipped app.

Answer one hardware question in five seconds: can your display actually paint brighter than white?

Key initiative
Separated what the screen can do from what the browser allows, with a four-case verdict matrix.
Shipped
Live at is-my-screen-hdr.rama.app with WebGPU HDR fireworks, a WebGL2 fallback and mobile support.
SPREAD 01 · THE PREMISE

One question, five seconds, fireworks

A five-second answer to one question: can your display actually paint brighter than white?

  • WebGPU fireworks burn the question into the sky, then a verdict separates what the screen can do from what the browser will allow
  • Four-case verdict matrix: true-hdr · browser-clamped · screen-sdr · no-hdr
  • Display signals read via matchMedia: dynamic-range: high, color-gamut: p3
Stack
  • WebGPU float16 + display-p3 + extended tone mapping
  • WebGL2 fallback
  • Svelte 5
  • Vercel Analytics
SPREAD 02 · THE INITIATIVE

Separating screen truth from browser limits

Most displays can go brighter than white; most browsers won’t let a page prove it. I built a verdict that keeps the two questions separate.

  • Four-case verdict: true-hdr, browser-clamped, screen-sdr, no-hdr — computed from display signals and the actual render level achieved
  • "Your screen can. Your browser won’t." — verdict copy for the browser-clamped case
  • Only WebGPU with extended tone mapping actually paints above white — every other render level is SDR output regardless of screen capability

I

  • Proposed separating "can the screen do it" from "will the browser allow it" as two independent signals
  • Designed the four-case verdict matrix and its copy
  • Implemented the WebGPU float16/display-p3 path and its WebGL2 fallback

WE

  • Explored how to phrase a verdict a non-technical visitor would understand in five seconds
  • Iterated the fireworks engine until the visual made the question felt, not just answered
  • Shipped the matrix as the product’s one and only screen
SPREAD 03 · THE CHALLENGE

Rendering real HDR inside a browser

Proving HDR inside a browser meant a WebGPU float16 pipeline in display-p3 with extended tone mapping — and a WebGL2 fallback for every device that can’t run it.

  • WebGPU path: float16 + display-p3 + extended tone mapping
  • WebGL2 fallback for devices without WebGPU HDR support
  • Proof strip: SDR · 100 nits / HDR · 1000+ nits
  • Mobile adaptation: safe areas, touch copy, tap targets
Engineering
  • Liquid-glass UI redesign
  • Vitest test suites
  • Deployed on Vercel via adapter-vercel
SPREAD 04 · THE COLLABORATION

A fireworks engine, shared back

The fireworks engine that answers the HDR question didn’t stay locked inside one app — it shipped as a MIT-licensed FancyUI component anyone can reuse.

  • Fireworks engine shipped as a fancy-ui component (MIT license)
  • FireworksHdr: WebGPU path (float16 + display-p3 + extended tone mapping) with a WebGL2 fallback
  • Mobile adaptation: safe areas, touch copy, tap targets
SPREAD 05 · THE SHIPPED WORK

Shipped: one page, one verdict

Is My Screen HDR? is live: WebGPU fireworks, a four-case verdict, a WebGL2 fallback and full mobile adaptation, all in one page.

  • Live at is-my-screen-hdr.rama.app
  • Tags: WebGPU · WebGL2 · HDR · Shaders · Svelte 5
  • Deployed on Vercel via adapter-vercel, with Vercel Analytics

I

  • Proposed splitting the screen question from the browser question
  • Designed the four-case verdict matrix and its copy
  • Implemented the WebGPU/WebGL rendering pipeline and the liquid-glass UI

WE

  • Explored how the fireworks should read on both HDR and SDR screens
  • Iterated the mobile experience for safe areas and touch targets
  • Shipped the app live on Vercel with analytics
RH·05 · VOL. V

Selected Experiments

Period
2025–2026
Discipline
Monorepo, skins, R&D
Role
Self-directed R&D across this monorepo: apps/main, apps/photo, apps/langtree and this shelf itself.

Keep a live bench of ideas — skins, shaders, playgrounds — that feed back into the real work.

Key initiative
Shipped alternate runtime skins and a dithered hero fluid as a live design-system test bed.
Shipped
Retro OS and Brutal skins, a bitmap-dithered hero, a language tree, a photo scatter home, a carbon page.
SPREAD 01 · THE PREMISE

A monorepo as a live bench

This monorepo doubles as a bench: apps and pages built to test an idea quickly, then feed whatever works back into the real portfolio.

  • Retro OS and Brutal runtime skins for rama.app
  • Bitmap-dithered hero fluid under the skins
  • apps/langtree — interactive Tree of World Languages
  • apps/photo — scatter home, image-trail cursor, WebGPU test-motion playground
Also in this bench
  • This 3D bookshelf (apps/shelf)
  • A carbon-footprint page (~45KB gzipped, ~0.2g CO₂/visit, <1.2s first paint, 95+ Lighthouse)
SPREAD 02 · THE INITIATIVE

Skins as a design-system stress test

I built Retro OS and Brutal as full alternate skins for the same portfolio — one codebase, one content layer, three completely different looks.

  • Retro OS and Brutal runtime skins for rama.app (#38, #40)
  • Bitmap-dithered hero fluid under the skins (#39)
  • Real LinkedIn testimonials modal reused across skins

I

  • Proposed the skins as a way to stress-test the content layer, not just a visual gimmick
  • Designed the Retro OS and Brutal art direction on top of the same data
  • Implemented the bitmap-dither treatment for the hero fluid under both skins

WE

  • Explored how far the same content could stretch across different visual systems
  • Iterated each skin against the same real production content
  • Shipped both skins live on rama.app alongside the standard design
SPREAD 03 · THE CHALLENGE

Fast experiments, still production quality

Every experiment still has to ship clean: a carbon page under 45KB gzipped, sub-1.2-second first paint, and a 95+ Lighthouse score.

  • ~45KB gzipped bundle, ~0.2g CO₂ per visit, <1.2s first paint, 95+ Lighthouse score
  • Lazy loading and code splitting for animations and interactive elements
  • Modern image formats (WebP, AVIF) with fallbacks for compatibility
Performance strategies
  • Server-side rendering and intelligent caching
  • Efficient CSS via Tailwind’s purge system
  • Optimized vector graphics and compressed assets
SPREAD 04 · THE COLLABORATION

Roots at Gobelins, l’École de l’Image

The habit of building and testing ideas fast started at Gobelins, l’École de l’Image, in Paris.

  • Gobelins Paris, l’École de l’Image
  • Real, verbatim LinkedIn testimonials modal, reused across the standard and Retro OS design trees
  • Logos shown on site: Angular, Gobelins, Nvidia, Synopsys, Fleur de Papier, Ansys, Claude for Open Source

I had the pleasure of working with Rama on our final-year project at Gobelins, and can attest to his professionalism and his front-end skills. Our collaboration was smooth and efficient.

— Elie Nissen, Product Designer, Gobelins Alumni · LinkedIn recommendation, February 2025
SPREAD 05 · THE SHIPPED WORK

A working bench, always current

Retro OS, Brutal, the dithered hero, langtree, the photo scatter home and this shelf itself are all live, shipped experiments from the same bench.

  • Retro OS and Brutal runtime skins, live on rama.app
  • Bitmap-dithered hero fluid under the skins
  • apps/langtree — interactive Tree of World Languages, live
  • apps/photo — scatter home, image-trail cursor, WebGPU test-motion playground
  • Carbon-footprint page: ~45KB gzipped, ~0.2g CO₂/visit, <1.2s first paint, 95+ Lighthouse

I

  • Proposed the skins as a stress test for the content layer, not decoration
  • Designed the Retro OS and Brutal art direction and the bitmap-dither treatment
  • Implemented the language tree, the photo scatter home and this bookshelf

WE

  • Explored how far one data layer could stretch across different visual systems
  • Iterated the carbon page until it hit its own performance budget
  • Shipped every experiment listed here live on rama.app or its sibling apps