Build in public

What I built in 4 days: a SaaS that turns a URL into an ad video

MWritten by Manil, founderJuly 5, 20265 min read
The FlatMotion landing page, four days after the first commit

I am 18, and four days ago FlatMotion was an empty folder. Today I can paste a URL into my own dashboard, wait a couple of minutes, and watch an animated ad video come out the other side, rendered in the brand's own colors and fonts. Nobody has seen it yet. This post is the first time I talk about it publicly, and I want to document the whole thing as it happens, the good parts and the embarrassing ones.

Why I am building this

Animated flat design ads are everywhere right now: SaaS launches, app promos, product pages. They work. They are also expensive and slow: a studio quote starts around four figures and two weeks for fifteen seconds of motion. If you are a small brand testing creatives, that math kills you.

The obvious answer is a template tool, and that is exactly what I do not want to build. Templates all produce the same video with a different logo on it. Your ad looks like your competitor's ad, and everyone can feel it.

Template toolsFill inFill inFill inSame video, different logoOutput: familiarFlatMotionHundreds of 2 to 3 second bricksAI director composes
Templates fill slots. FlatMotion composes from a bank of motion bricks.

FlatMotion's bet is different: build a huge bank of tiny motion bricks, each 2 to 3 seconds long, each stolen from the best performing ads and encoded properly. Then let an AI director pick, mix and bridge them for each client. Like a language model never gives two people the same answer, the generator should never produce two videos that look alike.

What exists after 4 days

Day 1Dashboard and wizardNext.js, custom UI kitDay 2Auth, database, rendersSupabase, Remotion workerDay 3Brand scraperURL in, brand kit outDay 4Signature motionTempo grid, house cuts
The build so far, one chantier per day.

The chain runs end to end, for real. I can create an account, buy nothing (welcome credits), fill the wizard, and get an MP4 in my library that I can share with a public link. Concretely:

  • A full SaaS app: Next.js dashboard, Supabase auth and database, credits ledger, plans, folders, share pages. All custom UI, no component library.
  • A video engine: Remotion templates rendered to MP4 by a worker, with a motion library of transitions and animations measured frame by frame from reference ads.
  • A brand scraper: paste a URL, get the site's logo, palette, typography, screenshots and copy, cleaned by an LLM. This one deserves its own post, it is the feature I am most proud of.
  • A motion signature: every montage runs on a tempo grid with house cuts, so a FlatMotion video is recognizable whatever the brand looks like.

4

days from zero to a working chain

24

routes in the app

84

unit checks on the scraper

438

frames per generated montage

Real numbers from the repo, day 4.

The honest part

The videos are not good enough yet. The pipeline works, the brand adaptation works, but my eye says the motion bricks are still level zero compared to the studio work I am chasing. That is fine. The plumbing was the hard prerequisite, and it is done. The next days are one hundred percent about visual quality: better bricks, better typography in motion, better payoffs.

What happens next

The plan is simple: a few days locked on brick quality until the renders make me say premium, then a public v1. I will keep writing these build notes as I go. If you want to see whether an 18 year old can ship a video generator that does not look generated, stick around.

M

Manil, 18, building FlatMotion solo and in public. New build notes land here as the product takes shape.

Read more