Skip to content

Benchwork/tududi-mobile

Repository files navigation

Tududi Mobile

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.

Download

Grab the latest alpha APK from the Releases page. For step-by-step install instructions on your phone, see docs/INSTALL.md.

Features

  • 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.

Requirements

  • 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).

Development

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 --noEmit

Building a local Android APK

cd android
./gradlew assembleDebug -PreactNativeArchitectures=arm64-v8a
# APK at android/app/build/outputs/apk/debug/app-debug.apk

Requires 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.

Project layout

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)

Roadmap

  • 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

Contributing

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 test

License

MIT. Tududi itself is MIT-licensed by chrisvel; this client is an independent project and not officially affiliated with upstream.

About

my attempt at making a mobile companion app that interfaces with a self hosted tududi

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors