Workshop log

What we’ve built, by date.

Each entry is code in Typetin, run on our own deployments with test keys. None of it is open to foundries: it is built and in testing until the first foundry outside our team sells with it.

  1. Licences anyone can check

    Every licence certificate links to a page in the foundry’s shop that confirms the licence is genuine, and each order now records where the buyer accepted the agreement. Each licence has a kind that decides what it delivers.

    How it works: Licensing, EULAs, Licence verification

  2. Tax, currency and receipts set by the foundry

    Stripe Tax is a switch each foundry turns on for its own account. The selling currency is chosen when the foundry is named, receipts carry the seller’s and buyer’s tax details, and a foundry can place a free test order.

    How it works: Royalties, Font shop

  3. Sign up with an account first

    Signup asks only for an account, with Google or an emailed link. The foundry is named after signing in, so nothing is created for an address nobody confirmed.

    How it works: Font shop

  4. Family bundles and a file inspector

    A bundle generator makes full-family and per-subfamily bundles, and variable fonts are sold inside them. Font tools reads any font file and traces a fingerprinted one to its order.

    How it works: Fingerprinting

  5. Languages and search settings for typefaces

    Languages, width and slant are read from the font files. Typeface pages get their own search settings and structured data, and the API returns the new fields.

    How it works: API, Font shop

  6. Domains, sending addresses and currencies

    Custom domains with DNS checks and certificates, order email sent from the foundry’s own domain, and explicit prices in each currency a foundry sells in. Royalties stay in the order’s currency.

    How it works: Royalties, Font shop

  7. A private deployment

    The shop, admin and API were deployed on Vercel with a real Postgres database, behind a login only our team has.

  8. Terms, quotes, EULA versions and royalty statements

    Term licences with renewal reminders at 30 and 7 days, quotes frozen and hashed when they’re issued, the agreement version recorded on every order line, and royalty statements per designer, period and currency.

    How it works: Licensing, EULAs, Royalties

  9. A public API and hosted webfonts

    A versioned API with scoped keys, an OpenAPI description and order webhooks, and per-licence webfont kits that answer only on the licensed domains and count pageviews.

    How it works: Hosted webfonts, API

  10. Pages built from type blocks

    A drag-and-drop page builder whose blocks are made for type: testers with variable axes, family grids, glyph sets, specimens and pricing tables, previewed in the foundry’s own theme and fonts.

    How it works: Font shop

  11. Export, with checksums

    A single ZIP of the catalogue, font masters, customers, orders, licences, royalty records and fingerprints, with every file listed beside its checksum. It’s built to work on every plan and after cancelling.

  12. From cart to fingerprinted download

    An end-to-end test takes a cart through checkout on a stand-in for Stripe, the signed webhook, a fingerprinted ZIP, the receipt and the download, then refunds the order and checks the download is refused.

    How it works: Fingerprinting, Font shop

  13. A merchant-of-record option

    Polar as merchant of record, for foundries that would rather not file sales tax.

  14. A font pipeline on HarfBuzz

    WOFF2 webfonts, subsets, trial fonts and per-order fingerprints from one WebAssembly engine, about 1.7 MB where the old toolchain was 15 MB.

    How it works: Fingerprinting, Trial fonts

  15. Every foundry’s records kept apart

    Orders and licences are kept in Postgres with row-level security per foundry. If a query for one foundry ever reached for another’s records, the database would refuse it.

The roadmap has every feature and where it stands.