← Back to Projects

Adventures

Welcome to Adventures, a premium interactive travel companion designed for planning multi-leg travel adventures. Built with a sleek dark glassmorphic UI, real-time map visualization, smart multi-currency budgeting, and role-based sharing, Adventures keeps your journeys organized and interactive—both online and offline.

JavaScript (ES6+) Node.js Express.js PostgreSQL Leaflet JS PWA Offline Caching
Status ✅ Live
Type PWA / Web App
Mapping Leaflet (Interactive)
Hosted on Railway

✨ Key Features

🗺️

Interactive Journey Map

Real-time visual routing mapping base cities (hotel pins) and excursion day-trips (hiker pins). Features custom flight Bezier curves and tracks active user location via GPS.

📅

Dynamic Itinerary Builder

Timeline scheduling with shiftable dates. Features SortableJS drag-and-drop activities, advanced lodging management, AI-powered itinerary seeding, and JSON file/text importing.

👥

Role-Based Collaboration

Invite collaborators with specific access controls. Owner role handles visibility and deletes, Editors manage itinerary logs, and Viewers have elegant read-only pages.

💰

Smart Cost & Budget Tracker

Log trip-level or day-specific expenses across multiple currencies with automated conversions. Maps costs at coordinate markers and displays budget breakdowns by category.

📸

Captured Memories & Journaling

Drop memory markers and time-stamped journal logs at exact coordinates on the map with smooth camera panning. Private memories are filtered out from public viewers.

📴

PWA & Offline Map Caching

Fully offline-ready Progressive Web App with custom service worker caching. Map tiles are intercepted and cached locally in IndexedDB to keep journey maps active in dead zones.

🛡️ Security & Privacy

🔑

Crypto-Secure Sessions

Protects user profiles with cryptographically generated 32-byte session tokens backed by a strict 30-day database persistence policy.

🛡️

Collaborator Role Middleware

Applies custom access validation checking roles (owner, editor, viewer), returning discrete 404 responses to mask private trip visibility.

🔒

Enforced Payload Filters

Filters out sensitive details like text journals and coordinate-linked memories on the server, avoiding any client-side data leakage.

👤

Anonymous Nicknames

Generates clean, anonymous default names and profiles to protect raw email identifiers by default.

🤖 Data Portability & AI

📤

Complete Data Ownership

Allows exporting entire trip profiles—including coordinates, currencies, lodging records, and journals—into clean, structured JSON files.

📥

AI-Powered Plan Importing

Paste structured JSON generated by AI models (like Gemini, Claude, or ChatGPT) directly into our raw importer to visualize itineraries instantly.

AI-Generated Trip Seeds

Prompts users upon creating a new adventure to optionally seed their map and itinerary timeline with initial AI-generated data.

🛠️ Technical Implementation

⚛ 

Frontend Architecture

Built with Vanilla HTML5 and ES6+ JavaScript. Designed with custom dark glassmorphic CSS variables, micro-animations, and fluid Leaflet.js interactive maps.

🖥️

Backend & Middleware

Lightweight Node.js and Express REST API. Utilizes crypto-secure session management and role validation middleware restricting itinerary routes dynamically.

🔒

Data Security & Privacy

Validates user access with custom role-based middleware (owner/editor/viewer), rendering 404 for unauthorized hits, and filters out sensitive payloads at the API layer.

🗄️

Database & Migrations

Neon serverless PostgreSQL database client. Updates are applied incrementally using non-destructive SQL migrations to ensure 100% user data safety.

← Back to Projects