The universal engine

How Types, Properties, Entries, and Routines 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 four pieces you understand the whole app.

The four pieces

Type

A Type 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 field on a Type. 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 Type. "I did 12 push-ups at 9:01 this morning" is one entry on the Push-ups type. "I slept 7.5 hours last night with a quality of 4/5" is one entry on the Sleep type.

Every entry belongs to exactly one Type and has values for that Type's properties.

Routine

A Routine bundles several Types so you can log them together. "Leg workout" might bundle Squats, Lunges, and Calf raises — one tap logs all three at once. More on this in Routines.

How it fits together

Type:      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 Type → 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