Skip to content

About

TravelGenie is a full-stack mobile travel planning application built with React Native, Node.js, Express.js, and MongoDB. It helps users plan trips, manage expenses, explore places and hotels, track transport details, add reviews, and receive travel-related notifications through a secure REST API backend.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

79 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

✈️ TravelGenie

Comprehensive Travel Planning Platform for Sri Lanka

MongoDB Express React Native Expo License

TravelGenie helps users plan multi-day trips across Sri Lanka — select a district, explore places on an interactive map, choose accommodation, plan a budget, and track expenses in one seamless workflow.

🔥 Multi-Role Support: Switch between 🌍 Guest Mode (browse destinations without an account), 🎒 User Mode (full trip planning), and 👑 Admin Mode (advanced dashboard and moderation rights).

📖 Backend Docs · 📱 Mobile Docs · 🚀 Deployment Guide


👥 Team Members & Responsibilities

# Registration Feature
01 IT24100853 Transportation & Transit Management
02 IT24100858 Destination Management
03 IT23361690 Trip Itinerary Management
04 IT24100533 Hotel and Accommodation Management
05 IT24101021 Expenses Management
06 IT24101927 Feedback and Review System Management

✨ Features

01 · Transportation & Transit Management (IT24100853)
  • Public Schedule Discovery: District-aware board for browsing express buses, intercity trains, domestic flights, and ferries.
  • Intelligent Search Engine: Multi-dimensional filtering by route, mode of transport, and provider.
  • Popularity-Driven Insights: Real-time ranking of transit routes based on weighted demand scores.
  • Admin Fleet Management: Specialized dashboard for schedule CRUD and operational metadata management.
02 · Destination Management (IT24100858)
  • Interactive Maps: Full CRUD for destinations with GeoJSON-based location management.
  • Content Filtering: Personalized suggestions driven by user interests (Nature, Culture, Adventure).
  • Attraction Ranking: Context-aware ranking based on similarity scores and categories.
03 · Trip Itinerary Management (IT23361690)
  • Linear 6-Step Planner: Orchestrating a smooth, focused flow: District → Places → Preferences → Hotels → Budget → Finalize.
  • Intelligent Budget & Duration Sync: Dynamic recalculation of trip span based on hotel checkout dates, with manual "Return Date" editing that automatically updates budget averages.
  • Multi-Hotel Itineraries: Support for selecting multiple hotels per trip, featuring individual night-stay badges and photo previews in the final summary.
  • Persistent Planning Drafts: Automated state saving to local storage ensures you never lose progress if you close the app mid-plan.
  • Comprehensive Admin Trip Management: Dedicated View and Edit screens matching the platform's design system with budget presets and date-linking.
  • Rich Visual Itineraries: Multi-hotel and multi-place support with high-fidelity previews, including individual night-stay tracking and thumbnails.
  • Draft Persistence: Session-resilient planning with automatic draft saving and state recovery across app restarts.
04 · Hotel and Accommodation Management (IT24100533)
  • Premium Interface: Map-to-list synchronization with live pins and auto-scrolling cards.
  • Advanced Filtering: Ranked by budget, preferences, ratings, and proximity.
  • Multi-Currency Support: Dynamic pricing in LKR, USD, and EUR.
05 · Expenses Management (IT24101021)
  • Financial Intelligence: Real-time spending health tracking and visual budget-vs-actual analytics.
  • Market Price Database: Benchmarks for Hotels, Transport, and Activities across districts.
  • Trend Forecasting: Price predictions based on historical market data.
06 · Feedback and Review System Management (IT24101927)
  • Unified Review Engine: Real-time synchronization of ratings across Places and Hotels.
  • Moderation Workflow: Secure "Report-to-Hide" strategy with admin governance.
  • Social Interaction: Helpful voting, recommendation badges, and context categorization.

🏗️ System Architecture

┌──────────────────────────────────────────────────┐
│                 React Native App                 │
│              Expo · React Navigation             │
│                    Port 8081                     │
└─────────────────────┬────────────────────────────┘
                      │  REST API  ·  JWT Auth
