OpenRadar

Project · TypeScript · Added June 17, 2026

trek

TREK is a self-hosted travel planner built with React 19 and NestJS 11 — real-time collaboration, interactive 3D maps, PWA, SSO, budgets, and packing lists in one open-source app.

5,697 stars 561 forks View on GitHub

TREK

Overview

TREK is a self-hosted, open-source travel planner that hit 5,600 GitHub stars in under three months since its March 2026 launch. That kind of growth for a niche application tells you something — developers have been waiting for a modern, self-hosted alternative to commercial travel planning tools like Wanderlog and TripIt.

The project is built by Maurice Boe (mauriceboe), a developer who’s clearly been thinking about this problem for a while. The architecture is opinionated in the right ways: React 19 on the frontend, NestJS 11 on the backend, Zustand for state management, WebSockets for real-time sync, and a proper auth stack with JWT, OAuth 2.1, OIDC, WebAuthn passkeys, and TOTP MFA. This isn’t a weekend project — the codebase has 491 commits from the lead maintainer and nearly 500 from a second core contributor (jubnl), with version 3.1.0 shipping in mid-June 2026.

The core problem TREK solves is coordination. Planning a trip with friends or family usually means a mess of Google Docs, shared spreadsheets, WhatsApp threads, and screenshot bookmarks. TREK consolidates all of that into a single self-hosted application with real-time collaboration — changes appear instantly across all connected users via WebSocket. You get interactive maps with Leaflet or Mapbox GL, budget tracking with expense splitting, packing lists, a magazine-style travel journal, and even a world map atlas that tracks which countries you’ve visited. The data lives on your server, not in someone else’s cloud.

Why it matters

The self-hosted application space has matured dramatically. Projects like Nextcloud, Gitea, and Immich proved that developers want to own their data, but travel planning has been oddly underserved. Commercial alternatives either lock your trip data behind subscriptions, harvest it for advertising, or shut down without warning. TREK fills that gap with a polished, production-ready application that you can deploy with a single Docker command.

For fullstack web developers, TREK is worth studying as much as it’s worth using. The React 19 + NestJS 11 stack is the exact combination many teams are building with today. The real-time sync implementation, the multi-provider auth system (OIDC, passkeys, TOTP), the PWA setup that works on iOS and Android without an app store — these are patterns you’ll encounter in production applications. Reading TREK’s source is like getting a free masterclass in modern fullstack architecture.

The project also demonstrates how AI tooling is changing open-source development. The contributor list includes “claude” as a contributor with 8 commits, and the project’s recent 3.1.0 release involved a “NestJS + Zod foundation harness” refactor — language that suggests heavy AI-assisted development. This is the new normal for open-source projects, and TREK is a clean example of it.

Key Features

Real-time Collaboration via WebSocket. Changes to trips, places, budgets, and packing lists sync instantly across all connected users. No polling, no manual refresh — just WebSocket-powered live updates. This is the kind of feature that separates a toy project from something people actually use with friends.

Interactive 3D Maps with Multiple Providers. The map layer supports both Leaflet (free, OpenStreetMap tiles) and Mapbox GL (3D buildings, terrain). You get photo markers, clustering for dense areas, route visualization, and category filtering. Place search works with Google Places (photos, ratings, hours) or OpenStreetMap (free, no API key needed). You can even import places from shared Google Maps lists, Naver Maps, and GPX/KML/KMZ/GeoJSON files.

Full Auth Stack with Passkeys. JWT-based authentication with OAuth 2.1 and OIDC support for Google, Apple, Authentik, Keycloak, or any custom provider. WebAuthn passkeys for passwordless login, plus TOTP MFA for two-factor authentication. The SSO-only mode disables password login entirely — useful for teams or families running their own identity provider. This is a production-grade auth implementation, not a demo.

