Acme App — sample atlas

Two end-to-end feature modules — minting invite codes and consuming them during account registration — produced by `apltk architecture` from a declarative YAML source. The macro diagram surfaces both feature clusters and every sub-module they own, plus the cross-feature data-row that carries an `invite_codes` row between them.

Get invite codes Invite-code registration web-get-invite-ui — React page that lets a signed-in member request a new invite code. web-get-invite-ui UI React page that lets a signed-in member request a new invite code. public-api — HTTP boundary for `/api/invites` POST requests. public-api API HTTP boundary for `/api/invites` POST requests. invite-issuance-service — Domain service that mints and persists a single invite row per request. invite-issuance-service service Domain service that mints and persists a single invite row per request. invite-code-generator — Pure helper that turns random bytes into a printable invite code. invite-code-generator pure function Pure helper that turns random bytes into a printable invite code. postgresql — Owns the `invite_codes` table (producer side of the cross-feature data row). postgresql database Owns the `invite_codes` table (producer side of the cross-feature data row). web-register-ui — React page that captures email, password, and invite code. web-register-ui UI React page that captures email, password, and invite code. public-api — HTTP boundary for `/api/register` POST requests. public-api API HTTP boundary for `/api/register` POST requests. registration-service — Owns the registration transaction (consumer side of the invite_codes data row). registration-service service Owns the registration transaction (consumer side of the invite_codes data row). postgresql — Stores `users` rows and applies invite-code state transitions inside the registration tx. postgresql database Stores `users` rows and applies invite-code state transitions inside the registration tx. INSERT invite_codes read/consume invite_codes POST /api/invites Issue(ctx, userId) encode(rand) INSERT invite_codes rowid POST /api/register RegisterWithInvite(ctx, RegisterInput) SELECT invite_codes FOR UPDATE INSERT users UPDATE invite_codes.consumed_at row | rows_affected
  1. call
  2. return
  3. data-row
  4. failure

Submodule index