Let's Play is a cross-platform Arabic learning experience with a mobile learning app and a local administrator dashboard. The dashboard is a usable, read-only POC backed by deterministic fictional data.
OpenSpec is the source of truth for product behaviour, acceptance criteria, and non-goals. Read the relevant accepted change under openspec/changes/<change-id>/ before changing a learner or administrator flow. This README explains repository operation; it does not restate product requirements.
apps/mobile— Expo SDK 57 learning application for Android, iOS, and web.apps/dashboard— React Router framework-mode dashboard with local SSR and hydration.packages/contracts— framework-independent dashboard read models and repository contract.packages/design-tokens— shared brand primitives, platform semantic tokens, and dashboard CSS variables.openspec— approved behaviour specifications and implementation records.
The dashboard currently uses an in-process mock adapter. Its future boundary is browser -> dashboard SSR -> dashboard-bff (NestJS) -> core API; no backend, HTTP API, authentication, persistence, or deployment is included in this POC.
- Node.js
24.18.0 - pnpm
11.20.0through Corepack
Install the locked workspace dependencies:
corepack enable
corepack pnpm install --frozen-lockfilepnpm dev:mobile
pnpm dev:dashboardRun mobile commands from the repository root. The workspace starts Expo after building its required workspace dependencies.
dev:mobile starts Expo. Use pnpm --filter @lets-play/mobile web for the web target. dev:dashboard starts the local React Router development server and renders dashboard data on the first server response.
pnpm format
pnpm format:check
pnpm lint
pnpm typecheck
pnpm build
pnpm checkTurbo runs workspace tasks with a local cache. Development tasks are never cached; remote cache is disabled.
Dependencies use exact versions and pnpm catalogs. Add or update a package only by changing the appropriate catalog entry and regenerating pnpm-lock.yaml. The workspace has a seven-day minimum release age to reduce supply-chain risk. The reviewed lockfile is trusted for repeatable frozen installs; new resolutions remain subject to the age gate.
- Dashboard data is fictional and read-only.
- No NestJS service, database, authentication, API endpoint, analytics, hosting, CI, E2E suite, or editing workflow is included.
- Recharts is the only dashboard charting library.
- React Native and web do not share UI components. They share only contracts and design tokens where appropriate.