halkyon/apps/train
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Tizian 「ティツィアーン」 45fd6595e1
feat(ui,learn,todo,train,meditate): a wave in the app's colour over the navigation bar
The developer's choice of 7 Nov 2026 (the mockup's variant E): a tap on
another destination sends a radial glow in the app's colour over the bar
from that destination's centre, solid to 35 % of its radius and gone at
70 %, growing to cover the bar (cubic(.2, .7, .2, 1)) while it fades from
half its strength in dark mode and a third in light, over 1.2 s, behind
the destinations and clipped to the bar. None for the destination already
chosen, none with animations off, and none for a tab changed without a
tap (a link, back): the wave answers the finger. The destination chosen
takes the app's colour, its indicator tinted 22 % with it, without
Material's ripple or the indicator growing; the bar's top corners are
rounded, 20 dp, the screen showing through them.

Each app gives the frame its colour (NavigationFrame's accent, from
PaletteColor): Learn's purple, its icon's last colour, Todo's strawberry,
Train's carrot and Meditate's fern, their screens' wash.

For trying it on a phone, a debug build's Settings has a section
Navigation bar (debug), halkyon_ui's NavigationBarDebugSection, switching
live, in memory alone: the variant (A Material only, C the wave with
Material's fill, E without it, F without the indicator too), the wave's
time (0.7 to 2 s) and the corners (0 to 28 dp). Release builds never read
it and show shippingNavigationBarStyle, the debug section's start: to
remove it, delete the section from the four Settings screens and
debugNavigationBarStyle, and let effectiveNavigationBarStyle return the
shipping style.

Whats-New: Tapping a tab sends a soft wave in the app's colour across the navigation bar, now with rounded corners.
Whats-New-De: Ein Tipp auf einen Tab schickt eine sanfte Welle in der Farbe der App über die Navigationsleiste, jetzt mit abgerundeten Ecken.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-08 11:48:37 +01:00
..
brouter feat(train): routes planned through the instance's BRouter (ADR 0030, D44) 2026-10-30 15:53:01 +01:00
halkyon_train_client Merge branch 'train-days' into integration 2026-11-04 09:32:11 +01:00
halkyon_train_flutter feat(ui,learn,todo,train,meditate): a wave in the app's colour over the navigation bar 2026-11-08 11:48:37 +01:00
halkyon_train_server feat(train): OpenFreeMap's dark style in a dark theme, and MAP_DARK_STYLE_URL for a provider's 2026-11-05 08:58:33 +01:00
snap build(train): Train on the desktop as a snap, to the Store's edge channel with each release (ADR 0030, D62) 2026-11-03 12:16:05 +01:00
.gitignore feat(train): Halkyon Train's shell, Todo's copied and renamed (ADR 0030, D12) 2026-10-30 15:52:45 +01:00
AGENTS.md feat(learn,todo,train,meditate,ui): the navigation bar flush with the foot, a fade above it 2026-11-08 11:48:37 +01:00
CLAUDE.md feat(train): Halkyon Train's shell, Todo's copied and renamed (ADR 0030, D12) 2026-10-30 15:52:45 +01:00
README.md feat(train): setting up and keeping the Polar Loop (ADR 0030, D34–D36) 2026-10-30 15:52:55 +01:00
release.dart build(train): Train on the desktop as a snap, to the Store's edge channel with each release (ADR 0030, D62) 2026-11-03 12:16:05 +01:00

Halkyon Train

Running, cycling and rowing, as a Halkyon app (what it is to do: ADR 0030). For now a shell on the shared packages: people choose an instance, sign in (with SimpleLogin or a password), switch between the accounts on their devices, sign out and delete their account; the home is empty until Train's first model.

Package What it is
halkyon_train_server The server: Serverpod with the halkyon_base module
halkyon_train_client Its client, generated by Serverpod
halkyon_train_flutter The app, on halkyon_app and halkyon_ui (Android, iOS, Linux, macOS, Windows)

Run it with serverpod start in halkyon_train_server, which starts the server (and its embedded PostgreSQL) on ports of its own, 8180 to 8190, and the app; or the app alone against an instance with flutter run --dart-define=SERVER_URL=https://…/ in halkyon_train_flutter. Tests: dart run melos run test:dart --scope=halkyon_train_server and dart run melos run test:flutter --scope=halkyon_train_flutter at the repository's root, or dart run tool/check.dart for everything.

The app's icon is Lucide's bike (ISC licence, ADR 0031), drawn by the repository's tool/app_icons.py. Licences: the server under the SSPL, the client and the app under the AGPL, the app's with a permission for linking Polar's BLE SDK, which isn't free software, for the Polar Loop (ADR 0030, D36; LICENSE.md).