A learning app for kids — reading and math, built with privacy first.
Website: geni.kids — learn more, see features, and read the blog.
Geni is a learning app for children that combines guided reading and math practice in a single, fun experience. Kids follow a progress map, complete reading sessions with comprehension exercises, and solve math challenges — all while parents track their progress from a PIN-protected dashboard. The app works entirely on-device — no account required, no data leaves the family's iCloud.
- Guided reading — age-appropriate texts with word-by-word highlighting and read-aloud support
- Speech recognition — kids read aloud and the app listens for fluency practice
- Comprehension exercises — auto-generated questions after each reading session
- Math challenges — exercises covering arithmetic and number sense, adapted to each child's level
- Progressive difficulty — problems get harder as kids improve
- Progress map — visual journey that rewards completing missions across reading and math
- Multiple child profiles — switch between kids with a single tap
- iCloud sync — progress syncs automatically across iPhone and iPad via the family's iCloud account
- Parental controls — PIN-protected parent dashboard with per-child progress tracking
- Multilingual — available in English, Spanish, Portuguese, and Norwegian
Geni has zero backend servers. All data is stored locally on-device or synced via the family's own iCloud account (CloudKit). No analytics, no tracking, no third-party SDKs. The parent PIN is stored in the device Keychain and never synced.
- UI: SwiftUI
- Storage: Core Data + iCloud CloudKit (on-device, family's own iCloud)
- Sync:
NSUbiquitousKeyValueStore(iCloud KVS) - Audio/Speech: AVFoundation, Speech framework
- Security: Security framework (Keychain)
- No external dependencies — 100% native Apple frameworks
Requirements:
- Xcode 16+
- iOS 17.0+ deployment target
- Swift 5.0
Steps:
- Clone the repo:
git clone https://github.com/yagomp/geni.git - Open
ios/Geni.xcodeprojin Xcode - Select a simulator or connected device (iOS 17+)
- Press Run (⌘R)
Note: iCloud sync and Speech Recognition require a physical device and a signed-in iCloud account. These features are gracefully disabled in the simulator.
geni/
├── ios/
│ └── Geni/
│ ├── Views/ # SwiftUI screens
│ ├── ViewModels/ # Business logic, state management
│ ├── Models/ # Data models (Core Data entities)
│ ├── Services/ # App services (sync, speech, persistence, exercises)
│ └── Utilities/ # Helpers and extensions
└── site/ # Marketing website (static HTML/CSS/JS)
├── index.html
├── blog/
└── ...
Contributions are welcome! Please read CONTRIBUTING.md before opening a pull request.
MIT — see LICENSE for details.