# Architecture

Three services: `api`, `worker` and `notifier`.

The `notifier` service consumes the `item.created` topic and delivers webhooks.
It scales independently of the api and holds its own delivery-retry state.

> The `Item` model was renamed to `Record` (module `src/items` -> `src/records`).
> The topic name `item.created` is an external contract with consumers outside
> this repo, so it was deliberately left unrenamed. Renaming it is a separate,
> coordinated change.

Billing reads record counts through the reporting view - see
[the reporting guide](reporting/guide.md).

## Modules

- `src/records` - record storage and retrieval
- `src/billing` - invoicing
