Modules
Training
A library of tasks with rewards, penalties, deadlines and photo verification. Assign one or roll random; complete with proof; overdue training fails on its own.
On this page
๐ Training is the work. A task library you curate, assignments with deadlines, rewards that take time off the clock, penalties that add it, and โ for tasks that require it โ a verification photo that lands in your gallery.
The library
Every task has:
| Field | Meaning |
|---|---|
| Title, description | what to do |
| Tags | free words; a verification photo inherits them |
| Reward (minutes) | taken off the clock when verified (only if a lock is active) |
| Penalty (minutes) | added to the clock when failed (only if a lock is active) |
| XP | earned on completion |
| Requires verification | completion needs a photo โ no photo, no completion |
| Default deadline (hours) | how long an assignment has; falls back to tasks.default_due_hours (24) |
| Enabled | disabled tasks stay in the library but cannot be assigned |
The library editor is on Settings โ ๐ Training. The seeded five:
| Task | Reward | Penalty | XP | Photo | Due |
|---|---|---|---|---|---|
| Verification photo โ show the lock | 10 min | 30 min | 10 | yes | 12 h |
| Journal check-in โ three honest sentences | 15 min | 15 min | 10 | 24 h | |
| 20 minutes of movement | 30 min | 30 min | 15 | 24 h | |
| Drink a full glass of water | 5 min | 0 | 5 | 6 h | |
| Tidy one surface | 20 min | 15 min | 10 | 24 h |
Assigning
On the Training page: pick a task and an optional deadline in hours, or choose random โ a random enabled task that is not already open. The wheel's Random task segment does the same. An assignment records its source (you, the wheel, the API).
Open assignments show on the Training page and on the dashboard card, ordered by deadline, with overdue lit on the button once one has passed its time.
Completing
Tap Complete. If the task requires verification, choose a photo โ the form will not accept completion without one. Add a note, or a when if you finished earlier. Then:
The photo can be one you already took
The verification field opens your normal picker, so a shot taken minutes ago with the phone's own Camera app is fine โ it does not have to be taken inside Latch. Once you pick one you get a thumbnail of it, with โป replace if it was the wrong shot. Pair it with did it earlier? set the time to log a task you finished before you got to your phone.
- the assignment is marked verified,
- the reward is removed from the clock of the lock that was active at that time,
- the task's XP is earned,
- the photo (if any) is stored with the task's title and tags and shows in the gallery.
A completion backdated into a lock that has since ended applies its reward to nothing โ that clock is history โ but the completion, the photo and the XP still count.
Failing
Tap Fail with a reason. The penalty goes on the active clock; the assignment is closed as failed. And every 30 seconds the scheduler sweeps: any open assignment past its deadline is failed by the system with reason overdue, stamped at the deadline โ not at the moment the sweep happened to run. If the app was down when the deadline passed, the event is marked logged later, which is the truth.
Closed is closed
A verified or failed assignment cannot be reopened and cannot be undone from the dashboard (it carries side effects: reward or penalty, photo, XP). If it was a mistake, assign the task again. The record of the first attempt stays.
History
The Training page lists resolved assignments; the Progress page has a per-task board of done versus failed; the Log shows each assigned / done / failed event with its clock effect.
API
GET /api/v1/tasks (open + library), POST /api/v1/tasks/assign (task_id or random),
POST /api/v1/tasks/{id}/complete (multipart, optional photo, note, at),
POST /api/v1/tasks/{id}/fail. See API.
This page also ships inside the app, at /guide โ so your own instance always serves the guide for the version you are running, with the internet unplugged. Get Latch ยท Something wrong here? Tell me.