finds.dev← search

// the find

yousifamanuel/terraink

★ 4,149 · TypeScript · NOASSERTION · updated Sep 2026

Terraink: The Cartographic Poster Engine that creates unique and customizable map posters

Terraink is a Bun, React and TypeScript web app that turns OpenStreetMap data for a chosen place into a styled print poster, with themes, typography, GPX route overlays and PNG, PDF or layered SVG export. It suits people who want a poster of their city or a trail, and developers who want a self-hostable, forkable poster tool built on MapLibre.

The layered SVG export is the most useful part. It gives an editable vector file for a print shop or Illustrator rather than a flat raster, and PNG and PDF sit alongside it. The nine typefaces are bundled and self-hosted with a license file in the repo, so rendering does not depend on a font CDN. The source is split into features with domain, application, infrastructure and ui folders, and geocoding, fonts, HTTP and cache sit behind ports, so replacing a provider should mean writing one adapter. Self-hosting is a real path, with a Dockerfile, compose file, nginx config and an APP_PORT switch.

The license history will trip up anyone adopting it. Code before 3 April 2026 is MIT, later changes are AGPL-3.0, the hosted service carries branding, and the Terraink name is a pending German trademark that the README says may restrict use in similar software. Working out what you can ship means reading three overlapping documents, and the trademark wording is vague. The README names OpenFreeMap tiles and public Nominatim geocoding but says nothing about their rate limits or what a self-hoster should do when they are slow or unavailable. Nominatim's public usage policy caps requests at about one per second, so a deployment with real traffic needs its own geocoder or a paid provider. The README calls the project still in development and documents build and Docker, but gives no test command. The tree I was given is truncated, so I can't confirm whether tests exist, but for an exporter that produces print files at set sizes, regressions are costly and nothing in the README says how they are caught.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →