A poster prints the cover's art window large, one display title with its second ink, the facts as numerals and a footer with the mark and the edition, with registration targets in the margins. A one-pager is a reading sheet: the title, then the story in two thirds and the art and facts in one third, ending on the literal action "Get a quote at makrlabs.dev/contact". Both are React server components laid out in millimetres; the PDF is Chromium's print of the page, tagged and with its fonts embedded.
When to use#
- A poster for a launch, a case study on a wall, a print run.
- A one-pager to send after a call or to leave on a table: one case study or one service.
Gallery#
Live sheets, scaled down. Each links to its print route; add &bleed=3 to a poster for 3 mm of bleed with crop marks outside the trim.
Poster, A3, Fernlight (a printed photo)
MAKR LabsNo. 7 · 2026 WebsitesFernlightBakery
Pre-orders by noon, sold out by ten: a bakery site that takes the morning rush online.
- Lighthouse
- 98
- First paint on 4G
- 0.7 s
- Weeks to launch
- 6
Poster, Tabloid, Pebblepath (the project plate)
MAKR LabsNo. 12 · 2026 SoftwarePebblepathscheduling for crews
Every crew sees the same board, so nobody drives to a job that moved.
- Jobs booked in May
- 312
- Double bookings
- 0
- Morning stand-up
- 5 min
One-pager, A4, Fernlight case study
MAKR LabsCase study · No. 7 WebsitesFernlightBakery
A bakery site that takes orders by noon
Fernlight bakes for three neighbourhoods and sold out by ten most mornings. Sam Okafor wanted fewer calls and more orders placed the night before. The new site takes pre-orders until noon, shows what is left today and loads in under a second on a phone.
The brief
Fewer phone orders, a menu that changes every day and a site the team can edit from the counter without calling anyone.
What we built
A hand-coded site with a daily menu, pre-orders by noon and a quote form for catering that lands in the shared inbox. Every page loads in under a second on a phone.
What changed
Phone orders dropped by half in the first month, Saturday pre-orders now sell out the night before and the counter edits the menu itself.
One-pager, Letter, Pebblepath service
MAKR LabsService · No. 12 SoftwarePebblepath forfield crews
Scheduling software for teams that work outside
Pebblepath puts every job, crew and van on one board that updates as the day changes. Dispatchers move a job once and every phone in the crew sees it. Mei Tanaka runs eleven crews on it from a laptop and a phone.
Who it is for
Landscaping, cleaning and repair teams with two to twenty crews, a dispatcher and a day that never goes to plan.
What it does
One shared board, crew check-ins from the job, morning texts with the day's route and a weekly report of hours per job.
How it starts
A two-week trial with your own jobs imported, then a monthly plan per crew. Status: in development.
Inputs#
| Field | Type | Required | Default | Limits |
|---|---|---|---|---|
kind | "case" | "service" | Yes | None | None |
sheet | "a4" | "letter" | Yes | None | None |
title | string | Yes | None | ≥ 1 chars, ≤ 60 chars |
kicker | string | No | None | ≤ 90 chars |
line | "k" | "r" | "a" | "m" | "wood" | Yes | None | None |
summary | string | Yes | None | ≥ 1 chars; at most 90 words |
sections | object[] | Yes | None | ≤ 3 items; head at most 6 words, body at most 60 words |
facts | object[] | No | None | ≤ 4 items |
cover | object | No | None | None |
edition | integer | No | None | ≥ 1, ≤ 999 |
look | object | No | None | None |
<PosterSheet> takes sheet (a3 or tabloid), a cover, a title of at most 60 characters fitted on two lines, an optional kicker, facts, edition, look and bleed.
How makrlabs.dev calls it#
next build && next start
overprint-gen pdf --base http://localhost:3000 --config overprint.print.json --out public/printoverprint.print.json lists [{ "route": "/print/poster/fernlight", "sheet": "a3", "out": "fernlight-a3.pdf" }]. The route renders the sheet, writes the sheet's @page, and sets html[data-mk-print-ready="true"] once fonts and images have decoded; the CLI waits for it, prints with backgrounds, tags the PDF and checks the 8 MB budget.
For a document that is not a site route, htmlToPdf(html, { sheet, assets, out }) serves it from a private address on your Mac and prints it through the same core.
The print check#
The first PDF run proved the pipeline (40 §1.6): Anybody at width 76 and 122 from the variable files embeds (as Type 3 outlines with the instance in their names, text still selectable), multiply overprints stay multiply, and a 72 dpi raster of the PDF matches a print-media screenshot except for antialiasing along edges. The static font instances embed as TrueType when a printer needs real font programs.
Rules#
- Body copy is Schibsted (D-D7); one display moment per sheet.
- Status and action words stay literal (D-I2).
- Backgrounds print exactly (
print-color-adjust: exact); no PDF over 8 MB.