Postep is a self-improvement companion that treats your Emacs Org directories as the source of truth while delivering a touch-first Lexical-backed interface on Android and other platforms. It combines a high-performance Rust core with a React Native (Expo) surface so agenda planning, habit tracking, and org-roam knowledge work stay in sync across devices.
- Org-first database: Point Postep at any Org directory (local, Google Drive, or both) and it mirrors the files without converting them to a proprietary format.
- Agenda focus: Render the full Org agenda, including scheduled items, deadlines, and backlog triage, with inline actions to capture, complete, or reschedule tasks.
- Habit coaching: Surface Org habit streaks, punch cards, and trendlines so daily routines stay on track.
- Calendar integration: Map Org timestamps to Google Calendar for reminders and availability overlays while keeping Org as the canonical store.
- Org-roam graph: Explore backlinks, tags, and daily notes from your roam vault to support long-term self-improvement ecosystems.
The detailed architecture blueprint lives in docs/architecture.md, with the Lexical UX detailed in docs/ui-redesign.md. At a glance, the stack looks like this:
- Rust core crates (
crates/): Parse Org files, generate agendas, compute habit metrics, sync storage providers, and build org-roam graphs. The crates compile both to native binaries (for tooling) and shared-library targets that feed the UI. - TypeScript bridge (
packages/bridge, WIP): Anapi-rslayer that exposes the Rust services to the mobile UI and translates Org documents into Lexical-compatible JSON payloads. - Lexical UI (
apps/mobile, WIP): An Expo (React Native) application that uses Lexical for editor state and a native React Native projection for rendered Org blocks. Screens include Library, Agenda, Habits, Roam, and Capture.
This repository now uses the Lexical/React Native architecture for the app surface while the Rust crates provide Org parsing, agenda, sync, and bridge payloads.
crates/
org_domain # Org parsing, agenda, habit, and Lexical document projection
org_bridge # Native bridge payloads for the TypeScript app
org_core # Core Org data structures and shared logic
apps/
mobile # Expo React Native app with Lexical-backed Org UI
packages/
bridge # TypeScript bridge API and local development harness
docs/
architecture.md
android-storage.md
ui-redesign.md
- Rust toolchain:
rustup target add aarch64-linux-android armv7-linux-androideabi x86_64-linux-android - Node/Expo toolchain: run
npm install --legacy-peer-depsinsideapps/mobile. - Mobile checks: from
apps/mobile, runnpm run typecheck,npm run test:ux,npm run e2e:web:build, andnpm run e2e:web. - Android smoke build: from
apps/mobile, runnpm run e2e:android:prebuildandnpm run e2e:android:build. - Android standalone APK: from
apps/mobile, runnpm run android:standalone:prebuild,npm run android:standalone:build, andnpm run android:standalone:install. This installs a bundled APK that does not require Metro; debug/e2e APKs are Metro-dependent and can show a blank screen if launched without the dev server. - Desktop prototype:
cargo run -p org_appstill launches the legacy egui app for testing Org parsing changes.
- Launch the app and open the Library tab. The root manager at the top lets you paste filesystem paths or, on Android, tap Pick via Android SAF to grant access to a Google Drive or local directory.
- Add your main Org directory under “Org Roots” and (optionally) your Org-roam vault under “Org-roam Roots”. The selections are passed to the Rust bridge, registered with
OrgSyncService, and synced across the Agenda, Habits, Roam, and Capture screens automatically. - You can remove roots at any time; the bridge will stop watching them and the UI will refresh to match.
- Integration tests now generate synthetic Org data on the fly (see
crates/org_domain/tests/). Use your own directories in development; the repository does not ship personal Org content.
Expect rapid changes as the bridge and Lexical layers come online. See docs/architecture.md for the implementation roadmap and module responsibilities.