/ How We Build

Every decision has to earn its place.

These are not aspirations. They are the constraints we apply before any feature ships — on battery draw, permissions, and scope. If something can't justify its cost, it doesn't make the build.

01 — Justify or remove
02 — Measure the load
03 — Own the trade-offs

Nothing ships without a reason

Battery, data, storage — all counted

Lighter sometimes means fewer features

Each animation, network call, and background process must justify its resource cost before it ships. If it can't, it's cut — not deferred, not deprioritised.

Environmental footprint is tracked at the product level: wake-lock duration, data transferred per session, storage delta after install. Numbers, not intent.

A smaller scope is often the right call. We say so in the app description and in the build log — not as a caveat, but as the actual design rationale.

Permission philosophy

We request only what the feature actually requires.

Before any permission dialog appears, the request is reviewed against the specific function it enables. If the feature works without it, the permission isn't requested. This is logged in the build notes for every release.

The reasoning is documented, not summarised.

The build log covers specific decisions: what was cut, why a feature scope was narrowed, and what the measured impact looked like. Short posts, no press-kit tone.