A modern, high-performance tour guide web application for Pune, featuring interactive maps, dynamic itinerary planning, OpenStreetMap auto-discovery, weather-adaptive routing, and gamification.
- 📱 Immediate Dashboard Access: Direct entry to the main dashboard without mandatory authentication barriers.
- ⚡ Route Sequence Optimization (OSRM Trip API): Solves the Traveling Salesperson Problem (TSP) on the fly for active itinerary stops, ordering them by the shortest physical distance.
- ⛶ Interactive Map UI/UX: Full-screen Leaflet integration with customizable pin badges (
①,②,③), category filtering, and turn-by-turn routing polylines. - 📋 Turn-by-Turn Routing & Directions: Step-by-step navigation instructions from OSRM displayed directly inside the app, localized in 15+ languages.
- 🏆 Persistent Gamification & Punekar Levels: Tracks XP (
+50 XPper stop,+10 XPper saved spot) and ranks users with titles such as Navin Punekar, Shiledar, and Puneri Legend. - 🌲 OpenStreetMap (OSRM & Overpass) Sourcing: Queries live tourist destinations (Heritage, Nature, Temple, Food, Wellness) with strict negative filtering against non-tourist locations.
- 📱 Progressive Web App (PWA) Support: Service worker caching, offline capability, standalone mobile app layout, and brand icons.
- 🌐 Multilingual Localization: Full translation support for English, Marathi (मराठी), Hindi, Gujarati, Tamil, Telugu, and 9+ regional languages.
Follow these steps to run Pune Explorer locally on your development machine.
Ensure you have the following installed on your system:
- Node.js (v18.0 or higher) & npm
- PostgreSQL database (v14+ recommended, with PostGIS extension for spatial queries)
- Redis server (optional, used for Overpass API rate-limit caching)
- Git
git clone https://github.com/LEVELING2108/PuneTourGuide.git
cd "Pune Tour Guide"Create a .env file inside the backend/ directory:
# Database connection string (PostgreSQL with PostGIS)
DATABASE_URL="postgresql://postgres:your_password@localhost:5432/pune_tour_guide?schema=public"
# Server Port
PORT=3001
# Secret key for JWT signing
JWT_SECRET="pune_explorer_super_secret_key"
# Redis connection URL (optional for caching)
REDIS_URL="redis://127.0.0.1:6379"Create a .env file in the root project directory:
# API URL pointing to the local Node/Express server
VITE_API_BASE_URL=http://localhost:3001/apiNavigate to the backend directory, install dependencies, run Prisma migrations, and seed initial data:
# Navigate to backend
cd backend
# Install node dependencies
npm install
# Generate Prisma Client & Run Database Migrations
npx prisma generate
npx prisma migrate dev --name init
# Seed database with initial tourist places, events, and default itineraries
npx ts-node src/seed.ts
# Start backend server in development mode (with nodemon)
npm run devThe backend server will run on http://localhost:3001.
Open a new terminal window in the project root directory and start the Vite dev server:
# From project root directory
npm install
# Start Vite dev server
npm run devThe frontend application will open on http://localhost:5173.
You can also run all-in-one scripts from the root directory:
| Command | Description |
|---|---|
npm run dev |
Starts Vite frontend dev server |
npm run build |
Builds production frontend bundle (dist/) |
npm run build:backend |
Compiles backend TypeScript to JavaScript (backend/dist/) |
npm run build:all |
Installs, generates Prisma client, and builds both backend & frontend |
npm run prisma:generate |
Generates Prisma client inside backend/ |
npm run prisma:deploy |
Deploys Prisma migrations to database |
| Component | URL / Address | Description |
|---|---|---|
| Frontend Web App | http://localhost:5173 |
React 18 + Vite local UI |
| Backend Express API | http://localhost:3001/api |
REST API Endpoints |
| PostgreSQL Database | localhost:5432 |
Main database (pune_tour_guide) |
| Redis Cache | localhost:6379 |
Key-value store (prefix places:v5:) |
- Map & Geocoding Data: OpenStreetMap via Overpass API & OSRM.
- Project License: Open-source under ISC License.