Mini Project : – CSN301 Software Engineering, Even Sem, 2025-26
Mini Project : – CSN301 Software Engineering, Even Sem, 2025-26
MINI PROJECT REPORT
CSN301 — Software Engineering
EVEN Semester, 2025-2026
Project Title:
NestFinder – Property Rental Management System
Technologies Used: React 18 | [Link] | Express | MySQL | Tailwind CSS
Platform: Visual Studio Code | Windows
Submitted To:
[Dr. Anukaran Khanna]
[Assistant Professor]
Department of Computer Science & Engineering
BTech CSE — 3rd Year
NestFinder – Property Rental Management System | Page
Mini Project : – CSN301 Software Engineering, Even Sem, 2025-26
Mini Project : – CSN301 Software Engineering, Even Sem, 2025-26
Student Name: [DHRUV KUSHWAHA] SAP ID: [1000019695] Section: [Q]S
Student Name: [AVINASH KUMAR] SAP ID: [1000019694] Section: [Q]
Student Name: [ANKIT SINGH] SAP ID: [1000019697] Section: [Q]
Project Chosen: P(12) - NestFinder – Property Rental Management System
Mini Project : – CSN301 Software Engineering, Even Sem, 2025-26
1. Objective
The objective of this project is to design and develop a fully functional full-stack web-based
Property Rental Management System named NestFinder using React 18 on the frontend,
[Link] with Express on the backend, and MySQL as the relational database. The system
aims to digitize and automate the core operations of a property rental business, replacing
manual listing management and booking workflows with an efficient, secure, and user-
friendly web application.
The specific objectives are:
• To allow users to register and log in securely with JWT-based authentication and
bcrypt password hashing, with role-based dashboards for Admin, Owner, and
Tenant.
• To enable property owners to add, edit, and delete property listings with images,
descriptions, amenities, pricing, and availability filters.
• To allow tenants to search, filter, and browse properties, and book them using a
calendar date-picker with conflict validation.
• To implement a Stripe payment gateway for processing rental payments, storing
payment history, and supporting refunds.
• To enable tenants to raise maintenance requests with category, priority, and status
tracking, and allow owners to respond.
• To provide a verified review and rating system tied to completed bookings.
• To implement in-app notifications for bookings, payments, and maintenance events.
• To provide an Admin Dashboard for user management, revenue charts, and system-
wide oversight.
• To implement a wishlist feature allowing tenants to save favourite properties.
NestFinder – Property Rental Management System | Page 3
Mini Project : – CSN301 Software Engineering, Even Sem, 2025-26
2. Software Requirements Specification (SRS)
2.1 Functional Requirements
FR ID Module Description
FR1 User Auth & Users register with name, email, and password. JWT-based login
Registration with bcrypt hashing. Role-based redirect to Tenant, Owner, or
Admin dashboard.
FR2 Property Listings Owners add/edit/delete properties with title, description, location,
price, property type, bedrooms, bathrooms, amenities (JSON),
and images.
FR3 Property Search & Tenants search by city/keyword, filter by price range, property
Filter type, number of bedrooms, and availability. Results display as a
responsive card grid.
FR4 Booking System Tenants book properties by selecting check-in and check-out
dates via a calendar picker. Conflict validation prevents double
bookings. Total amount is auto-calculated.
FR5 Stripe Payments Tenants pay for bookings via Stripe card payment. Payment
intents are created server-side; webhooks update payment status.
Payment history stored per user.
FR6 Maintenance Tenants raise maintenance requests with title, description,
Requests category (plumbing/electrical/HVAC/etc.), priority, and optional
images. Owners update status and add notes.
FR7 Reviews & Ratings Tenants submit ratings (1–5) and comments tied to completed
bookings. Reviews are approved by default and reflected in
property average rating.
FR8 Notifications (In- In-app notification inbox for all roles on booking confirmation,
App) payment completion, and maintenance status updates.
FR9 Owner Dashboard Owners view their listed properties, booking requests
(confirm/reject), rental income, and maintenance requests for their
properties.
FR10 Admin Dashboard Admin manages all users, all properties, views revenue charts,
& Reports and has system-wide oversight of all bookings.
FR11 Wishlist Tenants save/remove favourite properties to a wishlist, persisted
per user account.
2.2 Non-Functional Requirements
Requirement Description
Performance Page load time < 3 seconds; API response < 500ms; supports 100+
concurrent users via [Link] event loop.
Security JWT authentication, bcrypt password hashing, CORS protection, Stripe
webhook signature validation, role-based route guards.
Usability Responsive Tailwind CSS design — works seamlessly on mobile, tablet,
and desktop browsers.
NestFinder – Property Rental Management System | Page 4
Mini Project : – CSN301 Software Engineering, Even Sem, 2025-26
Reliability System uptime 99%; MySQL transactions ensure data consistency for
bookings and payments.
Maintainability Modular Express route/controller separation; React component-based UI;
clear separation of frontend and backend.
Scalability Stateless JWT auth and modular API routes allow horizontal scaling;
MySQL schema supports schema evolution via migrations.
2.3 Use Case Summary
UC ID Use Case Name Actor Description
UC- User Registration Tenant / Owner User registers with name, email,
01 password, and selects a role.
UC- User Login Tenant/Owner/ Authenticate and access role-specific
02 Admin dashboard via JWT.
UC- Browse Properties Tenant Tenant searches and filters property
03 listings.
UC- View Property Detail Tenant Tenant views full property info, photos,
04 amenities, and reviews.
UC- Book Property Tenant Tenant selects dates and books a
05 property.
UC- Pay for Booking Tenant Tenant completes payment via Stripe
06 card.
UC- Cancel Booking Tenant Tenant cancels a pending or confirmed
07 booking.
UC- Raise Maintenance Tenant Tenant reports an issue with a property
08 Request they are renting.
UC- Submit Review Tenant Tenant rates and reviews a property after
09 a completed booking.
UC- Add / Edit Property Owner Owner creates or modifies a property
10 listing.
UC- Manage Booking Owner Owner confirms or rejects incoming
11 Requests booking requests.
UC- Respond to Maintenance Owner Owner updates status and adds notes on
12 maintenance requests.
UC- View Revenue Report Owner Owner views income and booking
13 statistics for their properties.
UC- Manage Users & Admin Admin adds, edits, or deactivates any
14 Properties user or property.
UC- View System Reports Admin Admin views platform-wide revenue
15 charts and statistics.
NestFinder – Property Rental Management System | Page 5
Mini Project : – CSN301 Software Engineering, Even Sem, 2025-26
3. ER Diagram (Entity-Relationship)
The ER diagram for NestFinder represents the relational database schema with nine tables:
users, properties, bookings, payments, maintenance_requests, reviews, notifications,
wishlists, and messages. Key relationships are described below.
3.1 Entities and Attributes
Entity 1: Users
Attribute Data Type Description
id (PK) INT Primary key
AUTO_INCREMEN
T
uuid VARCHAR(36) Unique UUID for external references
name VARCHAR(255) Full name of the user
email VARCHAR(255) Unique email address
password VARCHAR(255) bcrypt hashed password
role ENUM admin / owner / tenant
phone VARCHAR(20) Contact number
avatar VARCHAR(500) Profile picture URL
is_verified BOOLEAN Email verification status
is_active BOOLEAN Account active status
Entity 2: Properties
Attribute Data Type Description
id (PK) INT Primary key
AUTO_INCREMEN
T
owner_id (FK) INT Foreign key to Users
title VARCHAR(255) Property listing title
location / city / state VARCHAR Full address details
price DECIMAL(10,2) Rental price
price_type ENUM per_month / per_day / per_week
property_type ENUM apartment / house / villa / studio / commercial
bedrooms / INT Room counts
bathrooms
area_sqft DECIMAL(10,2) Floor area
amenities JSON List of amenities (WiFi, parking, gym, etc.)
images JSON Array of image URLs
is_available / BOOLEAN Availability and featured flags
NestFinder – Property Rental Management System | Page 6
Mini Project : – CSN301 Software Engineering, Even Sem, 2025-26
is_featured
status ENUM active / inactive / pending
avg_rating / DECIMAL / INT Aggregate review stats
total_reviews
Entity 3: Bookings
Attribute Data Type Description
id (PK) INT Primary key
AUTO_INCREMEN
T
tenant_id (FK) INT Foreign key to Users
property_id (FK) INT Foreign key to Properties
check_in / check_out DATE Booking date range
total_days INT Duration of stay
total_amount DECIMAL(10,2) Calculated booking amount
status ENUM pending / confirmed / cancelled / completed /
rejected
cancellation_reason TEXT Reason if cancelled
Entity 4: Payments
Attribute Data Type Description
id (PK) INT Primary key
AUTO_INCREMEN
T
booking_id (FK) INT Linked booking
tenant_id (FK) INT Paying tenant
amount / currency DECIMAL / Payment amount and currency
VARCHAR
payment_method ENUM stripe / bank_transfer / cash
stripe_payment_intent_id VARCHAR(255) Stripe PaymentIntent ID
status ENUM pending / completed / failed / refunded
receipt_url VARCHAR(500) Link to Stripe receipt
Entity 5: Maintenance Requests
Attribute Data Type Description
id (PK) INT Primary key
AUTO_INCREMEN
T
property_id (FK) INT Affected property
tenant_id (FK) INT Requesting tenant
title / description VARCHAR / TEXT Issue title and details
category ENUM plumbing / electrical / hvac / appliance / structural /
NestFinder – Property Rental Management System | Page 7
Mini Project : – CSN301 Software Engineering, Even Sem, 2025-26
other
priority ENUM low / medium / high / urgent
status ENUM open / in_progress / resolved / closed
owner_notes TEXT Owner response notes
3.2 ER Relationships
• User (owner) HAS MANY Properties — One-to-Many relationship (owner_id FK in
properties)
• User (tenant) MAKES MANY Bookings — One-to-Many relationship (tenant_id FK in
bookings)
• Property HAS MANY Bookings — One-to-Many relationship (property_id FK in
bookings)
• Booking HAS ONE Payment — One-to-One relationship (booking_id FK in
payments)
• Property HAS MANY Maintenance Requests — One-to-Many (property_id FK)
• User HAS MANY Reviews; Property HAS MANY Reviews — Two One-to-Many
relationships
• User HAS MANY Notifications — One-to-Many (user_id FK in notifications)
• Tenant HAS MANY Wishlist entries; each entry references a Property — Many-to-
Many via wishlists table
NestFinder – Property Rental Management System | Page 8
Mini Project : – CSN301 Software Engineering, Even Sem, 2025-26
4. Class Diagram
The class diagram below represents the key modules and their relationships in the
NestFinder system, structured around the MVC pattern of the Express backend and the
component model of the React frontend.
4.1 Class Relationships
From Class To Class Relationship Type Implementation
User (owner) Property One-to-Many owner_id FK in
properties table
User (tenant) Booking One-to-Many tenant_id FK in
bookings table
Property Booking One-to-Many property_id FK in
bookings table
Booking Payment One-to-One booking_id FK in
payments table
Property MaintenanceRequest One-to-Many property_id FK
User (tenant) MaintenanceRequest One-to-Many tenant_id FK
Booking Review One-to-One booking_id FK in
reviews table
User Notification One-to-Many user_id FK in
notifications
User Wishlist One-to-Many user_id FK in wishlists
4.2 Key Methods per Module
Module / Class Key Methods / Routes Purpose
Auth Controller register(), login(), getMe() User registration, JWT issuance,
profile retrieval
Property Controller createProperty(), CRUD for property listings with image
updateProperty(), upload via Multer
deleteProperty(),
searchProperties()
Booking Controller createBooking(), Booking lifecycle with date conflict
confirmBooking(), validation
cancelBooking(), getConflicts()
Payment Controller createPaymentIntent(), Stripe integration for card payments
handleWebhook(), getHistory() and webhooks
Maintenance createRequest(), updateStatus(), Maintenance request lifecycle
Controller addOwnerNotes() management
Review Controller submitReview(), Review submission and property
getPropertyReviews(), rating aggregation
NestFinder – Property Rental Management System | Page 9
Mini Project : – CSN301 Software Engineering, Even Sem, 2025-26
updateAvgRating()
Admin Controller getAllUsers(), Admin user management and system
toggleUserActive(), overview
getDashboardStats()
AuthContext (React) login(), logout(), getUser() Global JWT state via React Context
API
bookingAPI (Axios) getAll(), create(), cancel() Frontend service layer wrapping
backend API calls
NestFinder – Property Rental Management System | Page 10
Mini Project : – CSN301 Software Engineering, Even Sem, 2025-26
5. Sequence Diagram
5.1 Property Booking Flow
Ste Actor / Component Action / Message
p
1 Tenant (Browser) Navigates to Property Detail Page
2 React PropertyDetailPage Fetches property details and reviews from GET
/api/properties/:id
3 Tenant (Browser) Clicks 'Book Now', selects check-in and check-out dates in
BookingCalendar
4 [Link]() POST /api/bookings with { property_id, check_in, check_out }
5 Express bookingRoutes Validates JWT middleware, calls createBooking() controller
6 Booking Controller Queries database for conflicting bookings on same property
and date range
7 MySQL (bookings table) Returns conflict check result; no conflict found
8 Booking Controller Calculates total_days and total_amount; inserts new booking
with status = pending
9 Notification Util Creates notification for both tenant and property owner
10 Express Response Returns { booking_id, total_amount } to frontend
11 PaymentForm (React) Renders Stripe card element with booking total amount
12 [Link] Tenant enters card details; client calls createPaymentIntent
13 Payment Controller POST /api/payments/create-intent; creates Stripe
PaymentIntent server-side
14 Stripe API Returns client_secret to frontend
15 [Link] Confirms payment using client_secret; Stripe processes card
16 Stripe Webhook POST /api/payments/webhook: payment_intent.succeeded
event received
17 Payment Controller Updates payment status = completed; updates booking status
= confirmed
18 Browser Tenant sees confirmation page with booking details
5.2 Maintenance Request Flow
Ste Actor / Component Action / Message
p
1 Tenant (Browser) Navigates to Tenant Maintenance page
2 TenantMaintenance Renders form: title, description, category, priority fields
(React)
3 Tenant (Browser) Fills form and clicks Submit
4 [Link]() POST /api/maintenance with form data
NestFinder – Property Rental Management System | Page 11
Mini Project : – CSN301 Software Engineering, Even Sem, 2025-26
5 Maintenance Controller Validates JWT; inserts maintenance_request with status =
open
6 Notification Util Sends in-app notification to property owner
7 Owner (Browser) Receives notification; opens Owner Dashboard
8 Owner (Browser) Updates status to in_progress; adds owner_notes
9 Maintenance Controller PATCH /api/maintenance/:id; updates record in database
10 Tenant (Browser) Polls maintenance list; sees updated status and owner notes
NestFinder – Property Rental Management System | Page 12
Mini Project : – CSN301 Software Engineering, Even Sem, 2025-26
6. Technology Stack
Layer Technology Purpose
Frontend React 18 + Vite Component-based SPA with hot module
Framework replacement
Frontend Styling Tailwind CSS Utility-first responsive CSS framework
Routing React Router v6 Client-side navigation and protected route
guards
Charts Recharts Revenue and booking statistics charts in
Admin Dashboard
Payments [Link] + React Stripe Card element rendering and payment
(Frontend) confirmation
Backend Language [Link] v18+ Core server runtime
Web Framework Express 4 REST API routing, middleware, and error
handling
Database MySQL 8.0 Relational database for all data
persistence
DB Client mysql2 [Link] MySQL connection pool
Authentication JWT + bcryptjs Stateless token auth and password
hashing
File Upload Multer Property image upload handling
Payments Stripe Node SDK PaymentIntent creation and webhook
(Backend) verification
Email Nodemailer Transactional email notifications (SMTP)
Validation express-validator Request body validation and sanitization
IDE Visual Studio Code Primary development environment
Version Control Git + GitHub Source code management and
collaboration
NestFinder – Property Rental Management System | Page 13
Mini Project : – CSN301 Software Engineering, Even Sem, 2025-26
7. Implementation
7.1 Folder Structure
property-rental/ ├── backend/ │ ├── src/ │ │ ├── config/ # DB
connection, migrations, seed data │ │ ├── controllers/ # Business logic
(auth, property, booking, payment...) │ │ ├── middleware/ # JWT auth,
error handler, Multer file upload │ │ ├── routes/ # Express route
definitions (auth, properties, bookings...) │ │ └── utils/ # Email
helper, notification creator │ ├── uploads/ # Uploaded property
images (auto-created) │ └── [Link] ├── frontend/ │ ├── src/ │ │ ├──
components/ # Reusable UI (Navbar, PropertyCard, BookingCalendar...) │ │
├── context/ # AuthContext (global JWT state) │ │ ├── pages/
# Auth, Tenant, Owner, Admin pages │ │ └── services/ # Axios API service
layer │ └── [Link] └── docs/ └── [Link] # Full REST API
documentation
7.2 Key Backend Code
backend/src/config/[Link] — MySQL Connection Pool
const mysql2 = require('mysql2/promise'); const pool = [Link]({ host:
[Link].DB_HOST, user: [Link].DB_USER, password:
[Link].DB_PASSWORD, database: [Link].DB_NAME, waitForConnections:
true, connectionLimit: 10, queueLimit: 0 });
backend/src/controllers/[Link] — Create Booking (excerpt)
[Link] = async (req, res) => { const { property_id, check_in,
check_out } = [Link]; // Conflict check const [conflicts] = await [Link](
`SELECT id FROM bookings WHERE property_id = ? AND status NOT IN
('cancelled','rejected') AND (check_in < ? AND check_out > ?)`,
[property_id, check_out, check_in] ); if ([Link] > 0) return
[Link](409).json({ error: 'Property not available' }); const total_days = /*
date diff */ 0; const total_amount = [Link] * total_days; await
[Link]( 'INSERT INTO bookings SET ?', [{ uuid, tenant_id, property_id,
check_in, check_out, total_days, total_amount }] );
[Link](201).json({ message: 'Booking created', booking_id }); };
backend/src/controllers/[Link] — Create Payment Intent
[Link] = async (req, res) => { const { booking_id } =
[Link]; const [rows] = await [Link]('SELECT * FROM bookings WHERE id = ?',
[booking_id]); const booking = rows[0]; const paymentIntent = await
[Link]({ amount: [Link](booking.total_amount *
100), // Stripe uses paise/cents currency: 'inr', metadata: { booking_id },
}); [Link]({ clientSecret: paymentIntent.client_secret }); };
7.3 Key Frontend Code
frontend/src/context/[Link] — JWT Auth State
export const AuthProvider = ({ children }) => { const [user, setUser] =
useState(null); const login = async (email, password) => { const res = await
[Link]({ email, password }); [Link]('token',
[Link]); setUser([Link]); }; const logout = () =>
{ [Link]('token'); setUser(null); }; return
<[Link] value={{ user, login, logout
}}>{children}</[Link]>; };
frontend/src/components/booking/[Link] — Date Picker (excerpt)
NestFinder – Property Rental Management System | Page 14
Mini Project : – CSN301 Software Engineering, Even Sem, 2025-26
export default function BookingCalendar({ propertyId, pricePerDay, onBook })
{ const [checkIn, setCheckIn] = useState(''); const [checkOut, setCheckOut] =
useState(''); const totalDays = checkIn && checkOut ? [Link]((new
Date(checkOut) - new Date(checkIn)) / 86400000) : 0; const totalAmount =
totalDays * pricePerDay; const handleBook = () => onBook({ checkIn, checkOut,
totalDays, totalAmount }); return ( <div>... date inputs, totalAmount display,
Book Now button ...</div> ); }
NestFinder – Property Rental Management System | Page 15
Mini Project : – CSN301 Software Engineering, Even Sem, 2025-26
8. Test Cases
8.1 User Registration & Login Module
TC Test Case Input Expected Output Res
ID ult
TC- Valid registration All fields filled correctly Account created, redirected PAS
01 to dashboard S
TC- Duplicate email Existing email address Error: email already taken PAS
02 S
TC- Weak password Password < 6 chars Validation error shown PAS
03 S
TC- Empty required fields Leave name blank Validation error shown PAS
04 S
TC- Valid login Correct credentials JWT returned, redirected to PAS
05 role dashboard S
TC- Wrong password Incorrect password Error: invalid credentials PAS
06 S
TC- Logout Click logout Token cleared, redirect to PAS
07 login S
TC- Role-based redirect Owner logs in Redirected to /owner PAS
08 dashboard S
8.2 Property Listing Module
TC Test Case Input Expected Output Res
ID ult
TC- Add valid property All fields filled, image Property created and listed PAS
09 uploaded S
TC- Missing required field Leave price blank Validation error shown PAS
10 S
TC- Edit property Change title and price Property updated in listing PAS
11 S
TC- Delete property Click delete Property removed from PAS
12 listing S
TC- Search by city Enter city name Filtered properties shown PAS
13 S
TC- Filter by price range Set min/max price Properties within range PAS
14 shown S
TC- Filter by bedrooms Select 2 bedrooms Only 2-bedroom properties PAS
15 shown S
NestFinder – Property Rental Management System | Page 16
Mini Project : – CSN301 Software Engineering, Even Sem, 2025-26
8.3 Booking & Payment Module
TC Test Case Input Expected Output Res
ID ult
TC- Book valid dates Valid check-in / check- Booking created, status = PAS
16 out pending S
TC- Date conflict blocked Overlapping dates for Error: property not available PAS
17 same property S
TC- Stripe payment success Valid test card 4242... Payment confirmed, booking PAS
18 = confirmed S
TC- Stripe payment declined Declined card Error: card declined shown PAS
19 4000...0002 S
TC- Cancel booking Click cancel on pending Status = cancelled PAS
20 booking S
TC- Owner confirm booking Owner clicks Confirm Booking status = confirmed PAS
21 S
TC- Owner reject booking Owner clicks Reject Booking status = rejected PAS
22 S
TC- Payment history Tenant views payments All payments listed with PAS
23 receipt URL S
8.4 Maintenance & Reviews Module
TC Test Case Input Expected Output Res
ID ult
TC- Raise maintenance Title, description, Request created with status PAS
24 request category, priority = open S
TC- Owner updates status Owner sets status = Status updated; tenant PAS
25 in_progress notified S
TC- Mark resolved Owner sets status = Request closed; resolved_at PAS
26 resolved set S
TC- Submit review Rating (1-5) and Review saved; avg_rating PAS
27 comment updated S
TC- Review tied to booking Review without Error: booking required PAS
28 completed booking S
TC- View property reviews Open property detail All approved reviews PAS
29 page displayed S
8.5 Admin Dashboard Module
TC Test Case Input Expected Output Res
ID ult
TC- View all users Admin visits Users page All registered users listed PAS
30 S
NestFinder – Property Rental Management System | Page 17
Mini Project : – CSN301 Software Engineering, Even Sem, 2025-26
TC- Deactivate user Admin toggles is_active User cannot log in PAS
31 S
TC- View all properties Admin visits Properties All properties listed with PAS
32 page owner info S
TC- View revenue stats Admin visits Dashboard Revenue charts and total PAS
33 stats shown S
TC- Non-admin access Tenant visits /admin 403 Forbidden / redirect to PAS
34 denied route home S
NestFinder – Property Rental Management System | Page 18
Mini Project : – CSN301 Software Engineering, Even Sem, 2025-26
9. Maintenance Plan
9.1 Corrective Maintenance
• Bug tracking via GitHub Issues; critical bugs fixed within 24 hours, non-critical within
one week.
• Express error handler middleware logs all uncaught errors with stack traces for rapid
diagnosis.
• Automated integration tests run before every deployment to catch regressions in core
booking, payment, and auth flows.
9.2 Adaptive Maintenance
• Database schema changes managed via versioned migration scripts ([Link]) to
ensure repeatable deployments.
• Stripe SDK and React kept on LTS versions to receive long-term security patches.
• Tailwind CSS configured with a local build (not CDN) to allow safe version pinning.
9.3 Perfective Maintenance
• Planned future enhancements: real-time chat between tenant and owner via
[Link].
• Google Maps integration for property location display.
• PDF rent receipts generated server-side and emailed to tenants on payment
completion.
• Tenant credit scoring and automated booking approval based on rental history.
• Multi-language support (i18n) for regional user bases.
9.4 Preventive Maintenance
Activity Frequency Responsible
MySQL database backup Daily System Administrator
Security patches ([Link] / OS / Monthly Developer
npm deps)
Code review and refactoring Each sprint Development Team
Load testing (simulate 100+ Quarterly QA Team
concurrent users)
npm audit (dependency vulnerability Monthly Developer
scan)
Stripe webhook endpoint health Weekly Developer
check
Log file review and cleanup Weekly System Administrator
NestFinder – Property Rental Management System | Page 19
Mini Project : – CSN301 Software Engineering, Even Sem, 2025-26
10. Conclusion
The NestFinder Property Rental Management System was successfully designed and
implemented as a full-stack web application using React 18, [Link] with Express, MySQL,
Tailwind CSS, and Stripe. The system fulfills all stated objectives and provides a complete,
role-based digital property rental platform.
The system demonstrates the following key achievements:
• A fully functional Tenant Portal allowing property search and filtering, calendar-based
booking, Stripe card payments, maintenance request submission, wishlist
management, and review submission.
• An Owner Dashboard enabling property listing management with image uploads,
booking request approval or rejection, maintenance request response, and rental
income overview.
• An Admin Panel for platform-wide user and property management, revenue chart
visualization, and system-level oversight.
• A robust Stripe payment integration with server-side PaymentIntent creation,
webhook-based status confirmation, and full payment history.
• A date-conflict-validated booking system ensuring no double bookings are allowed
for the same property on overlapping dates.
• Role-based access control with JWT middleware ensuring tenants, owners, and
admins can only access their respective modules.
• A clean modular architecture separating Express controllers, routes, middleware, and
React pages and components for maintainability and scalability.
All 34 test cases across five modules — User Registration/Login, Property Listings, Booking
and Payment, Maintenance and Reviews, and Admin Dashboard — passed successfully,
confirming the correctness and reliability of the system.
This project provided comprehensive hands-on experience with full-stack web development,
RESTful API design, relational database schema design, third-party payment gateway
integration, software engineering principles (SRS, ER diagrams, class diagrams, sequence
diagrams, use cases), and the MVC architectural pattern. The system can be further
enhanced in future iterations by adding real-time chat via [Link], Google Maps property
location integration, PDF receipt generation, mobile application support via a React Native
frontend, and tenant credit scoring.
NestFinder – Property Rental Management System | Page 20
Mini Project : – CSN301 Software Engineering, Even Sem, 2025-26
11. References
• React 18 Official Documentation — [Link]
• [Link] v18 Documentation — [Link]
• Express 4 Documentation — [Link]
• MySQL 8.0 Reference Manual — [Link]
• Tailwind CSS Documentation — [Link]
• Stripe API Documentation — [Link]
• React Router v6 Documentation — [Link]
• Recharts Documentation — [Link]
• JSON Web Tokens (JWT) — [Link]
• Multer File Upload Middleware — [Link]
• Pressman, R. S. (2014). Software Engineering: A Practitioner's Approach. McGraw-
Hill.
• Sommerville, I. (2015). Software Engineering (10th Edition). Pearson Education.
NestFinder – Property Rental Management System | Page 21