Project Report ShivamPathak
Project Report ShivamPathak
On
Travel Story
Submitted in
Partial fulfilment of the
Requirement for the degree of
BACHELOR OF TECHNOLOGY
In
COMPUTER SCIENCE & ENGINEERING
(Session 2022-2026)
Submitted by:
Shivam Pathak (2224563)
Shivam Yadav (2224566)
Shivank Tiwari (2224568)
of this project. The experience and knowledge we gained during its development have
significantly boosted our confidence in working with a variety of technologies that we were
We are profoundly grateful for the guidance, support, and mentorship provided by Ms.
Their assistance at every step of the way and their constant motivation were instrumental in
We would also like to express our gratitude to all the supporting personnel who provided the
essential and vital equipment necessary for the project. Without their contributions, We would
Additionally, we want to acknowledge the unwavering support from my peers and friends.
Their encouragement and positive reinforcement were crucial in fueling our efforts throughout
this journey.
Shivam Pathak
Shivam Yadav
Shivank Tiwari
2
Abstract
Travel Story is a full-stack MERN (MongoDB, Express.js, React.js, Node.js) web application
designed to help users document and share their travel experiences in a structured, visually
appealing, and interactive way. The platform serves as a personal travel journal, allowing users
to create detailed entries about their journeys, complete with titles, descriptions, locations, and
images.
One of the core strengths of Travel Story lies in its clean, intuitive user interface built using
React.js and Tailwind CSS. Users can easily navigate through the application, browse existing
travel stories, and view individual posts in detail. On the backend, Express.js and Node.js
handle data processing and routing, while MongoDB serves as the database to store user
Purpose:
The primary purpose of Travel Story is to provide users with a dedicated platform to
document, share, and relive their travel experiences in an organized and visually engaging way.
In today’s fast-paced digital world, travelers often seek a space where memories can be
preserved meaningfully — not just through photos, but through stories, locations, and personal
reflections.
Travel Story serves as a digital travel journal that allows users to create detailed entries about
their trips, including destination names, travel dates, personal notes, and image uploads. It
enables users to curate a timeline of their journeys, helping them revisit and reflect on their
3
Beyond personal journaling, the platform also fosters inspiration and community. By exploring
stories shared by other users, travelers can discover new destinations, hidden gems, and
Methods:
The Travel Story project follows a full-stack development approach, leveraging the MERN
The frontend of the application is developed using HTML, CSS, JavaScript, and React.js,
creating a dynamic and interactive user interface. The use of React.js enables efficient
On the backend, Node.js and Express.js are used to build a robust server-side infrastructure
that handles API routing, data processing, and communication with the database. The backend
is designed to be scalable and efficient, supporting all necessary operations such as content
The application uses MongoDB as the NoSQL database, where user profiles, travel stories,
images, and metadata are stored. Its flexible schema and document-oriented design make it
ideal for handling the diverse and dynamic nature of user-generated content in the application.
Authentication and session management are securely handled using JWT (JSON Web
Tokens). This ensures that users can register, log in, and manage their personal stories with full
To further enhance user experience, a chatbot is integrated using either machine learning
models or rule-based logic. The chatbot serves as a virtual assistant, helping users navigate
4
the platform, answer common questions, and guide them through functionalities like story
This methodical full-stack approach ensures that Travel Story remains responsive, secure, and
Outcomes:
The final product, Travel Story, is a fully functional, responsive, and user-friendly web
application that allows users to document and relive their travel experiences in a structured and
engaging way. Users can create personal travel stories by adding details such as destination
The platform supports secure user authentication and provides complete CRUD (Create,
Read, Update, Delete) functionality, allowing users to manage their content efficiently. Each
user has a personalized space to maintain and organize their travel journals, making the
Built using the MERN stack, the application ensures smooth performance and seamless
operation across different devices and screen sizes. It also includes features like search and
filter options, enabling users to easily browse through their own stories or explore content
shared by others.
Overall, Travel Story successfully achieves its goal of offering a digital platform for travel
lovers to preserve memories, share experiences, and inspire others, while showcasing a strong
5
Table of Contents
1. Introduction ………………………………………………………8 - 11
3. System Design……………………………………………………...15 - 20
6
5. Implementation ……………………………………………………32 - 45
6. Testing ……………………………………………………………...46 - 50
7
1.Introduction
1.1 Problem Statement:
In the current digital landscape, individuals with a passion for travel often lack a reliable and
purpose-built platform where they can systematically document, preserve, and revisit their
journeys. While social media platforms allow users to share moments, they are not designed
platforms, on the other hand, often require technical skills and lack simplicity for everyday
users.
This results in scattered memories—photos stored in phones, experiences forgotten over time,
and valuable insights left unshared. Additionally, people who seek travel inspiration or want to
learn from real experiences often find it difficult to access genuine, detailed travel stories. There
exists a clear gap in the market for a dedicated digital travel journaling solution that balances
simplicity with functionality, allowing users to not only write and organize their travel
experiences but also revisit and share them with a community of like-minded explorers.
1.2 Objectives:
To design and develop a robust full-stack web application that serves as a digital journal
exclusively for travel stories, enabling users to document their trips in detail and store them
securely.
To create an intuitive and responsive user interface that supports story writing, location
8
To implement secure user authentication and authorization systems using modern
technologies such as JWT, ensuring that each user’s data and stories are protected and
personalized.
To build CRUD (Create, Read, Update, Delete) functionality that empowers users to have
complete control over their content—enabling edits, deletions, and updates as needed.
To provide search and filter capabilities, allowing users to easily browse through their
own stories or explore inspiring experiences shared by others based on keywords, dates, or
destinations.
1.3 Scope:
travel journaling web application titled Travel Story, using the MERN stack. The
• A modern frontend interface built with React.js, offering a seamless and user-friendly
• A backend system using Node.js and Express.js, responsible for handling all server-
• A MongoDB database to efficiently store structured data such as user accounts, travel
• A secure user authentication system using JWT tokens, ensuring protected access to
9
• Full CRUD operations, allowing users to create new travel entries, read and browse
• Search and filter mechanisms, empowering users to quickly locate stories based on
• This scope ensures the development of a reliable, user-focused platform that transforms
1.4 Significance:
Travel Story stands out as a unique solution in the space of personal digital documentation,
tailored specifically to travelers who wish to preserve and relive their experiences in a
meaningful way. By offering a platform that is both aesthetically pleasing and functionally rich,
the application encourages users to go beyond quick photo uploads and instead engage in
thoughtful storytelling.
This platform significantly improves the user’s ability to organize memories, reflect on their
journeys, and share detailed narratives with friends, family, or the larger travel community. It
also acts as a source of inspiration for other travelers who are seeking firsthand experiences
From a technical standpoint, Travel Story demonstrates the practical application of full-stack
showcases the potential of combining user-centered design with robust backend infrastructure
10
In essence, Travel Story contributes to the broader goal of digital preservation and community
storytelling, making it a valuable project not only for personal growth and expression but also
11
2.System Analysis
2.1 Proposed System:
The proposed system, titled Travel Story, is a full-stack web application developed with the
purpose of offering users a personalized and efficient platform to digitally document their travel
experiences. Unlike traditional blogs or social media platforms that are either too technical or
too brief for storytelling, Travel Story provides a tailored space for creating, organizing, and
This application aims to replace the scattered and informal ways of preserving travel
with a centralized digital solution that is both intuitive and feature-rich. Users can securely
register, log in, and maintain their own travel journals by adding details such as trip title,
destination, travel dates, story content, and images. Each story is saved in a database and can
The proposed system emphasizes clean design, responsiveness, and a user-first approach.
Whether on a mobile phone or a desktop computer, users can expect a seamless experience
with easy navigation and optimized layout. The entire application is built using the MERN
stack (MongoDB, Express.js, React.js, Node.js), ensuring modern architecture and efficient
development practices.
• User Authentication & Authorization: Secure login and registration using JWT
tokens, ensuring that each user has protected access to their personal content.
12
• Story Management (CRUD): Users can Create, Read, Update, and Delete their
travel stories. Each story supports details like trip title, destination, date, description,
• Responsive Design: Fully optimized for mobile and desktop devices using modern
• Search and Filter Capability: Users can search stories by title, keyword, or destination
• Media Integration: Users can upload travel images to visually enhance their stories,
• Scalable Backend Services: Backend APIs are designed using Node.js and Express.js
• User Dashboard: A clean dashboard interface where users can manage their stories,
This system offers travelers a rich, personal, and visually pleasing space for storytelling, while
1. Technical Feasibility:
The Travel Story application is developed using reliable, stable, and widely adopted open-
source technologies. The frontend is built with React.js, ensuring a responsive and dynamic
user interface with efficient component reusability. The backend uses Node.js and Express.js
for fast, event-driven server operations. MongoDB serves as the NoSQL database, storing user
13
Hosting is easily manageable using services like Render, Vercel, or Heroku, making the system
lightweight in terms of infrastructure needs while still supporting future scalability. All
components are modular and decoupled, ensuring that future upgrades or feature additions (like
2. Operational Feasibility:
The application is designed with a user-centric approach, making it highly intuitive and easy
to use for individuals with minimal technical expertise. Users can effortlessly navigate through
the dashboard, add or manage stories, and upload images without confusion. The layout is
clean, minimal, and distraction-free, ensuring the storytelling experience remains central.
From an operational standpoint, administrators can maintain and update the system with
minimal effort, and the user interface can be adapted in future based on user feedback. The
CRUD structure and database schema are built to accommodate long-term usage without
performance degradation.
3. Economic Feasibility:
The use of open-source technologies significantly reduces development and deployment costs.
There are no licensing fees, and all tools (React.js, Node.js, MongoDB, Express.js) are
Additionally, the modular architecture ensures minimal maintenance and support costs over
time. If monetization is planned in the future (e.g., premium accounts or ads), the platform can
easily be extended to support such features. Overall, the project remains economically viable
14
3. System Design
3.1 Architecture Diagram:
following layers:
• Developed using React.js, the frontend is responsible for managing user interactions.
• Users can register, log in, and perform CRUD operations on travel stories.
• Forms are provided for entering travel details including title, destination, date,
15
• The UI is responsive, ensuring smooth usability on desktops, tablets, and mobile
devices.
• Built with Node.js and Express.js, this layer handles application logic and serves as
• It manages API endpoints for user authentication, story operations, data validation, and
secure routing.
• Middleware components process HTTP requests and enforce session and role-based
access control.
• Utilizes MongoDB to store structured user data and travel stories in collections.
• Each story document includes destination, travel date, narrative content, and references
This architecture allows modular development, simplifies debugging, and offers scalability for
future enhancements such as public sharing, comments, or cloud storage for images
16
3.2 Data Flow Diagram (DFD)
At the highest level, the Travel Story application is represented as a single process that
External Entities:
• User (Traveler): The primary system user who creates and manages travel stories.
17
• Manages registration, login, and token generation using JWT.
• Supports data input for destination, date, story text, and photo upload.
• Retrieves stories from the database and renders them in the frontend.
Data Stores:
• D1: User Database – Stores user login data, profile info, and authentication tokens.
• D2: Story Database – Stores all travel stories, including text, dates, and image paths.
1. Authentication Module
18
• Ensures secure session handling and protects user-specific data.
o Create new stories by providing trip title, description, location, and image.
• Uses Express.js routes and MongoDB schemas to manage data flow between client
and server.
• Ensures uploaded media are linked to the correct story for later retrieval.
19
• Responsive layout makes it accessible across all screen sizes.
• Helps users organize and retrieve entries from large sets of stored stories.
This modular design ensures that each part of the application can be developed, tested, and
20
4. Code of Project
4.1 Main Entry Point
21
22
4.2 Module and Class Overview
23
4.3 Important Functions
24
25
4.4 Configuration File Access
26
4.5 Error Handling Mechanism (Travel Story)
uncaught errors that occur during the execution of routes or controller logic.
Inside each controller function (such as those handling user registration, login,
o Error message
27
• Prevents application crashes and ensures the frontend receives meaningful
This method ensures consistency in API responses and helps developers quickly
usage.
scripts and commands (npm scripts, MongoDB shell commands, etc.) are cross-
28
platform or easily adaptable for Windows terminals such as Command Prompt,
Travel Story follows a clean, modular, and reusable code architecture, which
not only simplifies current development but also ensures future scalability and
maintainability.
Backend:
29
• Controllers and middleware are reusable across routes and can be
extended easily to support new features like role-based access or new APIs.
Frontend:
components like:
• Hooks and utilities are centralized for data fetching and form validation,
Future Scalability:
• The modular design allows easy addition of new features such as:
o Admin Panel
o Commenting Functionality
o Email Notifications
30
• Support for additional roles like admin users, travel editors, or public
31
5: Implementation
4.2 Tools and Technologies Used (Travel Story)
lifecycle:
• JavaScript:
32
o Core scripting language for both frontend logic and API calls to
backend endpoints.
• React.js:
updates.
• Tailwind CSS:
modern UI quickly.
creation.
• Node.js:
33
o Runs the Express.js server and handles all incoming HTTP requests
• Express.js:
Database Technology:
• MongoDB:
associated metadata.
34
o Supports document-based storage, which aligns well with the
user IDs.
o Tokens are issued upon successful login and are used for route
endpoints.
• bcrypt.js:
Development Tools:
o The primary code editor used for developing both the frontend and
35
o Supports various extensions for auto-formatting, linting, Git
• Postman:
CRUD operations.
• Git:
• GitHub:
source code.
collaboration.
Deployment Platforms:
• Vercel:
36
o The frontend of the Travel Story application (React.js) is deployed
Render or Heroku.
Configuration Management:
• dotenv:
37
4.2 Screenshots of the software
38
39
4.3 Description of Important Functions/Modules (Travel Story)
1. Authentication Module
The Authentication module manages user login, registration, and secure access
to private routes.
New users can register by providing credentials and essential details such
40
Registered users can log in using valid credentials.
JWT-Based Authentication:
Upon successful login, a JSON Web Token (JWT) is generated and sent to
the client.
The token is stored securely (e.g., in local storage) and attached to all protected
requests.
Role-Based Access:
Although all users are general contributors in this application, internal checks
validate the user identity to ensure that only the owner can edit or delete their
travel stories.
Password Security:
User passwords are hashed using bcrypt.js before being stored in MongoDB,
This is the core module of the Travel Story app where users create, view,
Create Story:
Users can submit travel stories with details such as title, description, location,
41
View All Stories:
The homepage or story feed displays all available stories with pagination or
Update/Delete:
Authenticated users can edit or delete only the stories they created.
These operations are protected through middleware that validates JWT and user
ownership.
This module manages uploading and displaying images associated with travel
stories.
Image Upload:
42
Images are stored either in a cloud service (like Cloudinary) or locally
Story Display:
Uploaded images are dynamically displayed with each story card in both grid
Implements file size restrictions and error handling for failed uploads.
The dashboard provides a centralized view for users to manage their content
User-Specific Dashboard:
Once logged in, users are redirected to a dashboard where they can:
Personalization:
43
Displays personal statistics and quick actions (e.g., “Post a Story”).
UI Design:
Axios/Fetch Integration:
backend.
Token Middleware:
routes.
Error Handling:
44
Modular File Structure (Supportive of All Modules):
/routes – Contains route definitions for user auth, stories, and uploads.
/controllers – Logic for each API call resides here, separated by module.
layout).
This well-defined modular approach not only helps in organizing the code but
also ensures the project remains scalable, maintainable, and secure, making
travel experiences.
45
6:Testing
6.1 Test Cases – Travel Story Web Application
The following test cases were designed to validate the core functionalities
of the Travel Story application. Each test aims to confirm that the system
I. User Registration
message.
• Expected Output:
stored.
displayed.
46
III. Add Travel Story
global feed.
• Validation Test: If fields are empty or invalid (e.g., image not supported),
• Expected Output: The system returns a filtered list of stories matching the
search term.
• Edge Case: If no match found → Display “No stories found for this
keyword.”
• Expected Output: Full story detail page opens with title, description, date,
• Expected Output: Required field validation error shown beside the field.
47
• Frontend & Backend Validation: Both layers enforce rules.
message.
updates immediately.
• Action: Click “Edit” on user’s own post, modify details, and submit.
• Validation: Ensures required fields are not left blank while editing.
• Action: A user tries to edit or delete another user's story using direct URL
manipulation.
48
4.3 Expected vs Actual Results
• Fix: Added required attribute and conditional check before form submission on
• Fix: Added MIME type filter and size restriction during upload (only .jpg, .jpeg, .png
under 2MB).
• Fix: Added conditional rendering to display “No stories posted yet” message.
49
• Issue: Story could be deleted by changing the story ID in the API call.
• Fix: Middleware now verifies if the logged-in user is the creator before allowing
delete.
50
7. Conclusion and Future
Scope
7.1 What Has Been Achieved
document their memories, and inspire others with real-life stories and
visuals.
APIs.
functionality using JWT for session handling and bcrypt for password
hashing.
• CRUD for Stories: Users can Create, Read, Update, and Delete their
51
• Story Feed: Designed a responsive and elegant story feed where users
can browse all public stories with search and filter options.
functional across various devices and screen sizes, using Tailwind CSS.
7.2 Limitations
capabilities:
52
• Image Handling: Image uploads are limited to basic file types and sizes;
stories.
While these limitations do not affect the core storytelling experience, they
53
o Develop native or cross-platform mobile apps using React Native
user engagement.
content.
3. Media Enhancements:
galleries.
4. Community Features:
5. Admin Panel:
54
7. Itinerary & Map Integration:
o Allow users to add travel itineraries and display location data using
featured destinations.
platform built with the intent to grow, adapt, and evolve into a social
space for travelers to preserve and relive their memories. With the
55
References
➢ https://react.dev/
➢ https://nodejs.org/docs/latest/api/
➢ https://cloud.google.com/dialogflow/docs
➢ https://www.postgresql.org/docs/
➢ https://jwt.io/
➢ https://tailwindcss.com/docs/installation/using-vite
➢ https://developer.mozilla.org/en-US/
➢ https://expressjs.com/
56
Appendix
❖ Link to GitHub & Website
https://github.com/shivam9063/trave_story
Installation Steps
3. Install dependencies:
57