Latch

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.

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.