Tempo
A habit tracker — long lists you check off, reorder and clean up in bulk.
Planned
Not built yet. It is the first app queued after the demo, because it stresses the gesture layer harder than anything else.
A list of habits for today, a calendar of what you kept, and a grid of streaks. Small surface, brutal on interactions: the same row must respond to a tap, a long press, a swipe and a drag without any of them firing by accident.
Why this app
One row, four gestures. Tempo is where we find out whether the gesture recognizers compose or fight:
- Tap toggles the habit.
- Long press enters selection mode.
- Swipe reveals skip and delete.
- Press and hold the handle to reorder, while the list still scrolls.
Get one threshold wrong and the app feels broken in a way no catalog screen would ever reveal.
Screens
| Screen | What it holds |
|---|---|
| Today | The habit list, a progress count, a floating button to add one. |
| Reorder | Drag handles, a lifted row, the drop indicator. |
| Streaks | A contribution grid and a weekly bar chart. |
| Habit | Detail, schedule, reminder, archive. |
Built with
- Item, Checkbox, Chip, Badge for the rows.
- useSwipeActions and useDragToReorder.
- Selection mode over a dynamic toolbar.
- Undoable action for delete and skip.
- Pull to refresh and scroll to top on the list.
What it checks
- Gesture arbitration: scrolling always wins until a threshold is passed on purpose.
- Selection mode survives a reorder, a refresh and a rotation.
- Every destructive action is reversible for long enough to notice the mistake.