01
What it is
The business model is simple: we buy traffic wholesale from a large network and resell it to clients through a convenient cabinet with our own markup. The difficulty is not the markup arithmetic — it is that the layer between client and network must never lose money: every budget reserved, every spend reconciled, every campaign owned.
The client sees an ordinary ad cabinet: create a campaign, set targeting, top up balance, watch statistics.
That the traffic is bought elsewhere is not their concern. The administrator sees a second layer: true cost, per-client markup, operation queues and a full log of what the system did with other people’s money.
02
capabilities
What it does
01
Advertiser cabinet
Campaign creation and launch, budgets, statistics, balance top-up. Dark and light themes, two interface languages.
02
Fine-grained targeting
The network’s full parameter set surfaced through a comprehensible interface — no raw API work required.
03
Controlled markup
Margin is configured in the admin, globally and per client. The client sees their price; we see ours.
04
Queues for long operations
Launch, pause and statistics sync run asynchronously with retries rather than inside an HTTP request.
05
Full operation logging
Every action against someone else’s budget is recorded with a severity level. Disputes are settled from the log, not from memory.
06
Monitoring from day one
Metrics, logs and dashboards come up with the service, not “later, when there is time”.
03
architecture
How it works
01
Signup and balance
02
Campaign creation
03
Launch via network API
04
Statistics ingestion
05
Markup and reporting
Under the hood
- A Next.js cabinet with JWT and refresh-token rotation; the admin console as a separate perimeter.
- A FastAPI backend with Swagger documentation; queues for asynchronous work.
- PostgreSQL and Redis in containers; log shipping into the Grafana stack.
- Integration with two versions of the ad network API simultaneously.
- Internationalisation and theming are baked into the frontend architecture from day one.
- An isolated container stack on a shared host — its own names, networks and volumes.
04
scale
Numbers
2
network API versions
2
interface languages
100%
budget operations logged
3
perimeters: client, admin, workers