Skip to content

feat: Mobile App (Expo/React Native) #70

@tomymaritano

Description

@tomymaritano

Overview

React Native app using Expo, sharing 80% of code with desktop.

New Package

@readied/storage-sqlite-rn

expo-sqlite adapter with same interface as better-sqlite3:

src/
  index.ts
  database.ts   # expo-sqlite wrapper
  repositories/
    SQLiteNoteRepository.ts

New App

apps/mobile/

app/
  _layout.tsx         # Root layout
  index.tsx           # Note list
  note/[id].tsx       # Note editor
  settings.tsx        # Settings
components/
  NoteList.tsx
  NoteEditor.tsx      # TextInput (no CodeMirror)
  MarkdownPreview.tsx # react-native-markdown-display
hooks/
  useNotes.ts         # TanStack Query
stores/
  navigationStore.ts
providers/
  DatabaseProvider.tsx
  QueryProvider.tsx

Config Files

  • app.json - Expo config
  • metro.config.js - Monorepo support
  • babel.config.js
  • eas.json - EAS Build config

Dependencies

"expo": "~52.0.0",
"expo-router": "~4.0.0",
"expo-sqlite": "~14.0.0",
"@tanstack/react-query": "^5.0.0",
"zustand": "^4.5.0",
"react-native-markdown-display": "^7.0.0"

Shared Packages (80% reuse)

  • @readied/core
  • @readied/storage-core
  • @readied/wikilinks
  • @readied/tasks
  • @readied/embeds
  • @readied/sync-core
  • @readied/licensing

Estimate

~104 hours (13 days)

Pre-requisites

  • Expo account (EAS Build)
  • Apple Developer Program ($99/year)
  • Google Play Console ($25 one-time)
  • Cloud Sync implemented first

Screens

  1. Note List - All notes, notebooks, search
  2. Note Editor - Markdown editing with preview
  3. Settings - Sync, account, preferences

Acceptance Criteria

  • App runs on iOS and Android
  • Create, edit, delete notes
  • Notebooks and tags work
  • Search works
  • Sync with desktop (if Pro)
  • Offline-first (works without internet)
  • Published to App Store + Play Store

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions