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

98 lines
3.2 KiB
Markdown

# 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
```bash
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](./DEVELOPMENT.md) for full setup instructions.
---
## Documentation
- **[DEVELOPMENT.md](./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](LICENSE) — see the `LICENSE` file for details.