LangX | Practice, Learn, Succeed!
LangX connects you with native speakers so you can practise the language you are learning by teaching the one you already know. Speak, chat, correct each other's sentences — and keep a streak while doing it.
iOS, Android and the web all come out of one Expo codebase, with a single Fastify API behind them. BSD-3, open source, same as v1.
Screens are rendered from the app's own layouts with demonstration data; the faces are AI-generated portraits. The full press kit is in langx/branding.
Official Links
:computer: Website: https://langx.io/
:calling: Apps: https://get.langx.io
:coin: Token Website: https://token.langx.io/
:scroll: Litepaper: https://docs.langx.io
:bar_chart: Insights: https://insight.langx.io
:green_circle: Status : https://status.langx.io/
:wrench: Backlog: https://backlog.langx.io/
:envelope: Mail: [email protected]
Tech Stack
| Layer | Choice | | ---------- | ------------------------------------------------------------------- | | Mobile/web | Expo SDK 57 · expo-router · TanStack Query + Zustand · NativeWind | | API | Node 24 · Fastify 5 · Better Auth · Socket.io — a single container | | Data | MongoDB Atlas, official driver (no Mongoose) | | Storage | S3-compatible (Backblaze B2 in production; Cloudflare R2 works too) | | Billing | RevenueCat — StoreKit / Play Billing / RevenueCat Web + Stripe |
Other Repos
What each one is, where it is hosted and which values are copied between
them by hand: docs/repo-map.md.
- 🟢 website _SvelteKit — langx.io_
- 🟢 token-website _HTML/CSS — token.langx.io_
- 🟢 docs _GitBook source — docs.langx.io_
- 🟢 branding _logos, icons, store artwork,
- 🟡 copilot _Discord assistant; live, not
Previous versions
- 🌱
v1branch — this repository before
- 📦️ api (Archived) _v1's Express API; served
- 📦️ langx-angular (Archived) _Originally
- 📦️ langx-flutter (Archived) _(Not
Get started
MongoDB has to run as a replica set — Better Auth wraps its writes in
transactions, which standalone mongod does not support. Full setup, including
the one-line Docker version, is in
CONTRIBUTING.md.
pnpm install
cp .env.example .env # set MONGODB_URI and BETTER_AUTH_SECRET
pnpm dev # API on :4000, Expo on :8081
pnpm dev:api— API onlypnpm dev:web— Expo web onlypnpm typecheck·pnpm lint·pnpm test
i or a in the Expo output for a simulator, or open
http://localhost:8081 for the web build. Running on a
physical phone needs a development build rather than Expo Go — see
CONTRIBUTING.md.
Layout
apps/api Fastify API — auth, REST, realtime, scheduled jobs
apps/mobile Expo app (iOS + Android + web)
packages/shared zod schemas, language + level tables, PLAN_LIMITS, TOKEN_RULES
docs/architecture.md describes how they fit together
and docs/decisions.md says why — several choices look
arbitrary until you know what went wrong the first time.
Self-hosting
Your own instance needs MongoDB, an S3-compatible bucket and an email key.
Billing, translation and analytics are optional and degrade cleanly when they
are not configured. See docs/self-host.md.
Contributing
We welcome contributions. Start with CONTRIBUTING.md, and say hello in the #codebase channel on Discord.
Security
If you find a security vulnerability, please email [email protected] rather than opening a public issue. See SECURITY.md.
Stats
Stargazers
Contributors
Support Us
- Be A Patron: https://backer.langx.io/
- Github Sponsor: https://github.com/sponsors/langx
Third-party data
This work is based on data from GeoNames, licensed under CC BY 4.0.
See docs/data-sources.md.
License
This project is licensed under the BSD-3-Clause License - see the LICENSE file for details.



