Talk with a partner
Match with another learner for a timed voice call. Topics are suggested so the conversation stays useful. Daily free minutes apply; you can buy extra minutes.
Speaklo
Manage online users, live limits, and paid packages.
Loading current packages…
In call / queue right now, plus anyone who logged in within the last 30 minutes. Auto-refreshes every 10s.
Registered accounts (newest first). Open Details for the full card.
Partner reports from live calls. Auto-warn / auto-suspend use thresholds in Live settings. You can also suspend manually from a user card.
Recent live calls (ended and open).
Recent Razorpay fulfillments (refunds still in Razorpay dashboard).
Approve unsuspends the user; reject keeps them suspended.
Admin actions (appeals, etc.).
Turn product surfaces on/off without rebuilding the app. Health shows vendor config (not secrets).
Edit title, description, and price anytime. Changes apply to the app and Razorpay checkout immediately after Save. Tip: Render Starter (~$7/mo server) is not talk minutes — charge users for product value (₹49–₹199 packs are fine).
Saves go live on the API immediately. Agora App ID / Certificate stay on Render env (secrets).
Questions shown during partner calls. Sections: Entertainment, English, Quiz. Learners pick a section and play 5 or 10 rounds — winners earn overall XP.
| Section | Prompt | Options | Answer | XP | Active |
|---|
What Speaklo offers learners, plus a plain map of app pages and where they live in code. Toggles that hide features live under Ops / toggles.
Short explanations you can reuse in Play Store / support replies.
Match with another learner for a timed voice call. Topics are suggested so the conversation stays useful. Daily free minutes apply; you can buy extra minutes.
Practice English with an AI coach in a chat-style conversation. Free accounts have a daily turn limit (editable in Live settings).
Structured lesson catalog (grammar and topics). Open a topic, read/practice a lesson, and progress is saved to the account.
Short exercises to reinforce what you learned — separate from live calls and AI Speak.
Full practice mock in exam order: Listening (40 + TTS audio), Reading (40), Writing Task 1 & 2, Speaking Parts 1–3. Per-skill practice bands (unofficial).
Home shows streak / today’s goal. Progress tracks XP, minutes, and learning momentum so learners see why coming back matters.
Name, level, plan, billing snapshot, privacy/terms links, sign-out, and optional account deletion (Play Store friendly) when enabled in Ops.
Report a bad partner after a call. Admins can warn / suspend. Same-gender-only matching can stay ON for testing and OFF for public launch.
Razorpay packages: unlock gender preference matching, and buy extra live minutes. Titles/prices are edited in Payment packages — no app rebuild needed.
New accounts get a 6-digit email OTP (Resend). Login is allowed, but the app asks them to verify before full use.
Mobile is Flutter under mobile/lib. API is NestJS under
backend/src. Admin is this static site at /admin/.
| What the user sees | Route | Where / notes |
|---|---|---|
| Splash / boot | / |
features/splash — loads session, then redirects |
| Sign in | /login |
auth/.../login_screen · POST /auth/login |
| Create account | /register |
Gateable via Ops → registrations · POST /auth/register |
| Email OTP | /verify-email |
Resend · /auth/verify-email, resend-verification |
| Onboarding | /onboarding |
Level, goals, gender prefs → profile |
| What the user sees | Route | Where / notes |
|---|---|---|
| Home | /home |
Dashboard streak/XP · GET /dashboard |
| Learn | /learn → topic → lesson |
features/learn · catalog seeded by CatalogModule |
| AI Speak | /speak → conversation |
FAB + tab · POST /ai/conversation · Ops can disable |
| Practice | /practice |
features/practice · practice catalog API |
| Progress | /progress |
XP / minutes / streak views |
| Profile | /profile |
Billing overview · DELETE /users/me soft-delete |
| What the user sees | Route name | Where / notes |
|---|---|---|
| Entry / pay / queue start | live-partner |
live_entry_screen · status + Razorpay packages |
| Waiting for match | live-waiting |
In-memory queue · same-gender rule from settings |
| Voice call | live-call |
Agora RTC · do not strip native .so libs |
| Call summary / report | live-summary |
Rating + report → Complaints tab + thresholds |
| What the user sees | Route | Where / notes |
|---|---|---|
| IELTS entry | /ielts |
features/ielts — Academic mock hub (L/R/W/S) |
| Test in progress | /ielts/test |
Prompt flow + attempt saved on API |
| Results | /ielts/results |
Band estimate from ielts-catalog |
| Tab | Use it for | API / files |
|---|---|---|
| Online / All users | Who’s live, force-end call, expire packs, suspend | /admin/users/* |
| Complaints | Reports history + CSV export | /admin/users/reports, /admin/ops/reports.csv |
| Calls / Payments | Recent call & payment rows | /admin/ops/calls, /admin/ops/payments |
| Appeals / Audit | Suspension appeals + who did what | /admin/ops/appeals, /admin/ops/audit |
| Ops / toggles | Feature flags, legal URLs, health | PATCH /admin/settings, /admin/ops/health |
| Packages / Live settings | Prices, minutes, topics, warn/suspend N | Same settings API; Agora secrets stay on Render env |
mobile/ locally.