Quickstart¶
Get TimeKeeper running in about five minutes with no services to install.
1. Run the server¶
You need only a Rust toolchain (see rust-toolchain.toml). From the repository root:
The first start compiles the server, then:
- starts an embedded Postgres under
./.pgdata(you don't need to install or configure a database — ifDATABASE_URLis unset it's created and migrated for you), - serves the web app on http://localhost:8080,
- exposes the GraphQL API on http://localhost:4000.
What the two ports are for
Port 8080 serves the Flutter web client and the API on the same origin,
so a browser loaded from there needs no configuration. Port 4000 is the
API-only endpoint used by desktop apps, phones and reverse proxies. More in
the server reference.
2. Log in¶
Open http://localhost:8080 in a browser. A fresh install has one account:
- Username:
admin - Password:
admin
Change the admin password now
The default password is admin only until the first admin account is
configured. Change it immediately under Setup → Sessions → Admin
Password. You can also set a strong password at boot with
--admin-password / TK_ADMIN_PASSWORD.
3. Make it yours¶
- Create a few Locations (e.g. Workshop, Mentors' office).
- Add Team Members under Team — manually, by CSV, or from a Discord role (see Admin Quickstart).
- Create a Session or upload a schedule (CSV/ICS).
- Optional: enable the kiosk (
Setup → Sessions → Quick PIN Sign-Inor an RFID reader), wire up the Discord bot, and upload a logo under Setup → Branding.
Every screen updates live — sign a member in on one device and the rest follow.
Next steps¶
- Installation — a production-style single-binary or Docker setup.
- Running the server — every flag, port and environment variable.
- Admin Quickstart — the first-day checklist for a real team.