Skip to content

Latest commit

Β 

History

History
144 lines (98 loc) Β· 2.82 KB

README.md

File metadata and controls

144 lines (98 loc) Β· 2.82 KB

River Journal

Private stream-of-consciousness journaling, across all your devices.

Local-first, universally cross-platform.

Built with Next.js, Expo, Tauri, and Tamagui.

πŸ—οΈ Architecture

This is a monorepo supporting multiple platforms:

  • Web: Next.js application (apps/web/)
  • Mobile: Expo React Native application (apps/mobile/)
  • Desktop: Tauri application (apps/desktop/)
  • Shared UI: Tamagui components (packages/ui/)
  • Shared Logic: Core application logic (packages/app/)

πŸš€ Quick Start

Prerequisites

  • Node.js 22+
  • Yarn 4.5+
  • For mobile development: Expo CLI, iOS Simulator, Android Studio
  • For desktop development: Rust and Tauri CLI

Installation

# Clone the repository
git clone https://github.com/CharlesCoeder/river-journal.git
cd river-journal

# Install dependencies
yarn install

# Build shared packages
yarn build

πŸ“± Platform-Specific Commands

Web Development

# Start development server
yarn web

# Build for production
yarn web:prod

# Serve production build
yarn web:prod:serve

Mobile Development

# Start Expo development server
yarn mobile

# Run on iOS simulator
yarn ios

# Run on Android emulator/device
yarn android

# Prebuild native projects
yarn mobile:prebuild

Desktop Development

# Start desktop development
yarn desktop

# Build desktop application
yarn desktop:build

πŸ§ͺ Testing & Quality

# Run all tests
yarn test

# Run tests in watch mode
yarn test:watch

# Run linting
yarn lint

# Check Tamagui configuration
yarn check-tamagui

πŸ› οΈ Development

Project Structure

river-journal/
β”œβ”€β”€ apps/
β”‚   β”œβ”€β”€ web/          # Next.js web app
β”‚   β”œβ”€β”€ mobile/       # Expo mobile app
β”‚   └── desktop/      # Tauri desktop app
└── packages/
    β”œβ”€β”€ ui/           # Shared Tamagui components
    β”œβ”€β”€ app/          # Shared application logic
    └── config/       # Shared configuration

Key Technologies

  • Frontend: Next.js 15, Expo SDK 53
  • UI Library: Tamagui for cross-platform components
  • State Management: Legend-State v3 with persistence/optional sync
  • Package Manager: Yarn with workspaces
  • TypeScript: with strict mode

State Management & Persistence

  • Web: IndexedDB via Legend-State
  • Mobile: MMKV via Legend-State
  • Desktop: Tauri IndexedDB via Legend-State

Build Errors

  • Ensure all dependencies are installed: yarn install
  • Rebuild shared packages: yarn build

Mobile Development

  • iOS: Ensure Xcode and iOS Simulator are installed
  • Android: Ensure Android Studio and emulator are set up
  • Run yarn mobile:prebuild if native dependencies change

Desktop Development

  • Ensure Rust is installed: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs/ | sh