Back to projects
Jul 29, 2026
3 min read
In progress

Ermis

A self-hostable, collaborative trip planning app where a group of friends can organize transport, itinerary, expenses, and decisions on one canvas, synchronized in real time.

Ermis

Ermis is a self-hostable, collaborative trip planning app. Instead of splitting a group trip across chats, spreadsheets, Drive folders, loose documents, and forwarded emails, it puts transport, itinerary, expenses, and decisions on one canvas that the whole group can see and edit at once, synced live.

The problem

Planning a group trip ends up scattered across a dozen tools, and nobody ever has the full picture. Ermis brings all of that information into one place the whole group can see and edit at the same time.

What it does

  • Collaborative itinerary. The whole group edits the same map-based trip canvas and sees changes update live.
  • Group chat and polls. A crew chat with mentions keeps the conversation next to the plan, and polls turn “where should we eat” into an actual decision instead of forty unread messages.
  • Shared expenses. Flexible splits between crew members, with an option to auto-settle balances instead of tallying them by hand.
  • AI assistance. A dedicated assistant generates itinerary suggestions, parses bookings out of forwarded confirmation emails, and proactively flags things worth deciding on.
  • Trip overview. The essentials at a glance — countdown, weather, budget, and group balance — instead of digging through a thread to find them.
  • Crews and invites. Trips are shared with a crew by invite link, code, or QR, with per-trip visibility levels (private, crew-only, or public) for who can see what.
  • Self-hostable. Installable as an app, with offline support, for people who’d rather run their own instance than hand trip data to a third party.

How it’s built

A monorepo with Angular and Tailwind CSS on the frontend, and Spring Boot for the transactional API and its own authentication — JWT access tokens with rotating, hashed refresh tokens, session revocation on token reuse, and Redis-backed rate limiting on auth endpoints. PostgreSQL holds the data, with Redis doubling as the WebSocket/STOMP broker for live collaboration.

A separate Python microservice, built with FastAPI and LangGraph, handles the AI side — itinerary generation, email parsing, proactive suggestions — with pgvector for semantic memory.

Status

Personal project in active development. Source kept private for now.