/s/abc into a redirect, and finish with a multi-tenant link platform that has
durable execution, storage, analytics, a live click stream, bulk imports, and a browser worker on
the same bus.
Each chapter adds one capability by adding a worker to your existing system. The point is not the
link shortener itself, but the pattern: a real system on iii is a set of small workers that invoke
each other’s functions through the engine. You add capability without rewriting what came before.
New to iii? Start with Getting started to install the engine and meet functions,
triggers, and workers before you begin.
Ch. 1: Foundations
Build a customlink worker with link::create and link::resolve, store links in memory, then
expose them over HTTP with iii-http as POST /links and GET /s/:code.
Ch. 2: Observe everything
Addiii-observability for logs and traces, and open the console to inspect functions, triggers,
and live invocations.
Ch. 3: Persist everything
Add adatabase worker (SQLite) so links and click events are stored durably and survive restarts,
with iii-state kept in front as a fast read cache.
Ch. 4: Make it durable
Push click events ontoiii-queue so redirects stay fast, and publish link.created events with
iii-pubsub that a cache and an analytics function each subscribe to.
Ch. 5: Stream live clicks
Push every click to subscribers in real time from a dedicatedclick-streamer worker with
iii-stream.
Ch. 6: Move bulk data with channels
Bulk-load links from a CSV in a single streamed upload over a channel.Ch. 7: Bring in the browser
Turn a browser tab into a worker with the browser SDK: invokelink::create directly, subscribe to
the click stream, and register a browser-side function the server can call.