← Back to Adventures Project
📄

Adventures — README.md

Comprehensive architecture documentation, feature breakdown, security policies, and technical specifications for the Adventures Travel Planner.

⚡ Adventures — Travel Itinerary Planner

Welcome to Adventures, a premium interactive web application designed for planning multi-leg travels and rail odysseys. Built with a sleek glassmorphic UI, high-contrast maps, and offline capabilities, Adventures allows users to design day-by-day itineraries, track expenses across multiple currencies, share plans with collaborators, and log travel memories.


🌟 Why Choose Adventures? (Our Value Proposition)

Adventures is not just another trip planner—it is a premium, visual journey companion designed for modern travelers, agencies, and group organizers. Here is what makes Adventures the ultimate tool to sell to your clients:

  • 🗺️ Geography-First Visual Planning: Say goodbye to boring, static spreadsheets. Adventures maps out travel routes in real-time, letting users visualize base cities, regional day-trips, flight segments, and locations visually as they plan.
  • 👥 Seamless Group Collaboration: Planning group travel is notoriously chaotic. Adventures simplifies this with role-based sharing. Invite friends, family, or tour clients as Editors to build the itinerary together, or share read-only links for a secure, elegant presentation of the final plan.
  • 📴 100% Offline-Ready Companion: Train journeys cross borders, tunnels, and remote areas where internet connection drops. Adventures is equipped with state-of-the-art Offline Map Tile Caching and PWA capabilities, ensuring maps, tickets, and day-by-day schedules remain fully accessible anywhere on earth.
  • 💰 Smart Multi-Currency Budgeting: Traveling across multiple countries means juggling different currencies. Adventures tracks costs on the fly, auto-converts pricing, and maps where expenses happen, keeping trip budgets accurate and visual.
  • 📸 A Living Travel Journal: Log notes and drop memory pins at exact GPS coordinates directly on the map. It creates a beautiful, interactive digital scrapbook of the journey that users can keep forever.
  • ✨ Premium User Experience: Designed with a state-of-the-art dark glassmorphic interface, micro-animations, and fluid transitions that elevate travel planning from a chore to an elegant, exciting experience.

🛠️ Technology Stack

Frontend

  • Single Page Application (SPA): Vanilla HTML5 and ES6+ JavaScript state management for fluid, instantaneous transitions without page refreshes.
  • Vanilla CSS3 Design Tokens & Tailwind CSS: A comprehensive theme-customizable layout structure using CSS variables supporting adaptive Dark Mode (default) and Light Mode, with design tokens integrated into a custom Tailwind CSS configuration (tailwind.config.js) defining theme colors and radii.
  • Interactive Leaflet Mapping: Integrating Leaflet JS for geography rendering, custom DivIcon HTML wrappers, marker cluster updates, and custom Bezier curve drawings.
  • FontAwesome Integration: Rich icon support for transit types, base cities, day-trip indicators, and budgeting categories.

Backend

  • Node.js & Express: Lightweight REST API architecture routing user sessions and itinerary modifications.
  • Crypto-secure Session Manager: Cryptographically generated 32-byte session tokens with a 30-day lifetime. For enhanced database-compromise resistance, session tokens are hashed using SHA-256 before being stored in or queried against the database.
  • Collaborator Role Middleware: Custom requireTripAccess checking system restricting paths to owner, collaborator, or viewer roles.
  • Privacy-Enforced API Payload Filters: Conditionally returns sensitive details based on user authorization.

Database

  • Neon Postgres: Relational cloud-database client utilizing @neondatabase/serverless.
  • Non-Destructive Database Migrations: Sequential schemas written with incremental non-destructive ALTER TABLE queries.

⚡ Key Features & Functionalities

1. Interactive Journey Map (Leaflet)

  • Base Cities vs. Excursions: Dynamically renders base cities and day trips.
  • Leg-by-Leg Routes: Draws solid route paths between consecutive base cities and dashed route paths to day trips.
  • Bezier Flight Curves: Renders curved dotted lines for flights.
  • Geo-Located Markers: Renders memories (🖼️) and costs (💰) at exact coordinates.
  • Active Marker Highlight & Navigation: Cycles through map popup cards in the exact order of itinerary stops.

2. Dynamic Itinerary Builder

  • Shiftable Dates: Modifying a trip's start date automatically shifts all itinerary days.
  • SortableJS Drag-and-Drop: Reorganize daily activity lists effortlessly.
  • Lodging & Car Rental Management: Multi-day lodging and rental tracking with daily cost calculations.
  • Chronological Daily Timeline: Visual vertical timeline showing timed activities and transit segments.
  • AI-Powered Trip Seeds & Importing: Paste raw JSON or use AI prompts to generate trip structures.

3. Sharing & Collaboration (Role-Based Access Control)

  • Visibility Settings: Owners can toggle trips between private and public visibility.
  • Role Invitations: Grant access to collaborators as Owner, Editor, or Viewer.

4. Smart Cost & Budget Tracker

  • Multi-currency expense logging, category breakdowns, and location mapping.

5. Captured Memories & Daily Notes

  • Separate memory and logistical note markers with strict privacy controls.

6. PWA & Offline Map Caching

  • Service Worker tile caching in IndexedDB for 100% offline map functionality.

7. Third-Party Integrations

  • Tally.so bug logger widget, creator tipping, and PostHog privacy-preserving telemetry.

🎨 Design & Aesthetics (Rugged Minimalist Explorer)

Features a slate/olive green and safety orange dark theme, sharp 0px geometries, clear whitespace layout, and responsive mobile-first adapters.


🛡️ Security & Database Policies

Incremental non-destructive SQL migrations, payload size limits, crypto session token hashing, and strict role middleware prevent unauthorized data access.

← Back to Adventures Project