Project Overview
Doc Status: Good | ✓ Clear summary | ✓ Easy to read | ✓ Matches code | ✓ Good structure | ✓ Professional look | ✓ Visual components
What is WonderSound?
WonderSound is a music education platform in Vietnam, offering:
- Courses — Piano, Guitar, Vocal, Drum courses for all ages and levels
- Student Management — Enrollment, attendance tracking, scheduling
- Practice Tools — Metronome, Tuner web apps
- Marketing — Public website with course listings and enrollment forms (phiếu)
Target Users
| User Type | Description |
|---|
| Students | Music learners; access course content and tools |
| Parents | Parents of student learners; receive updates |
| Admin Staff | Internal staff managing enrollment and operations |
| Marketing | Managing website content via Sanity CMS |
Key Apps
| App | Description | Auth Required |
|---|
apps/website/ | Next.js 16, public marketing site (no auth) | No |
apps/admin/ | Next.js, internal staff dashboard | Yes |
apps/mobile/ | Expo + Expo Router + NativeWind, student mobile app | Yes |
apps/lark-sync/ | CF Worker (Hono), Lark webhook entry point | Webhook secret |
apps/meta-conversions-worker/ | CF Worker (Hono), Meta CAPI webhook entry point | Webhook secret |
Key Packages
| Package | Description |
|---|
packages/backend/ | Convex schema + functions (shared by admin + mobile) |
packages/ui/ | Shared shadcn/ui components |
Data Surfaces
| Surface | Authority | Tool |
|---|
| App data | Convex | useQuery / useMutation |
| External APIs | Third-party | Vendor SDK / fetch from Convex action |
| Marketing content | Sanity | Sanity CDN |
Auth
Convex Auth (@convex-dev/auth) replaced Clerk on 2026-05-08. It runs inside the Convex deployment — no third-party JWT issuer.
| App | Provider |
|---|
| Admin | ConvexAuthNextjsProvider |
| Mobile | ConvexAuthProvider + expo-secure-store |
| Website | Public (no auth) |
| Webhooks | Shared secret (not Convex Auth) |
Directory Structure