Installable PWA on iOS and Android. TREK runs as a Progressive Web App that installs directly from the browser — no App Store approval, no Google Play listing, no waiting. On iOS, you add it to the home screen; on Android, the browser prompts you to install. The PWA includes offline support and push notifications, so it feels like a native app.

Budget Tracking with Expense Splitting. Track trip expenses by category, split costs between travelers, and see per-person breakdowns. This eliminates the post-trip spreadsheet math that usually happens when someone pays for a group dinner and everyone forgets to Venmo them back.

Journey Journal with Photo Integration. A magazine-style travel journal where you document your trips with entries, photos, maps, and mood tracking. Photo integration supports Immich (the self-hosted photo backup solution) and Synology Photos, keeping everything self-hosted. The liquid-glass UI on the Atlas view is a nice touch — it shows a world map of visited countries, bucket list items, and travel stats.

Auto-backups and Flexible Configuration. Scheduled backups with configurable retention policies. Unit preferences for temperature (°C/°F), time format (12h/24h), map tile sources, and default coordinates. Environment variables control everything from encryption keys to SMTP settings to OIDC configuration.

Use Cases

Pros and Cons

Pros:

Cons:

Getting Started

# Quick start with Docker (recommended)
ENCRYPTION_KEY=$(openssl rand -hex 32)
docker run -d -p 3000:3000 \
  -v ./data:/app/data \
  -v ./uploads:/app/uploads \
  -e ENCRYPTION_KEY=$ENCRYPTION_KEY \
  --restart unless-stopped \
  mauriceboe/trek

# Open http://localhost:3000
# On first boot, TREK seeds an admin account
# Set ADMIN_EMAIL/ADMIN_PASSWORD env vars for custom credentials

# Docker Compose (production)
git clone https://github.com/mauriceboe/TREK.git
cd TREK
docker compose up -d

# Install as PWA
# Desktop: Click the install icon in the address bar
# iOS: Safari → Share → Add to Home Screen
# Android: Menu → Install app

For production, put TREK behind a TLS-terminating reverse proxy. TREK uses WebSockets for real-time sync, so the proxy must support WebSocket upgrades. Caddy handles this automatically:

# Caddyfile
trek.yourdomain.com {
    reverse_proxy localhost:3000
}

Alternatives

Wanderlog — The most popular commercial travel planner with a polished mobile app and collaborative features. Wanderlog is easier to get started with (no self-hosting required) but stores all your data on their servers and requires a premium subscription for offline access and advanced features. Choose Wanderlog if you want zero setup and don’t care about data ownership.

TripIt — Enterprise-focused travel organizer that parses confirmation emails to build itineraries automatically. TripIt excels at business travel with flight tracking and loyalty program integration, but it’s not designed for collaborative trip planning or self-hosting. Choose TripIt if your primary use case is organizing business trips from forwarded emails.

Nextcloud with Maps and Deck — If you’re already running Nextcloud, you can cobble together travel planning with the Maps app (place markers, routes) and Deck (kanban-style task management for packing lists and to-dos). The integration is loose — no real-time sync between trip participants, no budget tracking, no journal — but it keeps everything in one self-hosted platform. Choose this if you want minimal new infrastructure.

Verdict

TREK is the kind of project that makes you wonder why nobody built it sooner. The self-hosted ecosystem has excellent options for photos (Immich), files (Nextcloud), code (Gitea), and notes (Outline), but travel planning has been a glaring gap. TREK fills it with a modern React 19 + NestJS 11 architecture that’s worth studying even if you never plan a trip. The real-time collaboration via WebSocket, the multi-provider auth stack with passkeys, and the PWA deployment that works on mobile without an app store — these are patterns every fullstack developer should understand. At 5,600 stars and growing, with active development from two core contributors shipping version 3.1.0, this is a project with momentum. The Docker one-liner deployment means you can have it running in minutes, and the AGPL license ensures it stays open. If you’re building anything with React and NestJS, spend an afternoon reading TREK’s source code. You’ll learn something.

Related

Shared tags