Plate V · Architected

LingoMeet

Live practice, translated in real time.

A Pakistan-first language-learning + social mobile app — chat, voice/video, AI auto-translation and teacher livestreams. Fully architected, pre-MVP.

Flutter 3 · NestJS 10 · LiveKit · PostgreSQL + Redis · Gemini + Claude

Architected
Status
LiveKit
Real-time
Gemini + Claude
Translation
Self-hosted
Hosting
Overview

Language learners want live human practice, not just drills — but real-time voice and video with translation is genuinely hard to architect affordably. LingoMeet is the full technical design for that product: chat, voice/video, AI auto-translation and teacher livestreams.

It's listed honestly as architected — the architecture and phased build plan are complete; it's pre-MVP. The design is what's real here, and it's stated as such.

The system in motion

Animated architecture breakdown — nodes and data paths resolve in sequence.

Full architecture blueprint
LingoMeet detailed architecture blueprint
Real-time topology — the Flutter client speaks to a NestJS core; LiveKit carries voice/video while a translation layer bridges languages live. · open full-size ↗
The stack — and what each part does
Flutter 3 (Riverpod/Drift)Cross-platform mobile client with local persistence
NestJS 10 + PrismaModular backend API
LiveKitReal-time voice/video transport
PostgreSQL + RedisPrimary store + presence / real-time state
Gemini + ClaudeThe auto-translation layer
Cloudflare R2 · Stripe/PayFast · HetznerMedia storage, payments, self-hosting
Under the hood

The architecture

A Flutter client (Riverpod for state, Drift for local data) talks to a NestJS + Prisma backend over PostgreSQL and Redis. The plan is phased — chat first, then voice/video, then the translation layer, then teacher livestreams — so each capability is a shippable increment rather than a big-bang launch.

Real-time stack

Voice and video run over LiveKit rather than a hand-rolled WebRTC mesh, because managing SFU scaling and NAT traversal yourself is a project in itself. Redis carries presence and ephemeral real-time state.

The translation layer

Auto-translation sits between participants using Gemini and Claude, so two learners without a shared language can still practise. This is the feature that turns a video-call app into a language product.

Economics & hosting

Media lives in Cloudflare R2, payments run through Stripe and PayFast for the Pakistani market, and the whole thing is designed to self-host on Hetzner — a cost structure chosen deliberately so real-time media doesn't make the unit economics impossible.

Decisions worth defending
This isn't built — why list it?
It's listed honestly as architected: the full technical design and phased plan are done. Status is always stated plainly — Live, Built, or Architected. A design is never inflated into a shipped product.
Why LiveKit over raw WebRTC?
Real-time voice/video at scale means SFU management, NAT traversal and reconnection logic. LiveKit solves the hard transport problems so the effort goes into the product, not the plumbing.

Proof. Architecture and phased build plan complete; pre-MVP.