Update: 5 October 2026

The current portfolio presents Virality Studio as an in-development creator workspace for drafting, scheduling, publishing and AI caption help. The original Virality Central article below records the earlier creator-training direction. Gamification is a product mechanism, not a promise that a post will go viral.

Original engineering notes from May 2026

Pilots don't learn engine-out procedures over a city at rush hour. They crash a hundred times in a simulator first, where the only thing at stake is their pride. Virality Central is the same idea pointed at content: a place where social-media creators draft a post, get an AI virality score and coaching, and iterate as many times as they want before they ever spend real audience reach on it.

That's the core bet behind the product. The thing most "grow your audience" tools get wrong is that they assume you already have an audience to experiment on. New and growing creators don't. Every mediocre post they ship is reach they can't get back, and the feedback loop is slow and noisy. Virality Central is explicitly not a scheduler that pushes to Instagram or TikTok. It's a content simulator — you practice here, then take what works elsewhere.

Practice before you risk real reach

The loop is deliberately simple. You write a draft. The app generates caption options and scores how likely the post is to perform, then gives feedback on what's dragging the score down — weak hook, no clear call to action, hashtags that don't match the angle. You rewrite. The score moves. Nothing in this loop touches a real social network, which is the whole point: you can be wrong fifty times in an afternoon and it costs you nothing but time.

Scoring runs through OpenRouter to Gemini 2.0 Flash. I picked Flash because the loop has to feel cheap and fast — a creator iterating on a caption will hit the scorer dozens of times in a session, and a slow or expensive model would kill the rhythm. There's also a local caption-generator fallback so the feature degrades gracefully instead of going dark when the upstream API hiccups or a key runs out of credit. Treating the LLM as one swappable provider behind an abstraction, rather than wiring Gemini calls straight into views, is a pattern I lean on across projects and write about more in my AI-assisted solo dev workflow.

The gamification engine

A scoring tool on its own is a calculator. What makes people come back is the game layer wrapped around it, and this is where most of the backend complexity actually lives.

The headline mechanic is the clout index — a single number that represents a creator's standing on the platform, recalculated hourly by a background job rather than on every request. That decision matters more than it looks. Recomputing a composite score inline on each page load would be both slow and gameable; batching it on a schedule keeps the leaderboard stable and the math honest, at the cost of the number being slightly stale between runs. For a status metric, slightly stale is the right trade.

Around that sits the usual progression scaffolding, built out properly rather than faked:

  • XP and levels that gate features as you climb
  • Streaks that reward showing up daily
  • Achievements and missions for specific behaviors
  • Skill trees for distinct creator competencies — captioning, strategy, brand-deal pitching
  • Weekly challenges and a leaderboard

There's also a full posts system inside the simulator — drafts, comments, likes, bookmarks, an explore feed — plus competitions with entries and voting, analytics with daily snapshots, and a Creator Academy of courses, lessons, and quizzes. Scheduled "publishing" inside the app runs on a Celery beat job every five minutes. To be clear about scope: that scheduling lives entirely within Virality Central's own feed. It's part of the simulation, not a bridge to real platforms.

The stack

The split here is the most opinionated part of the build, and it's the part I'd defend hardest: a generated frontend on top of a hand-built backend.

The frontend was scaffolded with Lovable — Vite, React 18, TypeScript, shadcn/ui on Radix, Tailwind, TanStack Query, and react-router. AI scaffolding is genuinely good at this layer now. The component tree, the routing, the query hooks — that's well-trodden ground where generated code gets you to a working UI fast, and I'm happy to let a tool do it.

The backend is the opposite. It's Django 5.1 with Django REST Framework, hand-built across eight apps, and I wrote it deliberately because that's where the decisions that actually matter live:

  • JWT auth for stateless API access from the SPA.
  • camelCase on the wire. Django speaks snake_case internally; the React frontend expects camelCase. Rather than litter either side with translation, the API serializes to camelCase at the boundary, so the frontend consumes idiomatic JavaScript and the backend stays idiomatic Python.
  • Throttling tiers on the DRF endpoints, which matter a lot when every interaction can fan out to a paid LLM call.

Data and infra are PostgreSQL and Redis, with Celery and Beat handling the scheduled work — the hourly clout recalculation, the five-minute publish job. It's containerized with Docker Compose behind Traefik and nginx, deployed via Coolify. Around fifty API endpoints are wired up across those eight apps.

A note on the name

If you go looking, you'll find a small split personality. The product is Virality Central at viralitycentral.com, but internally — in the repo, the configs, half my own notes — it's still Virality Studio. That drift is the kind of thing that happens when a name gets settled on after the code is already written, and renaming everything internally is a chore that never quite makes the top of the list. I'm leaving it as an honest artifact of how the thing actually got built.

Where it's at, and what's next

Status: live/MVP. The production plan has it deployed on viralitycentral.com against a shared PostgreSQL, with the nginx and Docker production configs and prod environment all in place. I'd call it live but young.

The honest caveats:

  • Test coverage is thin. Tests cover 2 of the 8 apps. The gamification and AI-scoring paths — the riskiest, most logic-heavy parts — aren't where I'd want them yet.
  • Empty states are mid-fix. I recently stripped the mock data that made early screens look populated, which surfaced a batch of empty-state handling that's still being cleaned up. A brand-new account currently sees more blank panels than it should.
  • The business model is undecided. The landing page says "free forever," but there's no billing code behind that, so treat it as a placeholder rather than a promise.

One thing I'll explicitly not repeat: the landing page shows big creator and post counts and a near-perfect rating. Those are hardcoded marketing placeholders with stock avatars, not real numbers, and I won't dress them up as traction here. The honest state is "the simulator loop works, the game layer is built, and now it needs real creators putting real drafts through it."

If the practice-before-you-risk framing resonates, the same instinct — build the boring, load-bearing backend by hand and let AI handle the scaffolding — runs through everything in my portfolio of products I'm building solo. You can see the rest of what I'm shipping over on the projects page.

djangoopenroutergeminigamificationdrflovable
Share this article