cd /news/artificial-intelligence/i-shipped-an-ai-cartoon-generator-fr… · home topics artificial-intelligence article
[ARTICLE · art-32009] src=dev.to ↗ pub= topic=artificial-intelligence verified=true sentiment=↑ positive

I shipped an AI cartoon generator from Timor-Leste in 2 weeks — here's how

A developer in Timor-Leste built FurakToon, an AI cartoon generator that turns sentences into anime or cartoon images in seconds, in about two weeks for the Mind the Product 'Everyone Ships Now' hackathon. The app supports 21 languages with a Southeast Asian focus, uses a monthly free-credit system with atomic spending logic in Postgres functions, and includes a lazy monthly reset and automatic refunds on failed generations. The developer also integrated Novus.ai for analytics, which revealed user behavior insights that shaped product decisions.

read2 min views1 publishedJun 18, 2026

TL;DR— I built, an AI app that[FurakToon]

turns a sentence into a beautiful anime or cartoon image in seconds. It speaks

21 languageswith a Southeast-Asia focus, has a monthly free-credit system,

and was built in ~2 weeks for the Mind the Product"Everyone Ships Now"

hackathon. This is the build-in-public story.

I'm building from Timor-Leste 🇹🇱. Furak means "beautiful" in Tetum, our

language — so the app is FurakToon: beautiful cartoons.

That one constraint shaped the whole product.

Nothing exotic — boring tech, shipped fast:

The image generation? A few API calls. The product around it is where the real

work was.

"10 free images a month" sounds trivial until you think about double-spends and

refunds. I pushed the logic into Postgres functions so spending is atomic:

-- spend_credits(): refill if a new month started, then deduct only if affordable
update public.credits
   set balance = balance - cost
 where user_id = uid and balance >= cost
returning balance into new_bal;   -- null = not enough credits

The monthly reset is lazy — no cron job. The first action in a new month

tops you back up to 10. And if generation fails after charging, the credits are

refunded automatically. New users get their 10 via a signup trigger.

I rolled a tiny typed i18n layer: one dictionary per locale, English as the

fallback, with {placeholder}

interpolation and dir="rtl"

for Arabic. The

locale persists in localStorage

and resolves through useSyncExternalStore

so

there's no hydration flash. Switching language is instant.

The two Timor-Leste flag pieces in the showcase strip aren't decoration —

they're the whole point.

I'm on Supabase's free tier, which s after ~7 days idle. During judging,

a sleeping DB = a dead demo. So I added:

/api/health

probe, andSmall touches, but they're the difference between "demo" and "product."

The hackathon required Novus.ai, and I expected to bolt it on and forget it.

Instead it changed how I worked.

I instrumented the real moments — user_registered

, image_generated

,

image_downloaded

, content_moderation_blocked

, generation_blocked_no_credits

,

language_switched

— and suddenly I wasn't guessing. I could see where people

dropped off.

Two things genuinely surprised me:

That's the shift: from "I think this is good" to "I can see what's working, and act on it."

👉 Live app: furaktoon.fun

Type an idea, pick anime or cartoon, and make something beautiful — in your

language.

Built for World Product Day 2026 — "Everyone Ships Now" by Mind the Product

× Novus.ai. Furak means "beautiful" in Tetum 🇹🇱

── more in #artificial-intelligence 4 stories · sorted by recency
── more on @furaktoon 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/i-shipped-an-ai-cart…] indexed:0 read:2min 2026-06-18 ·