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).
| # | 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 |
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.
┌──────────────────────────────────────────────────┐
│ 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 │
└──────────────────────────────────────────────────┘
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
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 |
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
cd Backend
npm installCreate 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:5000Seed 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 trendscd mobile
npm installCreate a .env file in mobile/:
EXPO_PUBLIC_API_BASE_URL=http://<YOUR_LAN_IP>:5000/api/v1Note: For Android Emulator, the default fallback is http://10.0.2.2:5000/api/v1.
Start Metro:
npm start| 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 |
| Service | URL |
|---|---|
| Backend API | http://localhost:5000 |
| Mobile Metro | http://localhost:8081 |
Built with ❤️ for Sri Lanka 🇱🇰