This is a web application that generates personalized travel itineraries based on user preferences, such as budget, interests, and trip duration. The application offers a user-friendly interface for inputting preferences and deliver detailed, dynamic itineraries tailored to individual users.
This application provides a web interface for creating your prefered itinerary for their desired destination. It has a user friendly form to fill for preferences such as destination, duration, budget and travelers. And using this information we create a personalized itinerary for the user. Leveraged Gemini's API to generate personalized travel itinerary for the user.
- User Authentication.
- User friendly interface.
- Leveraged Gemini's API to generate personalized travel itinerary for the user
- User can view their detailed itinerary.
- User can view their created trip too.
- User receives the entire itinerary in PDF form via mail
-
Backend:
- Typescript: Implemented MVC structure in OOP fashion and ensured type safety of the data using typescript.
- Node.js: Used to setup the environment for backend.
- Express.js: Built scalable backend server.
- Mongo DB: Stored the user info and itinerary details using mongo database.
- Redis: Used redis for rate limiting of creating trips.
- Puppeteer: Used to convert the generated Itinerary to PDF format.
- Nodemailer: Used to mail the itinerary in PDF form to the user's email.
- Docker: Leveraged docker to containerize the application.
- Continuous Integration(CI): Impleneted Continuous Integration pipeline for lint check and healthy build for pull request at main branch.
-
Frontend:
- Typescript: Ensured type safety of the data using typescript and enhances development efficiency, code quality, and maintainability.
- Next.js: Built the entire client side and integrating backend apis using Next.js.
- Tailwind CSS: Used tailwind css for responsive interface for across all devices.
- Shadcn UI: Leveraged Shadcn UI library for building user friendly UI components.
- Docker: Leveraged docker to containerize the application.
- Continuous Integration(CI): Impleneted Continuous Integration pipeline for lint check and healthy build for pull request at main branch.
-
Models:
- Gemini AI Model for generating user personalized itinerary.
- Google Maps API for directing to specific destination location.
Here is the deployed website : Deployed Link
Here is the deployed backend server: Backend Link
To install and run this project locally, add the following commands in your terminal, follow these steps:
- Clone the repository from GitHub:
git clone https://github.com/omkargade04/Personalized-Itinerary-Generator.git
- Navigate into the project directory:
cd Personalized-Itinerary-Generator
- Navigate into client:
cd frontend
- Navigate into server:
cd backend
- Ensure that the version of
Node.js
andnpm
you're using is compatible with the dependencies you're installing. Some dependencies may require specific Node.js versions. Run the below command in frontend directory and backend directory.
npm install -g npm@latest
- Install
dependencies
for the frontend in frontend directory (assuming you haveNode.js
andnpm
installed):
npm install
- Install
dependencies
for the backend in backend directory (assuming you haveNode.js
andnpm
installed):
npm install
- Create a .env file in the frontend directory and add backend api endpoint:
NEXT_PUBLIC_BASE_URL
=http://localhost:8000
(for local backend)
NEXT_PUBLIC_BASE_URL
=https://personalized-itinerary-generator.onrender.com
(for deployed backend)
NEXT_PUBLIC_GOOGLE_PLACE_API_KEY
=google-place-api-key
NEXT_PUBLIC_GEMINI_API_KEY
=gemini-api-key
- Create a .env file in the backend directory and connect your database with prisma via database url:
PORT
=8000
MONGO_URL
=mongodb+srv://<username>:<password>@cluster0.dvriq5l.mongodb.net/<db_name>
SECRET_TOKEN
=your-token
REDIS_URL
=https://casual-pig-60980.upstash.io:6379
REDIS_TOKEN
=upstash-redis-token
NODE_ENV
=development
MAIL_USERNAME
=your-email@gmail.com
MAIL_PASSWORD
=your-password
GOOGLE_PLACE_API_KEY
=your-google-place-api-key
-
Start the frontend and backend servers:
backend:
npm run dev
frontend:npm run dev
-
Open
http://localhost:3000
to view the application.
- Docker
To install Docker, run the following commands in your terminal:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
- Navigate into backend directory
- To get started with development first build the dev containers using the following command
docker-compose -f docker-compose.yaml build
- The env file being used for development is called
.env
- Run the containers using the command
docker-compose -f docker-compose.yaml up
- Navigate into frontend directory
- To get started with development first build the dev containers using the following command
docker-compose -f docker-compose.yaml build
- The env file being used for development is called
.env
- Run the containers using the command
docker-compose -f docker-compose.yaml up