A focused, local-first task planner for Android. Capture tasks, set reminders that fire on time, and keep an honest streak — no paywalls, no ads, no forced sign-up.
Privacy policy · Delete your data · Made by Coderixx
Streak Todo is the productivity app I'd want on my own phone: fast capture, real recurrence, reminders that don't drift, and a streak counter that doesn't lie to you on a missed day. It's built local-first — your data lives on your device, not on someone else's server — with optional Google sign-in for users who want their account associated with usage analytics.
Currently in closed testing on Google Play, with v1.0 production submission queued behind the standard 14-day testing requirement for new developer accounts.
- Quick task capture from a floating action button anywhere in the app
- Subtasks, notes, and color-tagged categories per task
- Due dates, times, lead-time reminders, and a real custom-recurrence editor
- Local reminders that survive a reboot, with
SCHEDULE_EXACT_ALARMfor on-time delivery - "Done" and "Snooze 10m" actions inside the notification itself
- Calendar view with month / week modes
- Profile dashboard: streak counter, weekly completion bars, next-7-days strip, category breakdown donut, overview totals
- Light / dark / system themes (persisted)
- Backup export and import via the system file picker
- Continue-without-signing-in path so Play reviewers and privacy-conscious users can use every screen of the app without a Google account
| Runtime | React Native 0.81 + Expo SDK 54, TypeScript strict |
| Routing | expo-router (file-system, typed routes) |
| Persistence | expo-sqlite, raw SQL repositories, no ORM |
| Auth | @react-native-google-signin/google-signin (Web Client ID, OAuth ID tokens) |
| Notifications | expo-notifications with DATE triggers + Android SCHEDULE_EXACT_ALARM |
| Analytics | Mixpanel (EU residency), bounded task-content payloads, opt-out via env |
| State | React hooks + a small in-memory pub/sub event bus for cross-screen invalidation |
| Theme | Two-layer token system (raw palette → semantic tokens), WCAG-AA audited |
| Build | EAS Build, signed via Play App Signing, AAB output |
streaktodo/
├── app/ expo-router screens (Tasks / Calendar / Profile / onboarding / sign-in / categories / notifications)
├── src/
│ ├── components/ TaskRow, TaskComposer, CalendarGrid, charts, sheets, dialogs
│ ├── db/ repos/, hooks, schema, migrations, event bus
│ ├── lib/ analytics, auth, notificationScheduler, recurrence, streakStats, taskGrouping
│ ├── screens/ SignInScreen
│ └── theme/ tokens, semantic theme, ThemeProvider
├── android/ checked in so dev builds work without an EAS roundtrip
├── assets/ app icons, splash, store assets
├── docs/
│ └── BUILD_PLAN.md phase-by-phase engineering log
├── design-system/ visual source of truth for the mobile UI
└── tools/ scripts (e.g. Play Console Data Safety CSV fixer)
docs/BUILD_PLAN.md— phase-by-phase engineering log, deferred items, and the reasoning behind every "we deliberately did not do this"PRIVACY_POLICY.md— what the app collects, sends, and shares; mirrored at streaktodo.coderixx.com/privacyPLAY_DATA_SAFETY.md— Play Console Data Safety form draft + a CSV-import workaround for a misleading Console UIPLAY_LISTING.md— paste-ready Play Store listing copyRELEASE_CHECKLIST.md— what we walk through before each public releaseSTORE_COPY.md— long-form Play Store description draftsrc/db/migrations/MIGRATIONS.md— SQLite migration policy + the column-rebuild dancesrc/theme/CONTRAST_AUDIT.md— WCAG-AA color contrast audit with before/after ratios
# Prereqs: Node 20+, Java 17, Android SDK with API 35, a connected device.
npm install --legacy-peer-deps
cp .env.example .env # then add EXPO_PUBLIC_GOOGLE_WEB_CLIENT_ID
npx expo run:android # native Android build + installThe android/ folder is checked into the repo so dev builds don't need a fresh expo prebuild round-trip. To regenerate it from app.config.ts:
npx expo prebuild --cleanProduction AABs are built via EAS. The upload keystore lives in the project's Expo account; Play Console signs each release with the production app-signing key.
npx eas-cli@latest build -p android --profile productioneas.json carries the production environment variables (Google client ID, Mixpanel region). The Mixpanel project token is in branding.js and is public-by-design — Mixpanel project tokens identify the destination project, not write credentials.
| Version | 1.0.0 (closed testing) |
| Platform | Android 7.0+ (API 24+), targets API 35 |
| Distribution | Google Play closed testing track; production submission pending the 14-day tester requirement |
| Roadmap | See docs/BUILD_PLAN.md phases 13–16 (collaboration, sync, achievement badges, home-screen widgets) |
Designed and built by Coderixx.
For questions, feedback, or to report an issue: ankitpathakofficial@gmail.com


