75 lines
1.7 KiB
Markdown
75 lines
1.7 KiB
Markdown
# Trainlog
|
|
|
|
Trainlog is a local-first workout log composed of:
|
|
|
|
- a lightweight Android data-entry application;
|
|
- a colorful Unix/Linux TUI for history, statistics, graphs, and progress tracking.
|
|
|
|
## Project goals
|
|
|
|
Android is optimized for fast use during a workout:
|
|
|
|
- start and end time;
|
|
- exercise selection;
|
|
- new exercise creation;
|
|
- planned sets and repetitions;
|
|
- actual sets and repetitions;
|
|
- load;
|
|
- rest time;
|
|
- body weight;
|
|
- body measurements;
|
|
- JSON export.
|
|
|
|
The TUI is the main application:
|
|
|
|
- import Android exports;
|
|
- create sessions directly from the terminal;
|
|
- maintain the canonical exercise catalog;
|
|
- maintain SQLite history;
|
|
- display workout history;
|
|
- track body weight;
|
|
- track body measurements;
|
|
- track performance;
|
|
- display colorful terminal graphs;
|
|
- export data for external use.
|
|
|
|
## Architecture
|
|
|
|
```text
|
|
Android
|
|
|
|
|
| Trainlog JSON
|
|
v
|
|
Trainlog TUI
|
|
|
|
|
v
|
|
SQLite
|
|
```
|
|
|
|
The TUI SQLite database is the canonical long-term store.
|
|
|
|
The JSON exchange format is versioned and designed for idempotent imports.
|
|
|
|
## Repository layout
|
|
|
|
```text
|
|
android/ Android application
|
|
tui/ C17 ncursesw application
|
|
docs/ Canonical project documentation
|
|
format/ JSON schema and exchange-format material
|
|
examples/ Valid exchange examples
|
|
tools/ Development and validation tools
|
|
```
|
|
|
|
## Development principles
|
|
|
|
- local-first;
|
|
- no mandatory cloud account;
|
|
- user-owned data;
|
|
- versioned persistent formats;
|
|
- stable exercise identifiers;
|
|
- idempotent imports;
|
|
- documentation and tests are part of every feature;
|
|
- clear separation between UI, business logic, and persistence.
|
|
|
|
See `AGENTS.md` for the development contract.
|