73 lines
3.0 KiB
Markdown
73 lines
3.0 KiB
Markdown
# Pit Log
|
|
|
|
Pit Log is an offline-first Android app for hobby stock and thunder car asphalt ovals. It keeps race nights, tire pressures, tire heat, and the car's setup on the phone. Two phones can share a car through the sync server.
|
|
|
|
Pressures are PSI. Tire heat is °F, read inside, middle, then outside.
|
|
|
|
## On the phone
|
|
|
|
The app opens on the list of cars. Tap a car to see its nights. Add one from that list, or paste a token from another phone.
|
|
|
|
The gear icon opens **Car**. A new install already has the server address filled in:
|
|
|
|
`http://sync.sleepingliongames.com:27017`
|
|
|
|
**Sync on its own** sends a save right away and checks about every 30 seconds while the app is open. It stays quiet while the app is closed. **Sync now** sends every car on the phone.
|
|
|
|
Each car has its own 8-digit token, shown on the **Car** screen. **Share token** sends those digits to another phone. On the other phone, paste it under **Add a car from a token**. That phone then syncs that car. A different car gets a different token.
|
|
|
|
**Remove from this phone** takes the car off that phone only. The other phone and the server keep it.
|
|
|
|
**Check for updates** on the Car screen looks at the latest release on this git. When a newer one is posted, the app downloads it and Android asks you to install it.
|
|
|
|
The book icon opens the setup guide. **Car setup** on the home screen is the original setup for the selected car, plus a log of later changes. A race night keeps its own chassis sheet.
|
|
|
|
## Sync server
|
|
|
|
The server is one small Python program, `sync/pitlog_sync.py`. It listens on the Pelican allocation port and stores each car token in its own database file. `GET /health` returns `{"ok":true}`.
|
|
|
|
Phones use plain HTTP. The address above is the live server.
|
|
|
|
### Pelican
|
|
|
|
Import this egg into a nest on the panel:
|
|
|
|
https://git.ny.daprogs.com/RallyBlock/Pit-Log-App/raw/branch/main/sync/egg-pitlog.yaml
|
|
|
|
Create a server from **Pit Log sync**. Use the Python 3.13 image, one port, and leave **Token** blank. The startup command is:
|
|
|
|
```text
|
|
/usr/local/bin/python /home/container/pitlog_sync.py
|
|
```
|
|
|
|
Start the server. The console prints `Pit Log sync listening` and the port. Phones use `http://` plus the allocation address and that port.
|
|
|
|
A reinstall downloads `pitlog_sync.py` again from this repo. If the panel wipes server files, the phones still have their logs and send them on the next sync.
|
|
|
|
## Build
|
|
|
|
The Android package is `com.racingapp.pitlog`. It needs an Android SDK and JDK 17 or newer. Put the SDK location in `local.properties`:
|
|
|
|
```text
|
|
sdk.dir=C\:\\Users\\you\\AppData\\Local\\Android\\Sdk
|
|
```
|
|
|
|
That file stays off git. From the project root:
|
|
|
|
```text
|
|
gradlew.bat assembleDebug
|
|
```
|
|
|
|
Build output is written to `D:\RacingAPP-build` so it stays out of a synced project folder. The debug APK is:
|
|
|
|
`D:\RacingAPP-build\app\outputs\apk\debug\app-debug.apk`
|
|
|
|
APK files are gitignored.
|
|
|
|
## Layout
|
|
|
|
- `app/` is the Android app.
|
|
- `sync/pitlog_sync.py` is the sync server.
|
|
- `sync/egg-pitlog.yaml` is the Pelican egg.
|
|
- `preview/` holds screen pictures used while looking at the UI.
|