← Back to projects

Project 01

JourneyJot

A full-stack tourism marketplace for discovering experiences, planning trips, managing bookings, and selling travel products.

What it is

JourneyJot is a multi-role travel platform serving tourists, sellers, tour guides, advertisers, administrators, and tourism governors through role-specific product and operational workflows.

Why I built it

Travel planning involves disconnected activities, itineraries, attractions, transport, products, payments, and service providers. JourneyJot brings those workflows into one marketplace with role-based management tools.

What I implemented

  • Built reusable and role-specific React screens, authenticated session state, shared hooks, and an Axios-based service layer.
  • Implemented an Express API organized into routes, controllers, services, middleware, and Mongoose models.
  • Added JWT authentication, role and ownership authorization, registration review, CORS allowlisting, security headers, throttling, and centralized errors.
  • Integrated Stripe payments, Duffel flight search, Geoapify hotel discovery, file uploads, email notifications, and scheduled birthday promotions.
  • Covered booking, provider, login, rate-limit, transaction, security, upload, and demo-seed flows with Node tests.

How it works

  1. 01

    Authenticate by role

    Users register or sign in, receive a JWT-backed session, and enter interfaces tailored to tourists, sellers, guides, advertisers, admins, or governors.

  2. 02

    Discover and manage

    Tourists browse travel inventory while providers create and manage activities, itineraries, transport, attractions, and products through role-specific screens.

  3. 03

    Book and pay

    The API coordinates bookings and wallet or Stripe payment flows, while external providers supply flight and hotel discovery data.

  4. 04

    Operate the marketplace

    Administrative workflows cover account review, complaints, categories, tags, flagged content, promotions, notifications, and reporting.

Important features

  • Six role-specific experiences
  • Activities, itineraries, attractions, flights, hotels, and products
  • Bookings, wallet, wishlist, reviews, and complaints
  • Stripe payments
  • Flight and hotel provider integrations
  • JWT authorization and account review
  • Revenue views and operational reporting
  • Email notifications and scheduled promotions

Technical challenges

A broad permissions model

Frontend role guards improve navigation while backend role and ownership checks enforce access across many distinct marketplace actors.

Coordinating external services

Payment, flight, hotel, email, and upload integrations are isolated behind backend routes and services with configuration validation and error handling.

Keeping a large API maintainable

The backend separates HTTP handlers, business logic, middleware, schemas, and application errors instead of concentrating the system in route files.