some basic statistics and invite tree, plus watch new data
This commit is contained in:
@@ -233,9 +233,31 @@ Key facts:
|
||||
- Write API in `bincio serve` delegates to `bincio.edit.server._apply_sidecar_edit`; the
|
||||
Strava sync delegates to `bincio.edit.server.strava_sync` with a temporary data_dir swap
|
||||
|
||||
## Instance settings (stored in `instance.db` `settings` table)
|
||||
|
||||
| Key | Default | Set by | Description |
|
||||
|-----|---------|--------|-------------|
|
||||
| `max_users` | — (unlimited) | `bincio init --max-users N` or `bincio serve --max-users N` | Cap on registered users; 0 or absent = unlimited |
|
||||
| `store_originals` | `true` | `bincio init` (first run only) | Whether uploaded source files and raw Strava API data are kept in `{user_dir}/originals/` |
|
||||
|
||||
`get_setting` / `set_setting` in `db.py` are the read/write accessors. Any new instance-wide flag should use this table rather than a new column.
|
||||
|
||||
## Original file storage
|
||||
|
||||
When a user uploads a FIT/GPX/TCX file the server may keep the source in `{user_dir}/originals/{filename}` rather than always deleting it after extraction. The per-upload `store_original` form field controls the behaviour for a single upload (sent by the UI checkbox). The instance-level `store_originals` setting provides the default that pre-populates the checkbox (read from `GET /api/me` → `store_originals_default`).
|
||||
|
||||
For Strava sync, `store_originals=true` causes `POST /api/strava/sync` to save `{"meta":…,"streams":…}` JSON per activity to `{user_dir}/originals/strava/{activity_id}.json`.
|
||||
|
||||
## About pages
|
||||
|
||||
Static public pages at `/about/` (EN), `/about/it/` (IT), `/about/es/` (ES), `/about/ca/` (CA). All use `public={true}` to bypass the auth wall. Each page:
|
||||
- Shows a Ko-fi donation button at the top.
|
||||
- Fetches `GET /api/stats` on load and renders a **community/invitation tree** (member count, each user's display name, membership duration, and who invited them). Hidden silently in single-user mode.
|
||||
- Contains project description, data storage explanation, early-software caveat, and liability disclaimer.
|
||||
|
||||
## Known issues / next steps
|
||||
|
||||
- `bincio render --watch` mode not yet implemented
|
||||
- `bincio render --watch` mode not yet implemented as a standalone command, but `bincio dev` now watches the data directory via `watchfiles` (bundled with uvicorn) and re-runs `merge_all` automatically when sidecars or activity files change
|
||||
- Activity IDs in older test data may use `+0000` format (pre-fix); re-run extract to get `Z` format
|
||||
- Some activities appear with both untitled and titled IDs (near-dedup timing race)
|
||||
- Remote federation (remote shard URLs in root manifest) is parsed but not yet displayed with attribution in the UI
|
||||
@@ -250,6 +272,10 @@ Key facts:
|
||||
- [ ] Karoo/Garmin Connect importers beyond Strava
|
||||
- [ ] `bincio render --watch` incremental rebuild on sidecar/data changes
|
||||
- [ ] Highlight badge in activity feed cards
|
||||
- [x] Per-instance user limit (`max_users` setting, enforced at registration)
|
||||
- [x] Original file storage option (per-upload checkbox + `store_originals` instance setting)
|
||||
- [x] About page — multilingual (EN/IT/ES/CA), Ko-fi button, community invitation tree
|
||||
- [x] `GET /api/stats` — public endpoint with member count and invitation tree
|
||||
- [x] `bincio.render.merge` — sidecar parser, `_merged/` output, private filter, highlight sort
|
||||
- [x] `bincio edit` FastAPI write API (GET/POST activity, image upload/delete, triggers merge)
|
||||
- [x] `EditDrawer.svelte` — slide-in edit UI in the Astro site
|
||||
|
||||
Reference in New Issue
Block a user