SKIP_TO_CONTENT
L.PAPAPETROU

DECISION_LOG

RECORDS: 06

Every non-obvious call I've made on a real project, written up the way I'd write it for a team.

CONTEXT //
the constraint I was under
OPTIONS //
what I considered and rejected
DECISION //
what I actually did
TRADEOFF //
what it cost
OUTCOME //
what happened next
REVISIT //
what I'd change
  1. ADR-0012025-02-08TWEETPRENUER

    LLM calls belong behind a backend, not in the browser

    All LLM and third-party API traffic moves behind an Express backend. The client only ever talks to my API.

    FULL_RECORD
  2. ADR-0022025-02-21TWEETPRENUER

    Cache AI generations: staleness is a feature, not a bug

    Persist every generated result in MongoDB keyed by username. Repeat requests return the stored card instead of erroring or regenerating.

    FULL_RECORD
  3. ADR-0032025-12-22

    AI scaffolds are for discovering the product, not shipping it

    Prototype the full product surface in an AI scaffold (Lovable), treat it as a disposable spec, and hand-write the production app natively.

    FULL_RECORD
  4. ADR-0042025-09-25PARKIT

    In a hackathon, fake the familiar, build the differentiator

    Hardcode the current user, mock the payment settlement, and spend the time making the differentiating flows real: live map, booking, QR check-in/out, WebSocket payment events, push notifications.

    FULL_RECORD
  5. ADR-0052026-05-21FORMFORGE

    One declarative API beats fifteen flexible components

    Consumers describe the form as data (fields, types, validation) and the library owns rendering, layout, and state. Individual components stay internal.

    FULL_RECORD
  6. ADR-0062026-08-20TRIPPIO

    A dead network and a dead session look identical: don't treat them the same

    Catch the fetch failure itself (a NetworkError) before it reaches the same code path as a 401. A network failure sets an isOffline flag and renders read-only from the cached identity and the IndexedDB-persisted query cache; an actual rejection clears the session and bounces to /login.

    FULL_RECORD