Skip to content

[Proposal] Mobile app for iOS & Android #508

Description

@alhaymex

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:

  1. Phase 1 - Scaffold apps/mobile in the monorepo with Expo, wire workspace imports.
  2. Phase 2 - Mobile bridge implementations (local file I/O + remote HTTP/WS).
  3. Phase 3 - Core navigation and note list UI.
  4. Phase 4 - CodeMirror 6 WebView editor integration + keyboard toolbar.
  5. 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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions