Alpha — v0.0.1 · Android only (arm64) · unofficial mobile client
A cross-platform mobile client for tududi — a calm, open system for organizing life and work. Built with Expo + React Native + TypeScript, designed for offline-first use against a self-hosted tududi server.
Grab the latest alpha APK from the
Releases page.
For step-by-step install instructions on your phone, see
docs/INSTALL.md.
- Full feature parity with the tududi web app: tasks, projects, areas, notes, tags, subtasks, recurring tasks, inbox.
- Offline-first. Browse and edit without a connection; changes are queued and replayed when you're back online. Background sync keeps data fresh.
- Self-hostable. Point the app at your own tududi server — no cloud dependency.
- Two auth modes. Email/password or personal API key. The app will transparently upgrade a password login to a bearer token when the server supports it, so you're not sending your password on every sync.
- Today quick-capture. Send a line to your inbox from the top of the Today screen (same pipeline as share-to-inbox), then process it when ready.
- Light & dark themes (follows system by default), plus i18n scaffolding.
-
Android 7.0+ on an arm64 device (effectively all modern phones).
-
A running tududi server reachable from the phone:
docker run -d -p 3002:3002 \ -e TUDUDI_ALLOWED_ORIGINS="http://<your-lan-ip>:3002" \ -e TUDUDI_SESSION_SECRET="$(openssl rand -hex 32)" \ chrisvel/tududi:latest
-
Either login credentials or a personal API key (generated from Settings → API Keys in the tududi web UI).
npm install
npm run start # Metro + QR code
npm run android # launch on a connected device / emulator
npm run ios # macOS only
npm run lint
npm run test
npx tsc --noEmitcd android
./gradlew assembleDebug -PreactNativeArchitectures=arm64-v8a
# APK at android/app/build/outputs/apk/debug/app-debug.apkRequires JDK 17 and the Android SDK (command-line tools + platform 34).
See docs/RELEASE.md for EAS cloud builds and store
submission, and docs/api-notes.md for integration
details.
app/ expo-router screens (auth, tabs, detail views)
src/api/ typed API client (fetch + Bearer / session + CSRF)
src/db/ SQLite schema, migrations, repositories
src/sync/ pull, push, outbox, background scheduler
src/stores/ zustand stores (session, UI preferences)
src/features/ feature modules (tasks, projects, areas, notes, tags, inbox)
src/components/ shared UI primitives (Screen, Button, TextField, ...)
src/theme/ palette + typography tokens, hook
src/i18n/ string bundles
src/types/ shared types mirroring tududi's swagger
src/share/ share-intent + deep-link plumbing
docs/ install, release, and API-integration docs
android/ native Android project (generated by Expo prebuild, tracked)
- Push notifications for due tasks and reminders
- Release (non-debug) Android APK / AAB via EAS
- Attachments on tasks and notes
- End-to-end encryption for offline storage
- iOS TestFlight build
Bug reports and PRs are welcome. For non-trivial changes please open an issue first so we can agree on the approach. Before submitting a PR:
npm run lint && npx tsc --noEmit && npm run testMIT. Tududi itself is MIT-licensed by chrisvel; this client is an independent project and not officially affiliated with upstream.