WeConnect's Stack: A Dating App Built with Cursor in 100 Days

October 7, 2026 · 1296 words

FactWeConnect
What it isGlobal dating and friend app with real-time chat translation in 18 languages
BuilderDeveloper (iOS developer with 20+ years of experience)
AI toolCursor Pro ($20/month); free tiers of Claude, Gemini and Grok for the hardest parts
StackFlutter, Supabase, Next.js + Vercel, OneSignal
Time to launch100 days to App Store and Google Play
RevenueNot disclosed; in-app point packs from $10 to $200 are live (pricing page only)
SourceShow HN post

Vibe coded dating app stack illustration: two phones exchanging chat bubbles that are translated live between languages, with a laptop code editor building the app in the middle

WeConnect is a dating and friend app that translates chats live across 18 languages. One developer shipped it to both the App Store and Google Play in 100 days. His AI tool was Cursor Pro, at $20 a month.

He has not shared revenue. The App Store listing shows paid point packs from $10 to $200.

He posted the build as a Show HN in December 2025. It is one of the clearest stack write-ups I've seen from a solo mobile founder. The one point: AI made the build fast, but the hard 10% (push notifications, payments, login) still needed an experienced developer.

The stack, layer by layer

WeConnect vibe coded dating app stack layers: a Flutter mobile app on top, Supabase backend and database, a Next.js admin dashboard on Vercel, and OneSignal push notifications

Here is every layer he disclosed, with what each one does:

LayerChoiceWhat it does
Mobile appFlutterOne codebase for iOS and Android
Backend, auth, databaseSupabasePostgres database, logins and APIs in one hosted service
Admin dashboard + landing pageNext.js on VercelWeb app for managing users, plus the marketing site
Push notificationsOneSignal (after trying Firebase)Sends match and message alerts to phones
PaymentsApple and Google in-app purchasesPoint packs sold inside the app
TranslationNot disclosedLive chat translation in 18 languages
AI codingCursor Pro + Claude, Gemini, Grok free tiersWrote most of the code

Hardware. For the first 70 days he had no Mac. He built on a Windows laptop and tested on a Galaxy S20+. Later he bought a used M4 Mac mini and an iPhone 17 to start iOS builds. Apple requires a Mac to build and submit iPhone apps.

Monthly cost

The only cost he disclosed is Cursor Pro at $20 a month.

He says that early on, the plan included unlimited "Auto" mode and premium model access. By his estimate, he used over $1,000 worth of AI for that $20. Cursor has since added limits. He says he now hits a paywall after about five days, but core development was done by then.

Supabase, Vercel, OneSignal, the translation service and the Apple developer fee are not broken out. I won't guess at them. If you copy this stack, budget for the Apple developer program and each service's paid tier once real users arrive.

Why each choice

He doesn't explain every pick, but the post makes the reasoning visible.

  • Flutter gave him Android first. With no Mac for 70 days, he could build and test on Windows and his Galaxy phone.
  • Supabase bundles database, auth and backend. For a solo dev, that is one service to learn instead of three.
  • Next.js on Vercel covers the two web needs, admin and landing page, with one framework.
  • OneSignal replaced Firebase for notifications after days of friction.

Store approval also shaped the timeline. Google Play approved the app in one day. The App Store took multiple feedback rounds, and he says it barely made it through.

What the AI wrote vs what the human fixed

This is the useful part.

Where AI did the heavy lifting. UI was close to automatic. His workflow: take a screenshot from Dribbble, a design showcase site, and ask Cursor to "make this exact UI." He says that got him 90% of the way. I think the trick works because a screenshot is a precise spec. "Make it look nice" gives the AI nothing to aim at; a picture gives it everything.

Where AI got stuck. Three areas needed him:

  1. Push notifications. Days with Firebase, a switch to OneSignal, then more days fighting Supabase JWT issues. A JWT is the signed token that proves who a user is.
  2. In-app purchases and SSO. SSO is single sign-on, like "Sign in with Apple." Cursor alone couldn't solve these. He combined answers from Claude, Gemini and Grok free tiers.
  3. Expansion. A Vietnam launch failed because no Zalo SDK was available. Zalo is Vietnam's dominant messaging app; an SDK is the code kit that lets your app talk to it.

His disclaimer is blunt. He lists App Store #1 category rankings, services with 100M+ downloads and a 5.2k-star GitHub project. His warning to beginners is that CS fundamentals still matter. In his words: "The more experienced you are, the more leverage you get from AI tools."

Where AI didn't help at all. Marketing. His honest takeaway is that development took 100 days thanks to AI, but marketing is still a crowded, hard fight.

A quick note on traction. At launch he said the user base was small. The website now claims 100,000+ users in 12 countries. The App Store listing doesn't yet show enough ratings for a score. I can't verify the website's number.

If you vibe-code this

WeConnect is the example here, not an audit subject. For any dating or chat app on Supabase, these are the checks I'd run:

  1. RLS on messages and matches. Row Level Security (database rules per row) should let only the two matched users read a chat. See Supabase RLS.
  2. Private photo buckets. Profile photos belong in private storage with short-lived signed URLs. See Supabase storage buckets.
  3. No "change the ID, read someone else's profile." Check ownership on every request. See IDOR authorization.
  4. Grant points only after server-side receipt checks. Never trust the app saying "purchase succeeded."
  5. Treat chat text as untrusted if an LLM translates it. See prompt injection.

A minimal RLS setup so only match participants can read or send messages:

alter table messages enable row level security;

create policy "participants read messages"
on messages for select
using (
  exists (
    select 1 from matches m
    where m.id = messages.match_id
      and auth.uid() in (m.user_a, m.user_b)
  )
);

create policy "participants send as themselves"
on messages for insert
with check (
  sender_id = auth.uid()
  and exists (
    select 1 from matches m
    where m.id = match_id
      and auth.uid() in (m.user_a, m.user_b)
  )
);

Building a chat or dating app? I review vibe-coded Supabase apps for data-access holes before launch. Email [email protected] with your stack.

Key takeaway

WeConnect shows the real shape of a 100-day AI build. Cursor handled the UI and most of the code; the developer's experience carried notifications, payments, login and store review.

More case studies: Vibe-coded apps making money · The security checklist: Vibe coding security

Sources