Skip to content

Latest commit

 

History

History
57 lines (46 loc) · 1.9 KB

File metadata and controls

57 lines (46 loc) · 1.9 KB

Chibisafe Mobile App

Mobile app for uploading files to a self-hosted Chibisafe instance via share sheet integration.

Tech Stack

  • Expo SDK 54 with Expo Router (file-based routing)
  • TypeScript — strict mode
  • Bun — package manager
  • react-native-mmkv — fast local persistence (albums cache, upload history)
  • expo-secure-store — API key storage
  • expo-share-intent — share sheet integration (Android intents + iOS share extension)
  • expo-file-system — file uploads
  • expo-notifications — upload progress notifications
  • expo-image — efficient image rendering

Project Structure

app/                    Expo Router screens
  (tabs)/               Bottom tab navigation
    index.tsx           Upload history (home)
    gallery.tsx         Albums & files browser
    settings.tsx        Server configuration
  upload.tsx            Upload modal (share intent target)
  _layout.tsx           Root layout with share intent listener
src/
  api/client.ts         Chibisafe API client
  components/           Reusable UI components
  services/upload.ts    Background upload + notifications
  store/storage.ts      MMKV + SecureStore persistence
  theme/index.ts        Brand colors, spacing, typography
  types/index.ts        Shared TypeScript interfaces

Commands

bun install              # Install dependencies
bun run start            # Start Expo dev server
bun run android          # Launch on Android
bun run ios              # Launch on iOS
bunx expo prebuild       # Generate native projects
bunx expo run:android    # Build & run Android

Chibisafe API

  • Auth: x-api-key header
  • Upload: POST /api/upload (multipart, optional albumuuid header)
  • Albums: GET /api/albums
  • Settings: GET /api/settings
  • Album files: GET /api/album/:uuid

Theme

Dark-first design matching Chibisafe's aesthetic. Colors defined in src/theme/index.ts.