The universal engine

How Collections, Properties, and Entries combine to log anything.


Most tracking apps lock you into one shape — a workout app for workouts, a meal app for meals, a habit app for habits. Kaizendex has one shape that fits all of them. It's called the universal engine, and once you understand the three pieces you understand the whole app.

The three pieces

Collection

A Collection is the shape of one kind of thing you track. You define it once and reuse it forever.

Examples:

  • Push-ups — a workout move with a rep count
  • Sleep — a nightly reading with hours and quality
  • Coffee — a daily tally
  • Diary entry — a free-form note with a title
  • Book read — a finished book with pages and rating

Property

A Property is one piece of data a Collection tracks. Push-ups has a reps Property. Sleep has hours and quality. A book read has title, pages, and rating. Each Property has a kind — number, text, true/false, date, single-select, file, Stopwatch (live counter), Timer (Stopwatch with a target), and several more. See Properties and the Title for the full list.

Entry

An Entry is one logged instance of a Collection. "I did 12 push-ups at 9:01 this morning" is one entry on the Push-ups collection. "I slept 7.5 hours last night with a quality of 4/5" is one entry on the Sleep collection.

You create entries in your log. Every entry belongs to exactly one Collection and carries one value for each of that Collection's Properties — that's how a Push-ups entry knows it was 12 reps and a Sleep entry knows it was 7.5 hours.

How it fits together

Collection:  Push-ups
             Properties: reps (number), set (number)
                ↓
Entry:       12 push-ups, set 1, at 9:01am Tuesday
             23 push-ups, set 2, at 9:03am Tuesday
             18 push-ups, set 3, at 9:05am Tuesday

One Collection → many Entries over time. That's the whole pattern. Whether you're logging a workout, a meal, a mood reading, or how many pages you read tonight, it's the same shape underneath.

What you don't have to think about

Because the model is universal, you get the same behaviour everywhere — for free:

  • Optimistic updates. Entries appear in your feed the instant you log them.
  • Server-side aggregates. Sum, count, and average update automatically as you log. The Dashboard reads from those, not by re-scanning every entry.
  • Idempotency. Retries don't double-write.
  • Edit and delete. Entries are editable until a retention window passes, then they lock.

Next