No description
  • Python 64%
  • JavaScript 17.6%
  • C++ 7.6%
  • CSS 3.7%
  • C 1.8%
  • Other 5.3%
Find a file
2026-07-20 21:20:27 +00:00
.issues live_timing_relay: add service to relay lap times from PostgreSQL to live timing XML-RPC server 2026-07-20 18:56:00 +01:00
.woodpecker Configure woodpecker ci 2026-06-28 21:49:55 +01:00
api Merge pull request 'feat: add single gate autocross discipline' (#79) from single_gate_autocross into master 2026-07-20 21:20:27 +00:00
configuration Check gate roles on lap split 2026-06-11 22:32:03 +01:00
docs Normalize docs/ filenames to NNNN-prefix convention 2026-07-09 22:12:28 +01:00
endurance_ui display all timestamps in UTC consistently 2026-07-15 20:09:02 +01:00
gate_server backend: pipe battery_mv from gate heartbeat through to UI 2026-07-11 19:16:17 +01:00
libs live_timing_relay: add service to relay lap times from PostgreSQL to live timing XML-RPC server 2026-07-20 18:56:00 +01:00
LICENSE Start the timekeeping repo 2026-02-06 21:25:28 +00:00
live_timing_relay live_timing_relay: add service to relay lap times from PostgreSQL to live timing XML-RPC server 2026-07-20 18:56:00 +01:00
live_timing_server fixup! live_timing: added code for the first version of live timing server 2026-07-20 19:05:01 +01:00
log_pruner log_pruner: Add Dockerfile, requirements, and Makefile 2026-06-09 18:34:50 +01:00
scripts feat: add automated database backup sidecar and helper scripts 2026-06-17 22:54:36 +01:00
testing_sim backend: pipe battery_mv from gate heartbeat through to UI 2026-07-11 19:16:17 +01:00
timegate-firmware Reduce laser trigger debounce from 50ms to 25ms 2026-07-16 23:28:33 +01:00
ui fix: show event mode (discipline) in EventsConfig table 2026-07-16 09:19:25 +01:00
.dockerignore Here I change everything 2026-06-05 17:20:28 +01:00
.env-dev live_timing_relay: add service to relay lap times from PostgreSQL to live timing XML-RPC server 2026-07-20 18:56:00 +01:00
.env-prod fix(compose): fixed ports 2026-06-04 20:38:04 +01:00
.gitignore live_timing_server: add Docker compose stack with shared SQLite volume 2026-07-20 19:05:01 +01:00
.gitlab-ci.yml Remove flatc 2026-05-03 16:43:54 +01:00
.pre-commit-config.yaml Setup pre commit checks 2026-03-01 00:06:32 +00:00
AGENTS.md persistence: Add gate_logs table, migration, and query methods 2026-06-09 01:46:05 +01:00
docker-compose.live-timing.yml live_timing_server: add Docker deployment with nginx reverse proxy 2026-07-20 18:27:38 +01:00
docker-compose.yml live_timing_relay: add service to relay lap times from PostgreSQL to live timing XML-RPC server 2026-07-20 18:56:00 +01:00
Makefile libs: add scoring CLI scaffold and integrate into build pipeline 2026-06-15 23:17:37 +01:00
pyproject.toml Fix ty paths 2026-05-30 16:44:07 +01:00
pyrightconfig.json Create pyrightconfig.json 2026-06-05 16:53:05 +01:00
README.md Add CI badge 2026-06-28 22:08:50 +01:00
requirements.txt Migrate timekeeping storage to Postgres 2026-05-12 21:48:05 +01:00

badge

Timekeeping

Software for the measurement of formula student lap times.

Database

The runtime stack now uses PostgreSQL. Application services read the database connection from DATABASE_URL, and docker-compose.yml starts a local PostgreSQL service that the API and gate server share by default. The compose setup stores PostgreSQL data in the named Docker volume postgres_data, so the database files stay out of the repository working tree and do not interfere with image builds. If you used the older bind mount at ./data/postgres, remove that directory after stopping the stack so legacy Docker builds no longer scan it.

To open a PostgreSQL prompt against the running compose service:

cd /home/joaj/sources/timekeeping
docker compose exec postgres psql -U timekeeping -d timekeeping

To inspect or change Alembic migration state from the compose stack, run the commands in the api container:

cd /home/joaj/sources/timekeeping
docker compose exec api python -m alembic -c /app/timekeeping_persistence/alembic.ini current
docker compose exec api python -m alembic -c /app/timekeeping_persistence/alembic.ini history
docker compose exec api python -m alembic -c /app/timekeeping_persistence/alembic.ini downgrade -1
docker compose exec api python -m alembic -c /app/timekeeping_persistence/alembic.ini downgrade base
docker compose exec api python -m alembic -c /app/timekeeping_persistence/alembic.ini upgrade head

If the api service is not running, use docker compose run --rm api ... instead of docker compose exec api ....

Note: the API service runs migrations to head on startup, so restarting the api container after a downgrade will automatically apply outstanding migrations again.

Contributing

Use the scoped commit format for commits.

License

Except for where otherwise noted, this project is licensed under GPL-v3+. The current license terms shall not automatically apply to derived works that interact with the supplied source modules or compiled outputs through their user facing interfaces.

This relates specifically to the definition of "covered work" as defined in GPL v3.0 or similar concept.