Motionvid Makes \$7K/mo: Vibe-Coded with Cursor (Case Study)

September 29, 2026 · 1262 words

FieldDetail
What it isMotionvid: an AI tool that turns text prompts into animated videos and motion graphics
BuilderDeveloper (self-taught; Anatoly Pashias)
AI toolCursor with Claude Sonnet 3.7
StackFounder's stack across products: Next.js/React, Go services, Firebase/Firestore, Cloud Run, Stripe, Cloudflare
Time to launchTest version vibe-coded in March 2025; about three weeks and ~$300 in tokens
Revenue$7K MRR, 100K+ signups, $120K from one AppSumo campaign (self-reported, Sep 2026)
SourceIndie Hackers interview, Sep 2026

Vibe coded SaaS revenue illustration: a text prompt turning into an animated motion-graphics video on a laptop, with a rising monthly revenue chart beside it

Motionvid makes $7,000 in monthly recurring revenue (MRR, the subscription income that repeats each month). Its founder, Anatoly Pashias, told Indie Hackers it has passed 100,000 signups. One AppSumo campaign alone brought in $120,000.

He built the first version with Cursor and Claude Sonnet 3.7 in March 2025. His only real costs were a Cursor subscription and about $300 in AI tokens. Then he quit his job to run it.

The core point: a cheap vibe-coded test, a name that matched search, and one honest fan video did more than any growth plan.

The problem: motion graphics without After Effects

It started with a friend. He was building a course and wanted an easier way to make motion graphics. The usual tool, Adobe After Effects, is powerful but hard to learn.

Motionvid's answer is text to video. You describe the animation, and AI generates it. The homepage lists explainer animations, data visualizations and cinematic clips. The pitch is simple: no design skills needed.

That's a clear buyer with a clear pain. Course creators, marketers and YouTubers need visuals constantly. Most can't animate, and hiring someone is slow.

How it was built

Anatoly is a self-taught developer. He already ran another product, Sally POS, a point-of-sale system he says earns five-figure MRR across 400+ locations.

For Motionvid, he started with a test. His words:

"I vibe coded a test version with Sonnet 3.7 and Cursor in March 2025 to see if it would work." — Anatoly Pashias, Indie Hackers

Cursor is an AI code editor. Sonnet 3.7 was the Claude model writing the code inside it. The first version took about three weeks, and tokens cost around $300.

His stack across his products includes Next.js and React for the web, Go for back-end services, and Firebase/Firestore for data. It runs on Google Cloud Run, takes payments through Stripe, and uses Cloudflare in front. The interview describes this as his general stack, so I won't claim every piece is inside Motionvid.

His first piece of advice matches how he built it: vibe code the MVP first, and don't overthink the stack.

How it makes money

How Motionvid makes money: a monthly subscription buys credits, each video generation spends credits, and higher tiers unlock more credits and API access

Motionvid sells monthly subscriptions that include credits. A credit is a unit you spend on each generation. Better models cost more credits per video.

Here are the current plans from the pricing page:

PlanMonthlyCreditsNotable extras
Starter$1950060 exports, 1080p
Pro$29800100 exports, up to 4K infographic exports
Ultimate$491,500200 exports, developer API, bring your own API keys
Creator$2498,000Unlimited exports, API

Annual billing saves up to 38%. There's no free plan listed, and the page says payments aren't refundable once processed.

Three things to notice:

  • Credits protect margins. Every generation costs him real money in AI model fees. Credits tie what users pay to what they use.
  • The API sits at the top. Developer access only starts at $49, which pushes power users up a tier.
  • AppSumo was a cash boost. AppSumo sells lifetime deals to software buyers. The $120K helped, but lifetime buyers don't add to MRR.

He also shared a warning. His team caught a bug where credit cost estimates were far off from actual usage. He says it would have quietly eaten into margin. His lesson is to track every model call and every agent step from day one.

First users: a fan video and a matching name

The first real traffic came from the same friend. He made a YouTube video about Motionvid because he genuinely liked it.

The second channel was the name itself. "Motionvid" exactly matches what people search for. He says the site started ranking without much deliberate SEO work, and search sent visitors to a high-converting landing page.

After that came affiliates, who picked it up from the YouTube and search presence. Then AppSumo.

Notice what's missing: no paid ads, no big launch day. His advice is not to force distribution before the product earns it.

What to copy

  1. Build a test before a product. Three weeks and $300 answered "does this work?"
  2. Start from one real person's pain. A friend's course needed motion graphics.
  3. Name for search. A descriptive name can rank on its own.
  4. Price in credits when AI costs vary. Match revenue to usage.
  5. Audit your credit math. Compare what you charge per generation with what each one really costs.
  6. Use lifetime deals as a boost, not a base. Cash now, but no recurring revenue.

If you vibe-code this

AI video tools combine expensive API calls, stored keys and a public API. These checks matter for this type of app. They are general guidance, not a claim about Motionvid.

  • Deduct credits on the server, atomically, before calling the model. Two fast requests shouldn't spend the same credits.
  • Rate-limit generation and API routes. See API rate limiting.
  • Encrypt bring-your-own keys and never send them back to the browser. See environment variables security.
  • Validate any URL your server fetches, like a reference image. Otherwise it can be tricked into calling internal addresses. See SSRF in Next.js.
  • Grant credits only from verified Stripe webhooks. See Stripe webhook security.

If you offer a developer API, store only a hash of each key, like a password:

import { createHash, randomBytes } from "node:crypto";

// Show the full key to the user once; store only its hash.
export function createApiKey() {
  const key = "key_" + randomBytes(24).toString("base64url");
  const hash = createHash("sha256").update(key).digest("hex");
  return { key, hash };
}

// On each request: hash the incoming key and look up that hash.
export const hashKey = (key: string) =>
  createHash("sha256").update(key).digest("hex");

If your database leaks, hashed keys can't be used to call your API.

Running an AI SaaS with credits and an API? Email [email protected] for a security audit.

Key takeaway

Motionvid shows how small the first bet can be. A three-week, $300 vibe-coded test turned into $7K MRR and a founder leaving his job. The build was fast. What made it pay was a real user's pain, a search-friendly name, and careful credit math.

More case studies: Vibe-coded apps making money · Before you launch: Vibe coding security guide

Sources