terraink README

The project's README from github.com/yousifamanuel/terraink. As one markdown file: README.md.

Terraink

Website Badge Email Badge LinkedIn Badge Instagram YouTube Threads Reddit TikTok Product Hunt

Bun Badge Vite Badge React Badge JavaScript Badge TypeScript Badge OpenStreetMap Badge MapLibre Badge GitHub Badge Cloudflare Badge Docker Badge

Note: Terraink is still in development. Every feedback is appreciated. This is an open-source project, and community contributions are very welcome.

License & Trademark Notice: This project is licensed under AGPL-3.0 and includes trademark protections. See the License and Trademark sections for details.

Features

Data Providers and Mapping Stack

User Interface

Terraink web UI

Showcase

Featured showcase example 1 Featured showcase example 2

License

As of April 3rd 2026, all new changes to this repository are licensed under AGPL-3.0. Code released before that date remains under the MIT License.

The hosted Terraink service includes attribution and branding as part of the user interface.

If you deploy or modify the open-source version, you are responsible for complying with the AGPL-3.0 license, including preserving license and copyright notices.

For access to the hosted version with additional features and support, see Terraink Business or contact: [email protected].

Trademark

Terraink™ is a trademark of Yousuf Amanuel. An application for registration has been filed with the German Patent and Trade Mark Office (DPMA). This filing establishes priority rights under the Paris Convention, allowing international trademark registration to be pursued within six months of the original filing date. The Terraink logo, visual identity, and branding assets are copyright © 2026 Yousuf Amanuel. All rights reserved.

Unauthorized use of the Terraink name in connection with similar software, map services, or related commercial products may be restricted. For licensing inquiries, contact [email protected].

See TRADEMARK.md for details.

Run

bun install
bun run dev

Environment

Check .env.example for available variables. They are optional for most local work and should not be set during testing unless a specific case requires them.

Build

bun run build

Deploy with Docker (Self-Hosting)

1) Build and run with Docker Compose

Create .env from .env.example (or set APP_PORT directly in your shell), then run:

docker compose up -d --build

This serves the app on http://localhost:7200 by default.

To change the exposed host port:

APP_PORT=80 docker compose up -d --build
$env:APP_PORT=80
docker compose up -d --build

2) Stop the deployment

docker compose down

3) Optional: build and run without Compose

docker build -t terraink:latest .
docker run -d --name terraink -p 7200:80 --restart unless-stopped terraink:latest

Contributing

The contribution guidelines are meant to keep Terraink easy to extend, review, and maintain over time. They are here to support a durable architecture, not to add unnecessary friction.

Read CONTRIBUTING.md before opening a PR.

Attribution

Acknowledgment

Terraink was inspired by MapToPoster by Ankur Gupta, originally released under the MIT license. Terraink is an independent reimplementation built from scratch using Bun, React, and TypeScript, and has since evolved significantly beyond the original concept.

Star History

Star History Chart

terraink (yousifamanuel/terraink)

Searching Database…

Что это?Terraink — движок картографических постеров, который генерирует уникальные настраиваемые постеры с картами любого города или точки мира, используя реальные данные OpenStreetMap.
Это десктоп-приложение или веб-приложение, которое я хостю сам?Это self-hosted веб-приложение на Bun, React и TypeScript: вы разворачиваете его, открываете в браузере и оформляете постеры.
Как его запустить?Скопируйте .env.example в .env, затем соберите и запустите через Docker Compose: приложение поднимается на открытом порту по умолчанию (порт меняется через APPPORT).
Что нужно перед развёртыванием?Docker и Docker Compose для self-hosted развёртывания, либо Bun, если хотите собрать и запустить вручную через 'bunx --bun vite'; переменные окружения для локального использования необязательны.
Есть ли нюансы с лицензией при развёртывании у себя?С апреля 2026 весь новый код — под AGPL-3.0 с защитой товарного знака имени Terraink, так что при развёртывании или изменении нужно соблюдать AGPL-3.0, включая сохранение уведомлений о лицензии и авторских правах.
Какие настройки постера он предлагает?Можно выбирать из десятков готовых тем или создавать свои цветовые палитры, управлять тем, какие слои карты (дороги, вода, парки, контуры зданий) показаны и как стилизованы, и задавать подписи города/страны одним из девяти встроенных шрифтов.
В каких форматах можно экспортировать постер?Постеры высокого разрешения экспортируются в PNG, PDF или многослойный SVG в любых заданных размерах, готовые к печати.
На чём работают отрисовка карты и поиск?Данные карты берутся из OpenStreetMap через тайлы OpenMapTiles, размещённые на OpenFreeMap, рендерятся через MapLibre GL JS, а геокодированием занимается Nominatim.
Зачем создали Terraink?Он вдохновлён проектом MapToPoster от Ankur Gupta под лицензией MIT, но является независимой реализацией с нуля на Bun, React и TypeScript, которая с тех пор ушла далеко дальше исходной концепции.
Size
36.8 MB
Stars
4.2K
Age
8mo
Commits · 90 Days