The spaced repetition practice app for kendama players.
DamaFlow applies the FSRS spaced repetition algorithm to kendama skill development — telling you exactly which trick to practice today based on your history, so you stop drilling what you've already landed and start making real progress. Built on the Kendama USA curriculum. Free, open-source, offline-first.
- Smart practice queue — FSRS scheduling surfaces the right skill at the right time; your queue is sectioned into overdue, due today, and upcoming
- Full Kendama USA curriculum — beginner, intermediate, and advanced tiers, each skill deep-linked to its tutorial video
- Session logging — log reps and rate yourself (Again / Hard / Good / Easy) after every practice; the algorithm adjusts your future schedule automatically
- Mastery tracking — mark skills as mastered; the progress view shows per-tier completion and surfaces overdue mastered skills that need a refresher
- Onboarding flow — experienced players can pre-fill mastered skills at first launch, tier by tier, to skip tricks they've already landed
- Equipment tracker — log your kendamas, purchase dates, string replacement history, and notes; associate equipment with individual practice sessions
- Notifications — optional daily practice reminders with a configurable time; no FCM or APNs push server required
- Settings — configure how many new skills are introduced per session; reset all app data if needed
- Offline-first, privacy-first — all data lives on your device; no accounts, no tracking, no Google Play Services required
| Layer | Technology |
|---|---|
| Framework | Expo (React Native) |
| Navigation | Expo Router (file-based) |
| Database | Expo SQLite + Drizzle ORM |
| SRS Algorithm | ts-fsrs |
| State | Zustand |
| UI | React Native Paper (Material Design 3) |
- Node.js 18+
- Expo CLI (
npm install -g expo-cli) - iOS Simulator (Mac + Xcode) or Android Emulator, or the Expo Go app on a physical device
git clone https://github.com/zmjohnso/DamaFlow.git
cd DamaFlow
npm install# Start the dev server
npm start
# Or target a specific platform
npm run ios
npm run androidnpm testnpm run lintapp/ # Expo Router screens (file-based routing)
(tabs)/
practice/ # Practice queue, session logging, progress view
skills/ # Skill catalog with tier filter, search, and detail
equipment/ # Equipment list, detail, and string replacement log
settings.tsx # New skill cap, notifications, data reset
onboarding/ # First-launch mastery pre-fill flow
components/ # Shared UI components
lib/
db/ # Drizzle schema, migrations, queries, seed data
fsrs/ # FSRS scheduling logic
theme/ # Design tokens and MD3 theme config
store/ # Zustand state stores (queue, session)
assets/
skillCatalog.ts # Kendama USA curriculum data
Contributions are welcome — whether you're a kendama player with feature ideas or a developer looking for a focused open-source project.
- Fork the repo and create a branch:
git checkout -b my-feature - Make your changes with tests where applicable
- Sign off your commits (
git commit -s) — the project uses the Developer Certificate of Origin - Open a pull request with a clear description of what you changed and why
Please read CONTRIBUTING.md before submitting.
V1 is shipping with the full core loop. Planned future directions:
- Cloud sync (opt-in)
- Social features and leaderboards
- Location-based player discovery (opt-in, coarse location only)
- Community-contributed tricks