GeoRoadbook is a web app to create your geocaching roadbook ready-to-print from your GPX file (Pocket Query, GSAK, GCTour, …). Upload a GPX (or pick one of your Pocket Queries via the Geocaching.com API), customize the content, edit it in the browser, and export as HTML, ZIP, or a print-grade PDF with a paginated table of contents, page headers/footers, and PDF bookmarks.
Hosted here: http://georoadbook.vaguelibre.net/
- Symfony 8 (no database — roadbooks are plain files, users live in the session)
- Bootstrap 5 + vanilla JavaScript via Symfony Asset Mapper (no build step)
- Jodit in-browser editor
- WeasyPrint sidecar for HTML → PDF conversion (CSS Paged Media)
- Twig rendering of parsed GPX (typed
GpxParser+RoadbookRenderer), jBBCode and cebe/markdown for log parsing - PHP 8.5 with the
tidyextension - OAuth2 (PKCE) against the Geocaching.com API for Pocket Queries
git clone https://github.com/Surfoo/georoadbook.git
cd georoadbook
cp .env .env.local # set GEOCACHING_OAUTH_KEY/SECRET/CALLBACK
docker compose up -d --build
docker compose exec php-fpm composer installThe app runs at http://localhost:8000/. Three services: webserver (nginx), php-fpm, and weasyprint (PDF conversion).
Rector, php-cs-fixer, and PHPStan (level 6) run in CI (.github/workflows/check.yml) and in the versioned pre-commit hook. Activate the hook once per clone:
git config core.hooksPath .githooksComposer shortcuts: composer rector, composer php-cs-fixer, composer phpstan.
Roadbooks are deleted after 30 days without modification. Run the purge from cron:
php bin/console app:roadbook:purge # add --dry-run to preview, --days N to overrideGeoRoadbook is distributed under the Apache License, Version 2.0.
- original author: surfooo at gmail dot com