SameeraLearn — AI Learning App for Sameera
Identity: Parent uploads notes → AI generates tests → child learns with delight → parent tracks progress. User: Sameera, 8 years old (Grade 2) Last Active: 2026-04-14 (active session today)
What It Is
A React Native app (personal project) for Yogii’s daughter. Parents upload school notes in any format (TXT, PDF, DOCX, images) — Claude API generates age-appropriate practice questions — child takes gamified tests — parent sees progress dashboard.
Invariant: No negative language ever shown to the child. No “wrong”, “failed”, “bad.”
Current State
| Metric | Value |
|---|---|
| Version | v1.2.0 (stable, 2026-03-17) |
| Test suite | 157 tests (155 pass, 2 pre-existing streak failures) |
| Question types | 7 (MCQ, True/False, Fill-blank, Match, Classify, Odd-one-out, Short-answer) |
| Upload formats | 4 (TXT, PDF, DOCX, Image/PNG) — all verified |
| Seeded questions | 100 age-appropriate Grade 2 questions across 5 units |
| Open audit findings | 28 (3 P0, 5 P1) |
| Next sprint | v1.3.0 — planned but not started |
Architecture
Content gate: AI generates draft questions → parent approves → child sees approved only. Structural safety.
Security model:
- Cloud Functions-only analytics writes (client never writes analytics)
- Firestore security rules:
allow writesplit intocreate,update+delete(delete usesresource.data) - Child PIN — stored plaintext (P0 security gap, see gaps.md)
Stack: React Native (TypeScript) + Firebase (Firestore, Auth, Cloud Functions Gen 2) + Claude API
Open Gaps
See SameeraLearn Gaps.
Primary concern: 3 P0 audit findings (camera permissions, ErrorBoundary, API key rotation) + child PIN in plaintext.
Key Decisions
| Decision | Chosen | Why |
|---|---|---|
| Content approval gate | Parent approves before child sees | Child safety — no wrong content reaches Sameera |
| Negative language | Architecturally banned | Child psychology — no “wrong”, “failed”, “bad” |
| UI standards | 18sp+ body, 24sp+ questions, 48dp+ touch targets | COPPA + children’s UX |
| Analytics writes | Cloud Functions only | Security + consistency — client never writes |
| Fallback paths | Must produce correct output for CURRENT data model | ML#15 — after migration, audit ALL fallbacks |
Cross-Project Connections
- Parent brand: Indusynth.com — admin dashboard hosted at indusynth.com/dashboard
- Proof point: Cited in Indusynth Vision.md for AI App Development service line
- Tech patterns: Firebase Auth, Firestore rules, Cloud Functions patterns inform SwaPrep architecture
- Independent codebase: No shared infrastructure with SwaPrep