No description
- TypeScript 97.9%
- Dockerfile 1.6%
- JavaScript 0.5%
|
All checks were successful
Build APK / build (push) Successful in 3m58s
- MatchDate: volledige dagnaam met hoofdletter i.p.v. afkorting. - HomeCard: "reserves:" op eigen regel met namen eronder in meerdere kolommen. - OpponentsCard: tegenstanders in een scrollbare popup (info-knop) i.p.v. inline; backdrop en sheet als siblings zodat de ScrollView vrij scrollt. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .claude | ||
| .forgejo | ||
| app | ||
| assets | ||
| src | ||
| .env.example | ||
| .gitignore | ||
| app.json | ||
| babel.config.js | ||
| CLAUDE.md | ||
| eas.json | ||
| eslint.config.js | ||
| metro.config.js | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
LibreAndroid
React Native + Expo port of LibreWeb for "Biljartclub 't Wold".
Setup
npm install
cp .env.example .env
# edit .env to point EXPO_PUBLIC_LIBRE_API_URL and EXPO_PUBLIC_LIBRE_API_KEY
npm run start
Then scan the QR code with the Expo Go app on an Android device, or press a/i/w in the CLI to launch the Android emulator, iOS simulator, or web build respectively.
Environment
Expo only exposes env vars prefixed with EXPO_PUBLIC_ to the JS bundle:
EXPO_PUBLIC_LIBRE_API_URL— base URL of the Libre backendEXPO_PUBLIC_LIBRE_API_KEY—X-API-KEYheader valueEXPO_PUBLIC_LIBRE_EDITMODE—"true"enables edit mode at startup (dev only)
Architecture
Mirrors LibreWeb 1:1 where possible:
- Routing:
expo-router(file-based) underapp/. Tabs across the bottom replace the top NavBar. - Data: TanStack Query v5 + Axios via
src/services/apiClient.tsandsrc/services/useApiQuery.ts(identical to LibreWeb). - Models:
src/models/— pure TS interfaces, copied verbatim. - Hooks:
src/hooks/— identical to LibreWeb exceptuseUpdateHub.tsreadsprocess.env.EXPO_PUBLIC_LIBRE_API_URLinstead ofimport.meta.env. - UI primitives:
src/components/libreui/— re-implemented for React Native, prop API matches LibreWeb so page ports were near-mechanical. No Bootstrap; styling uses RN StyleSheet. - Forms: Formik (same as LibreWeb).
libreuiInput/CheckBoxare Formik-aware viauseField. - Charts:
react-native-chart-kit(replaceschart.js/react-chartjs-2). - Login state: a small in-memory state machine (mobile code → pin), same flow as web.