Overview
This has come up before in #368 (iOS) and #230 (Android). I'd like to propose a concrete path forward: a first-party mobile app living as apps/mobile in the monorepo, built with React Native / Expo.
ZenNotes architecture (packages/shared-domain, packages/bridge-contract, packages/app-core, apps/server) already cleanly separates domain logic, bridge contracts, and host shells. A React Native mobile app can seamlessly fit into this structure as apps/mobile.
Key Highlights & Architectural Fit
1. Monorepo Integration (apps/mobile)
- Reuses 100% of
@zennotes/shared-domain (frontmatter parsing, tasks engine, CSV database logic, custom themes).
- Extends
@zennotes/bridge-contract (ZenBridge) with mobile capabilities.
Key ideas
Storage & offline access
- Local vault on-device for offline-first editing.
- Remote server connection to self-hosted
apps/server instances for users who already run the web stack.
Editor
- Encapsulate CodeMirror 6 in a WebView to preserve full editor parity with desktop and web including Vim motions, live preview, syntax highlighting, and math/diagram rendering.
- Smart Vim handling: auto-enable Vim keybindings when a hardware keyboard is detected (iPad + Magic Keyboard); default to standard touch editing on phones with a slim formatting toolbar above the soft keyboard.
Touch-first navigation
- Replace the desktop multi-pane layout with mobile patterns: drawer navigation, bottom tabs, swipe gestures, and bottom sheet context menus.
- Native share extension (iOS Share Sheet / Android Intent) for quick capture without opening the full app.
Suggested phased approach
To keep PRs reviewable and avoid a single massive contribution:
- Phase 1 - Scaffold
apps/mobile in the monorepo with Expo, wire workspace imports.
- Phase 2 - Mobile bridge implementations (local file I/O + remote HTTP/WS).
- Phase 3 - Core navigation and note list UI.
- Phase 4 - CodeMirror 6 WebView editor integration + keyboard toolbar.
- Phase 5 - Tasks, databases, quick capture, and feature parity polish.
I'm happy to take direction on framework choices and architectural details. Would you be open to a Phase 1 PR that scaffolds apps/mobile in the monorepo?
Overview
This has come up before in #368 (iOS) and #230 (Android). I'd like to propose a concrete path forward: a first-party mobile app living as
apps/mobilein the monorepo, built with React Native / Expo.ZenNotes architecture (
packages/shared-domain,packages/bridge-contract,packages/app-core,apps/server) already cleanly separates domain logic, bridge contracts, and host shells. A React Native mobile app can seamlessly fit into this structure asapps/mobile.Key Highlights & Architectural Fit
1. Monorepo Integration (
apps/mobile)@zennotes/shared-domain(frontmatter parsing, tasks engine, CSV database logic, custom themes).@zennotes/bridge-contract(ZenBridge) with mobile capabilities.Key ideas
Storage & offline access
apps/serverinstances for users who already run the web stack.Editor
Touch-first navigation
Suggested phased approach
To keep PRs reviewable and avoid a single massive contribution:
apps/mobilein the monorepo with Expo, wire workspace imports.I'm happy to take direction on framework choices and architectural details. Would you be open to a Phase 1 PR that scaffolds
apps/mobilein the monorepo?