Skip to content

Hi, I'm Redon.

I'm a fullstack engineer and tech lead at DataCose, and I build my own products on the side.

Social Links:

Forevermore

A platform for personalized animated gift worlds. Pick a scene, fill it with photos and a song, and send it like a message.

Period
2026 — Present
Stack
  • Nuxt 4
  • Tailwind CSS v4
  • Supabase
  • Cloudflare Workers
  • Three.js
  • Paddle

Forevermore lets you send someone a small animated world. You pick a scene from a catalog (a fairground at night, a manor seen in cross-section, a coral reef), fill it with your own photos, a short letter and a song, and send it the way you'd send any message. The person on the other end opens a link on their phone. There's no account to create and nothing to install.

I design, build and ship it on my own, from the illustrations on the catalog cards to the Postgres migrations underneath.

The Fairground
The Manor
Deep Reef Dive
Starlit Letter

How it's built

It's a pnpm monorepo with five apps and two shared packages. The apps are split by who's looking at the screen:

  • a marketing site,
  • an editor, where someone builds a gift and pays for it,
  • a small viewer that shows the finished gift to the person receiving it,
  • and two internal tools that no customer ever sees.

The customer-facing apps are Nuxt 4 on Cloudflare, with Supabase for Postgres, auth and file storage, and Paddle for payments. The worlds themselves are either Three.js scenes or 2D scenes built with SVG, CSS and GSAP. Both kinds read the same data contract, which is a big part of why a new editor feature doesn't mean updating dozens of worlds one by one.

What the write-ups cover

When I started, I assumed the hard part would be the animation. It turned out to be the plumbing: giving every gift its own subdomain, making sure the browser can never mark a gift as paid, and building worlds in a way that doesn't turn each new one into a from-scratch project.

Subdomains and permissionsA subdomain for every gift, and a Postgres permission model that keeps payment state out of the browser's reach.One payload, many worldsOne data contract for every world, videos that pretend to be photos, and 3D assets written as code.A marketing pipeline built as a state machineA separate content pipeline with compare-and-swap updates and every expensive dependency behind a seam.

GitHub activity