A full-stack, immersive tourism platform built for discovering the rich culture, heritage, and flavors of Jaipur.
🌍 Live Demo: http://35.154.74.197.nip.io
A collaborative first-year B.Tech project developed at IIIT Lucknow.
Pink City Explorer is a comprehensive, full-stack web application designed to be the ultimate digital companion for anyone visiting Jaipur. From majestic forts to bustling markets, the platform provides rich insights, dynamic itineraries, and an interactive AI virtual guide to enhance the tourism experience.
The project evolved from a static HTML site into a powerful, data-driven application featuring a modern React frontend and a robust Spring Boot backend.
- Dynamic Bento Grid Layout: Responsive, image-rich "Bento Grid" for the Shopping section showcasing markets.
- Glassmorphism Theme Elements: Modern translucent overlays with frosted glass effects and smooth transitions.
- Scroll-triggered Micro-animations: Hover-lift cards, fade-in elements, and dynamic loading on scroll.
- Interactive Modal Popups: Detailed views for Attractions/Markets displaying embedded ratings, reviews, and timings.
- Vintage Tourist Aesthetics: Custom "Letter to the Traveler" styling with feather quill motifs and warm color palettes.
- JWT-based Authentication: Secure, stateless user sessions handled via JSON Web Tokens.
- Google OAuth2 Integration: Frictionless "Sign in with Google" via
@react-oauth/googleand Spring Security. - Automated Password Reset: Secure token generation and email dispatch for forgotten passwords.
- Role-Based Access Control (RBAC): Protected admin routes for dashboard management versus regular user profiles.
- Tour Package CRUD Management: Comprehensive REST endpoints for admins to create, update, and delete itineraries.
- Gemini-Powered Virtual Guide: Conversational AI chatbot offering real-time, context-aware Jaipur travel tips.
- Live Map Routing: Interactive map directions using Leaflet Routing Machine with an OSRM backend.
- Real-time Map Visualization: Integrated Leaflet maps rendering precise coordinates of 40+ Jaipur attractions.
- Custom Geo-Filtering: Sort and filter tourist sites by categories (Forts, Temples, Museums, Markets).
- User Profile & Avatar Management: Custom profile settings with image cropping functionality via
react-easy-crop. - Live Weather Integration: Real-time weather updates to help users plan their excursions effectively.
- Dynamic Tour Booking Engine: Seamless flow from browsing attractions to booking custom tour packages.
- Framework: React 19 (via Vite)
- Styling: CSS3, Tailwind (custom utilities), Bootstrap
- Mapping: React Leaflet & Leaflet Routing Machine
- Authentication: Google OAuth2 (
@react-oauth/google)
- Framework: Spring Boot 3.2.4 (Java 17)
- Database: MySQL (Spring Data JPA)
- Security: Spring Security & OAuth2 Client
- Email Services: Spring Boot Mail
- AI Integration: Google Gemini API
- Weather & Geolocation APIs
Follow these steps to run both the frontend and backend environments on your local machine.
- Node.js (v18+)
- Java Development Kit (JDK 17)
- MySQL Server installed and running
- Maven (optional, wrapper included)
- Open your MySQL client.
- Create a new database for the project (e.g.,
jaipur_tourism). - Update your
application.propertiesin the Spring Boot backend with your MySQL username and password.
- Navigate to the backend directory: ```bash cd jaipur-react/backend ```
- (Optional) Make the build scripts executable if on Unix/Linux: ```bash chmod +x start_backend.sh ```
- Build and run the Spring Boot application using Maven:
```bash
./mvnw spring-boot:run
```
Alternatively, you can run the
run.ps1script if you are on Windows. - The backend server will start on `http://localhost:8080\`.
- Open a new terminal and navigate to the React project directory: ```bash cd jaipur-react ```
- Install the required Node dependencies: ```bash npm install ```
- Create a
.envfile in thejaipur-reactfolder and add your API keys (Gemini API, Google Client ID, etc.): ```env VITE_GEMINI_API_KEY=your_gemini_api_key VITE_GOOGLE_CLIENT_ID=your_google_oauth_client_id ``` - Start the Vite development server: ```bash npm run dev ```
- Open your browser and navigate to `http://localhost:5173\`.
- Nayan Gupta: @NayanG-45
- Freny: @Freny07
- Prabal Verma: @Prabal2007
- Bikash Kumar Meher: @bikash-m007
Feel free to star ⭐ the repository if you like our project!