All work

Case study 03

How’s the World Feeling?

Share how you feel, anonymously, and watch the world’s mood shift live on a 3D globe. A small realtime product I shipped under Sapplify, complete with its own growth engine.

Role
Solo: product, design, engineering
Timeline
2024 to June 2026
Platform
Web (desktop & mobile)
Stack
Vanilla JS, Supabase, Vercel
Status
Retired, demo available
How’s the World Feeling?: a rotating globe, the world’s mood, live percentages for eight emotions and the buttons to share yours

01The idea

It started as a CSS project. I was learning CSS in depth and wanted something worth styling, so I built a rotating globe out of nothing but CSS. Then I built a product around it.

The product asks one question to everyone at once: how are you feeling right now? Pick one of eight emotions, and your answer joins everyone else’s on the live globe. No account, no profile, nothing to fill in. Just a one-tap moment of connection with the rest of the world.

02The product

The whole experience fits on one screen: a slowly rotating globe, the world’s current mood, a live breakdown of all eight emotions, and a feed of people sharing in real time (“Someone in Tokyo feels calm”).

Anonymous by design

No sign-up. Location is optional and stored only at city level, so sharing a feeling never costs any privacy.

A welcome flow that explains itself

First-time visitors get a short intro and a clear consent choice before anything is tracked, backed by proper privacy, terms and FAQ pages.

Light enough for any device

The globe is built in pure CSS, no WebGL or 3D library, so it loads fast and runs smoothly on phones.

03How it worked

A static front end on Vercel, with Supabase doing the heavy lifting:

  1. Share an emotion

    One tap sends the emotion (and, if allowed, the city) straight to the database. No server code in between.

  2. Supabase Postgres

    Row-level security only accepts the eight valid emotions, and a database trigger rate-limits each device, so the public endpoint can’t be spammed.

  3. Supabase Realtime

    Every new row is broadcast to everyone who has the page open.

  4. Live globe & stats

    Clients update the mood, the percentages and the live feed instantly, without reloading.

04Growth on autopilot

A product like this lives from attention, so I automated the content too. Every day a short video reel with yesterday’s world mood was produced without manual work:

  1. Daily stats

    A script pulls yesterday’s numbers from Supabase through a database function.

  2. Pre-recorded templates

    Playwright records an animated 1080×1920 template for each of the eight emotions.

  3. Reel generation

    ffmpeg overlays the day’s dominant emotion, percentage and total onto the right template.

  4. Ready to post

    A finished vertical reel, every day, for Instagram and TikTok.

The reels went out on Instagram, Facebook, Pinterest and TikTok. Honestly, they ran too briefly, and purely organically, to have a real impact. The pipeline worked; the distribution needed more time than I gave it.

05Retiring it well

In June 2026 I shut down the backend to focus on other products. Instead of letting the site die, I rebuilt it to run without a server: your own shares are kept on your device, a small generator keeps the globe alive with simulated activity, and today’s stats follow a realistic daily curve.

The result is the demo you can try today. It behaves like the real product, costs nothing to host and needs no maintenance.

06Results

2years live, 2024 to 2026
8emotions, one tap
4platforms fed by daily reels
0 €to run it today

07What I learned

Learning by building works. A CSS exercise turned into a complete product, with realtime data, security rules, consent handling and legal pages, because every new problem was a reason to learn the next thing.

Automation makes content cheap, but it doesn’t make distribution happen. A daily reel only pays off when it runs consistently for months, ideally with some budget behind it. That lesson shapes how I plan launches today: distribution gets planned like a feature, not added at the end.

And when a project has run its course, retiring it well is part of the job. Turning it into a serverless demo kept the work alive without leaving anything to maintain.

Next project

Sapplify