Shubhanshu ships small SaaS, one product at a time.

Three products are live: a lead-capture tool on its own domain, a social scheduler, and an AI canvas for TikTok videos. All three run on one shared platform and design system, built commit by commit.

apex → protoapp.xyz
also linked from shubhanshu.dev

3 products, all running today

1 on its own domain, 2 prototypes on protoapp.xyz. Every one opens to working software, not a mockup.

Sjocamp — sjocamp.co
sjocamp.co

Sjocamp

On its own domain

Waitlists and signup forms that capture verified leads.

  • Campaigns with signup forms you embed anywhere
  • Email verification on every signup
  • Referral codes and a leaderboard
  • Drag-and-drop form and email builders
  • Pixel-tracked forms and per-campaign analytics
  • Free and paid plans on Stripe
  • Go
  • React 19
  • Postgres
  • Kafka
  • AWS
Open sjocamp.co
Meerkat — Posts library
Posts library

Meerkat

Prototype on protoapp.xyz

Plan, draft, and publish to Bluesky, X, and Threads from one queue.

  • Drag-and-drop calendar for Bluesky, X, and Threads
  • AI composer that drafts and rewrites posts
  • Previews that match how each post will render
  • Drafts posts and blog posts from GitHub commits, with screenshots attached
  • Automatic retry when a publish fails
  • Go
  • React 19
  • TanStack Query
  • Postgres
Open meerkat.protoapp.xyz
TickUpToks — Generation canvas
Generation canvas

TickUpToks

Prototype on protoapp.xyz

Turn a brand brief into TikTok slideshows on an AI canvas.

  • Brand profiles and reusable brief presets
  • A canvas that runs brief, script, beats, assets, and render as nodes
  • Image, voiceover, and UGC-avatar generation
  • Import any TikTok as a template
  • Branded slideshow videos rendered with Remotion
  • Go
  • React Flow
  • Kafka
  • Remotion
Open orca.protoapp.xyz

All 3 run on one platform

One design system, one SaaS template, one AWS account. See how a request moves through it.

How it runs

The platform under all 3

Every product forks the same SaaS template and builds its screens from the same design system, so each new one starts with the hard parts done.

Proto Design System — ui.protoapp.xyz
ui.protoapp.xyz

Proto Design System

60 components, 39 themes, one set of tokens.

Every screen in every product above is built from the same 60 accessible React components. They're driven entirely by design tokens, so the whole kit re-skins into 39 themes without touching component code.

Open the Storybook

What every product starts with

  • Sign-in with Google or a magic link
  • Stripe subscriptions, checkout, and customer portal
  • Teams with email invites and roles
  • Scoped API keys with usage tracking
  • Signed webhooks over Kafka, plus a Zapier app
  • Transactional email with deliverability tracking
  • CI that deploys to AWS on every merge

One AWS account runs all three

The database server, container cluster, load balancer, and Kafka broker are shared. Each product gets its own domain, CDN, API, and database, so the next product starts from a template folder, not a new stack.

  • Shared by all 3
  • One per product
  1. Edge

    • Cloudflare DNS Its own hostname, and its own domain once on prod
    • CloudFront + S3 Serves the React 19 app, built on the design system
  2. Routing

    • Load balancer Sends each API call to the right product by header
    • Wildcard certificate Covers every prototype on protoapp.xyz
  3. Services on one ECS cluster

    • Go API Gin and sqlx, one service per product
    • Capture worker Screenshots Storybook stories for commit drafts Meerkat only
    • Render service Turns slideshows into video with Remotion TickUpToks only
  4. Data

    • Postgres on RDS One server, one database per product
    • Kafka Carries webhooks and background jobs, one topic prefix per product

Follow one request

  1. 1 Find the product You open meerkat.protoapp.xyz and Cloudflare points the name at Meerkat's own CloudFront.
  2. 2 Load the app CloudFront serves the React app from S3 and forwards every /api call to the shared load balancer, tagged with Meerkat's product header.
  3. 3 Route the call The load balancer reads that header and hands the call to Meerkat's Go API. The other products never see it.
  4. 4 Save and queue The API reads and writes Meerkat's own database, and puts slow work like webhooks and screenshots onto Kafka.
  5. 5 Finish in the background A worker picks the job up, calls the outside service it needs, and reports back over Kafka, while you've already moved on.

What the services call out to

  • Sjocamp
  • Meerkat
  • TickUpToks
  • Take payments Stripe
  • Sign people in Google
  • Send email Resend
  • Write and rewrite copy OpenAIGemini
  • Connect to other apps Zapier
  • Publish posts BlueskyXThreads
  • Read commits GitHub
  • Make images, avatars, and voice fal (Flux)HiggsfieldElevenLabs

Every merge ships

  1. Push to main
  2. GitHub Actions runs the tests
  3. Image to ECR
  4. Rolling deploy on ECS

About

Shubhanshu founder, protoapp.xyz

I work on the unglamorous middle of the creator stack — capturing the audience, making the content, and the queue that actually gets a post out the door.

Each product started as a tool I needed myself, got rebuilt once it worked, and now runs as its own small SaaS. The next one goes up when it's finished, not before. The design system it's built on lives at ui.protoapp.xyz. Longer write-ups and what I build with are on shubhanshu.dev.

2,162 commits since Mar 2024

Busiest month: Apr 2026, 842 commits

Commits per month across the Sjocamp, Meerkat, TickUpToks, and platform repos.