Files
bincio-autarchive/README.md
T
2026-06-04 00:24:08 +02:00

3.2 KiB

Bincio Mobile App

An Expo/React Native mobile app for managing cycling activities locally on your phone.

Features:

  • 📱 Local-first: all activity data lives on your device
  • 🗺️ FIT/GPX/TCX import with local extraction (via Pyodide)
  • 📊 Activity detail: maps, elevation profiles, metric charts
  • ☁️ Optional sync to a remote Bincio instance
  • 🤖 Karoo 2 integration: auto-import from device storage
  • 📴 Works offline — no account required

Getting Started

npm install
npx expo start

Install Expo Go from the Play Store / App Store and scan the QR code to run the app on your phone.

For native module support (maps, file extraction), use a Development Build instead of Expo Go. See DEVELOPMENT.md for full setup instructions.


Documentation

  • DEVELOPMENT.md — How to build, run, and deploy the app

    • Prerequisite tools & setup
    • Two build modes (Expo Go vs Development Build)
    • Android & iOS development
    • APK building & distribution
    • Karoo 2 sideloading
    • Troubleshooting
  • Full design document — For detailed architectural info, sync protocol, data model, and known issues:

    • Location: /Users/brutsalvadi/src/bincio_activity/docs/mobile-app.md
    • Topics: Pyodide integration, Karoo constraints, implementation phases, technical debt

Project Structure

├── app/                      — Expo Router screens
│   ├── (tabs)/              — Tab screens (Feed, Import, Settings)
│   └── activity/[id].tsx    — Activity detail screen
├── components/              — Reusable UI components
├── db/                       — SQLite schema, queries, sync logic
├── extraction/              — Pyodide WebView & extraction engine
├── ThemeContext.tsx         — Theme & color palette
├── app.json                 — Expo config
├── metro.config.js          — React Native bundler config
└── tsconfig.json            — TypeScript config

Technology

  • Framework: Expo (React Native) + TypeScript
  • Database: SQLite (expo-sqlite)
  • Maps: MapLibre (with SVG fallback for Android < 29)
  • File extraction: Pyodide (Python in WebView)
  • Build: EAS Build + local Prebuild

Quick Commands

Command What it does
npm install Install dependencies
npx expo start Start Expo dev server (use with Expo Go app)
npx expo run:android Build & run Development Build on Android device/emulator
npx expo run:ios Build & run on iOS device
npx expo prebuild --clean Generate native Android/iOS projects
eas build -p android --profile preview Build standalone APK in the cloud

Where the code came from

This repository was split from bincio_activity, which contains:

  • Backend Python library (bincio/) — extraction, database, API server
  • Web frontend (site/) — Astro app
  • Original mobile code (now here)

The mobile app is designed to work standalone but can sync with a Bincio instance for backup and web access.


License

AGPL v3 — see the LICENSE file for details.