┌─────────────────────▼────────────────────────────┐
│                Express Backend                   │
│       Node.js · Mongoose ODM · Multer            │
│                   Port 5000                      │
└─────────────────────┬────────────────────────────┘
                      │
┌─────────────────────▼────────────────────────────┐
│               MongoDB Database                   │
│          travelgenie  ·  collections             │
└──────────────────────────────────────────────────┘

🗺️ Trip Planning Workflow

graph TD
    A[<b>1. Authenticate</b><br/>Register or Login] --> B[<b>2. Select District</b><br/>Explore the 25 regions]
    B --> C[<b>3. Explore Places</b><br/>Pick attractions]
    C --> D[<b>4. Set Preferences</b><br/>Dates & Comfort]
    D --> E[<b>5. Pick Hotel</b><br/>Find the perfect stay]
    E --> F[<b>6. Set Budget</b><br/>Review estimates]
    F --> G[<b>7. Confirm & Save</b><br/>Cloud storage]
    G --> H[<b>8. Discover Transport</b><br/>Add transit schedules]
    H --> I[<b>9. Track Expenses</b><br/>Live analytics]

    style A fill:#f9f,stroke:#333,stroke-width:2px
    style I fill:#00ff00,stroke:#333,stroke-width:2px
    style G fill:#4a90e2,stroke:#fff,color:#fff
Loading

🗄️ Database

Data models managed by Mongoose:

Category Collections
👤 Users users
🗺️ Geography districts, places
🚌 Transport transports, transportschedules
🏨 Hotels hotels
🧳 Trips & Budget trips, expenses
⭐ Reviews reviews
🔔 Notifications notifications

📁 Repository Structure

Travelgenie/
├── docs/                   # Architecture, API, deployment, and testing notes
├── Backend/                # Express API & MongoDB Logic
│   └── src/
│       ├── config/         # Database & Env config
│       ├── middleware/     # Auth, Uploads, Errors
│       ├── modules/        # Module-specific logic (Hotels, Trips, etc.)
│       ├── routes/         # Central route register
│       ├── utils/          # Standardized responses & helpers
│       └── server.js       # Entry point
└── mobile/                 # React Native / Expo Mobile App
    └── src/
        ├── components/     # Atomic UI elements
        ├── constants/      # Theme & API config
        ├── context/        # Global state (Auth, Planner)
        ├── navigation/     # App routing logic
        ├── screens/        # Main page components
        └── utils/          # Formatters & Helpers

🚀 Quick Start

1 — Backend

cd Backend
npm install

Create a .env file in Backend/:

NODE_ENV=development
PORT=5000
MONGO_URI=mongodb://localhost:27017/travelgenie
JWT_SECRET=your_jwt_secret
JWT_EXPIRES_IN=7d
CORS_ORIGINS=*

Run the server:

npm run dev   # → http://localhost:5000

Seed the database (Recommended for first run):

npm run db:seed-all        # Consolidated seed: Districts, Places, Hotels, Tags
npm run db:seed-transports # Seeds 10,000+ transport schedules
npm run db:seed-admin      # Creates the initial admin account
npm run db:seed-expenses   # Seeds market price records and trends

2 — Mobile App

cd mobile
npm install

Create a .env file in mobile/:

EXPO_PUBLIC_API_BASE_URL=http://<YOUR_LAN_IP>:5000/api/v1

Note: For Android Emulator, the default fallback is http://10.0.2.2:5000/api/v1.

Start Metro:

npm start

🛠️ Tech Stack

Layer Technology
Runtime Node.js + Express.js
ODM / DB Mongoose + MongoDB Atlas
Auth JWT (JSON Web Tokens) + bcryptjs
Frontend React Native (Expo SDK 54)
Maps React Native Maps (GeoJSON)
Icons Lucide React Native / Expo Vector Icons

🔌 Port Reference

Service URL
Backend API http://localhost:5000
Mobile Metro http://localhost:8081

Built with ❤️ for Sri Lanka 🇱🇰

About

TravelGenie is a full-stack mobile travel planning application built with React Native, Node.js, Express.js, and MongoDB. It helps users plan trips, manage expenses, explore places and hotels, track transport details, add reviews, and receive travel-related notifications through a secure REST API backend.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages