Seamlessly connecting tenants with ideal Paying Guest accommodations and verified owners.
- β Overview
- β¨ Key Features
- π οΈ Tech Stack & Architecture
- π Project Structure
- π Getting Started
- π§ Usage
- π€ Contributing
- π License
HomeQuest is the modern, interactive platform designed to streamline the complex process of finding, managing, and renting Paying Guest (PG) accommodations and residential properties. It leverages location intelligence and a robust, dual-sided user architecture to provide a seamless search and management experience for both property owners and prospective tenants.
Searching for suitable temporary or long-term housing, particularly in the competitive PG and rental market, is often frustrating. Prospective tenants face challenges like outdated listings, unreliable owner contact information, lack of transparent pricing, and difficulty determining commute times. Simultaneously, property owners struggle with efficiently managing listings, coordinating viewings, and verifying tenant details. This disconnect leads to wasted time, inconsistent data, and unnecessary friction for both parties.
HomeQuest eliminates the documentation burden by automatically analyzing your codebase and generating professional README files. Simply provide a GitHub repository URL, and get a complete, well-structured README with installation instructions, usage examples, and feature descriptions.
HomeQuest provides a centralized, interactive web application that offers verified listings, sophisticated mapping features, and distinct dashboards tailored specifically for owners and tenants. Our goal is to foster trust and efficiency, ensuring tenants find their ideal abode quickly and owners manage their properties with maximum ease. The platform is designed as a single-page application (SPA), prioritizing speed and a highly interactive user experience.
HomeQuest follows a modern, decoupled architecture powered by the Express backend for handling API routing and requests, and a dynamic React frontend for all interactive UI elements. This separation ensures scalability and maintainability. The system utilizes a REST API approach, centered around providing structured data efficiently to the client, driven by a Component-based Architecture for rapid frontend development and state management.
The core value of HomeQuest lies in its ability to bring sophisticated functionality and a polished user experience (UX) to the rental search market. The platform is built around the verified capability of providing a highly interactive user interface and essential API connectivity.
The foundation of HomeQuest is its commitment to location intelligence, providing users with more than just a list of addresses.
- π PG Grid Search (
pgGridSearch.jsx): Allows users to filter and search listings efficiently across a defined geographical grid. This transforms complex database querying into a fast, user-friendly experience, making it easier to drill down into specific neighborhoods or zones of interest. - π Interactive Mapping (
react-leaflet,LocationMap.jsx): Provides a visual overlay of all available properties. Users can interact directly with the map, utilizing industry-standard mapping libraries to quickly assess property density and location relative to key landmarks or commute points. - π£οΈ Shortest Path Calculation (
ShortestPath.jsx,useDijkstra.jsx): A unique, powerful feature that incorporates algorithms like Dijkstra's to calculate and display the shortest, most efficient routes between a property and a user-defined destination (like a workplace or university). This delivers critical value by helping tenants quickly assess realistic commute times before scheduling a viewing.
HomeQuest recognizes the distinct needs of its user base, offering specialized tools and views for both property owners and tenants, driven by defined schemas (ownerSchema.js, tenantSchema.js) and controllers.
- π‘ Owner Management Dashboard (
Owner.jsx,OwnerProfile.jsx): Owners gain a centralized portal to insert, manage, and update their PG listings (InsertPG.jsx). This ensures listings are always current and detailed, reducing back-and-forth communication with prospective renters. - π Tenant Profile & Dashboard (
Tenant.jsx,TenantProfile.jsx,TenantDashboard.jsx): Tenants have a dedicated space to save favorite listings, manage their application status, and view personalized alerts. The dashboard serves as their command center throughout the rental search process. - π Secure Role-Based Access (
roleMiddleware.js): Ensures that access to sensitive functionalities (like listing creation or profile updates) is strictly controlled, enhancing the security and integrity of the platform for both user types.
The application is engineered to deliver a fluid, high-performance experience, utilizing its verified Component-based Architecture.
- π Interactive User Interface (React): Built entirely with React, the application ensures instantaneous updates and a responsive design that adapts smoothly across all devices. This guarantees a modern and reliable interaction every time.
- βοΈ Comprehensive Data Schema: While explicit database connections were not verified, the presence of detailed data definitions (
userSchema.js,pgSchema.js,tenantSchema.js,ownerSchema.js) ensures a structured approach to data handling, promising reliable, consistent information across all parts of the application. - API Accessibility (
GET /): The verified root API endpoint provides necessary core data access, demonstrating the foundational architecture is in place to serve the web application and deliver necessary initial resources.
HomeQuest is built on established, high-performance technologies to ensure stability, speed, and scalability. The architecture is strictly decoupled, promoting maintainability and enabling independent development of the frontend and backend layers.
| Technology | Layer | Purpose | Why it was Chosen |
|---|---|---|---|
| react | Frontend (Client) | Building the highly interactive, dynamic user interface (UI) and single-page application (SPA). | Provides superior component-based architecture, efficient state management, and high performance necessary for mapping and complex search filters. |
| express | Backend (Server) | Creating the RESTful API endpoints, handling routing, middleware application, and business logic processing. | Known for its minimalistic, fast, and unopinionated structure, making it the ideal framework for developing robust and scalable APIs quickly. |
The frontend relies on a rich set of libraries to deliver a modern UX, including:
- Data & State:
axiosfor HTTP requests. - UI Components:
@mui/material,@emotion/react,react-bootstrap, and standardbootstrapfor professional, accessible, and responsive components. - Icons:
@fortawesome/fontawesome-svg-coreandreact-iconsfor visual cues and navigation elements. - Mapping:
leafletandreact-leafletare essential for rendering the interactive maps and enabling the location search and shortest path functionalities. - Routing:
react-router-domto manage complex client-side navigation and page transitions. - Styling: Utilizes
sassfor efficient, modular, and maintainable CSS architecture (.scssfiles detected).
The Express server is organized logically to handle various architectural concerns:
- Configuration (
config/): Dedicated files manage crucial operational parameters, including database settings (db.config.js), environment variables (env.config.js), logging setup (morgan.config.js), and access control policies (permissions.config.js). - Middleware (
middleware/): Ensures a clean separation of concerns for security (authMiddleware.js), database connectivity (dbMiddleware.js), and user roles (roleMiddleware.js,checkPermission.js). - Routes (
routes/): Defines the explicit paths for interacting with the core resource types: owners, tenants, PGs, and general users. - Controllers (
controllers/): Implements the logic required to handle incoming requests, acting as the interface between the routing layer and the data structure layer.
The HomeQuest repository is organized into distinct frontend and backend modules, reflecting the decoupled architecture. This structure promotes clear separation of responsibilities and ease of maintenance.
Bharatdwaj3-Home-Quest-1138403/
βββ π README.md
βββ π backend/ # Express.js REST API server
β βββ π server.js # Main entry point for the backend application
β βββ π package.json # Backend dependencies and scripts
β βββ π .env.example # Template for environment configuration
β βββ π config/ # Core configuration files
β β βββ π permissions.config.js # Defines access control settings
β β βββ π morgan.config.js # HTTP request logging setup
β β βββ π env.config.js # Environment variable loader
β β βββ π db.config.js # Database connection configuration (placeholder/template)
β βββ π models/ # Data structure definitions for persistent data
β β βββ π ownerModel.js # Schema/Model definition for property owners
β β βββ π pgModel.js # Schema/Model definition for PG listings
β β βββ π locationModel.js # Schema/Model definition for location data
β β βββ π tenantModel.js # Schema/Model definition for tenants
β βββ π utils/ # Helper functions and utilities
β β βββ π geocoding.js # Utilities for handling geographical coordinates
β βββ π middleware/ # Express middleware for pre-processing requests
β β βββ π roleMiddleware.js # Checks user roles for access control
β β βββ π authMiddleware.js # Authentication and token verification
β β βββ π checkPermission.js # Verifies granular user permissions
β βββ π routes/ # Defines API endpoint routes
β β βββ π ownerRoutes.js
β β βββ π pgRoutes.js
β β βββ π tenantRoutes.js
β β βββ π userRoutes.js
β βββ π services/ # External integration services
β β βββ π multer.js # Middleware for handling multipart/form-data (file uploads)
β β βββ π cloudinary.js # Service integration for cloud media storage (inferred from multer context)
β βββ π controllers/ # Logic handlers for processing requests
β β βββ π tenantController.js
β β βββ π userController.js
β β βββ π pgController.js
β β βββ π ownerController.js
β βββ π schemas/ # Validation and structural definitions
β βββ π userSchema.js
β βββ π pgSchema.js
β βββ π tenantSchema.js
β βββ π ownerSchema.js
βββ π frontend/ # React/Vite client application
βββ π vite.config.js # Configuration for the Vite build tool
βββ π package.json # Frontend dependencies
βββ π index.html # Main entry point for the SPA
βββ π src/ # Frontend source code
β βββ π App.jsx # Root component of the application
β βββ π main.jsx # Main entry point rendering the React application
β βββ π assets/ # Static assets like images and SVGs
β β βββ π images/ # Marketing and content images
β βββ π components/ # Reusable UI modules
β β βββ π functions/ # Utility components for complex operations
β β β βββ π LocationSearch.jsx # Component for integrated location querying
β β β βββ π ShortestPath.jsx # UI for calculating and displaying routes
β β β βββ π pgGridSearch.jsx # Component for performing categorized PG searches
β β β βββ π useDijkstra.jsx # Custom hook encapsulating route finding logic
β β βββ π PG/ # PG listing and management components
β β β βββ π Pgdetails.jsx
β β β βββ π PgGird.jsx
β β β βββ π PGManager.jsx
β β β βββ π InsertPG.jsx # Form for owner listing creation
β β β βββ π PgFrontend.jsx
β β βββ π layout/ # Structural components
β β β βββ π Navigation.jsx
β β β βββ π Header.jsx
β β β βββ π Footer.jsx
β β β βββ π LocationMap.jsx # Component wrapper for Leaflet map display
β β βββ π auth/ # Authentication related components
β β β βββ π Login.jsx
β β β βββ π Signup.jsx
β β βββ π Tenant/ # Tenant-specific components
β β β βββ π TenantProfile.jsx
β β β βββ π InsertTenant.jsx
β β β βββ π TenantDashboard.jsx
β β βββ π owner/ # Owner-specific components
β β βββ π Owner.jsx
β β βββ π InsertOwner.jsx
β β βββ π OwnerProfile.jsx
β βββ π style/ # SCSS and CSS files for global and component-specific styling
β β βββ π tenant-profile.scss
β β βββ π pg-manager.scss
β β βββ π auth.scss
β β βββ π home.scss
β β βββ π PG.scss
β β βββ π _variables.scss # Global style definitions
β βββ π pages/ # Top-level page components for routing
β βββ π Product.jsx # Page for displaying individual product/listing details
β βββ π Home.jsx # Main landing page
βββ π public/ # Publicly accessible static assets
βββ π interior_3.jpg
βββ π house_not_found.png
βββ π vite.svg
To set up the HomeQuest application locally, you will need Node.js and npm/yarn installed on your system to manage dependencies for both the Express backend and the React frontend.
Ensure you have the following installed:
- Node.js: (LTS version recommended)
- Git: For cloning the repository.
Follow these steps to get a development copy running. Note that specific environment variables are often required for full functionality (e.g., database connection strings, API keys for Cloudinary/Mapping services), although none were explicitly detected in the basic configuration analysis.
git clone https://github.com/Bharatdwaj3-Home-Quest-1138403.git
cd Bharatdwaj3-Home-Quest-1138403Navigate to the backend directory and install the necessary Express dependencies.
cd backend
npm install
# OR
yarn installNavigate to the frontend directory and install the necessary React and Vite dependencies.
cd ../frontend
npm install
# OR
yarn installThough no specific environment variables were confirmed in the analysis, a full-stack application typically requires configuration. Use the provided example file as a template:
# In the backend directory:
cp .env.example .envFill in the necessary configuration parameters within the newly created .env file, especially those pertaining to configuration settings defined in db.config.js and service integrations like cloudinary.js.
Since this project has two distinct services (backend and frontend), they must be started independently.
Return to the root of the backend directory and start the Express server.
cd ../backend
node server.js
# The server should start, typically running on a port like 5000 or 3000.Return to the frontend directory and start the client application using the verified Vite development script.
cd ../frontend
npm run dev
# The client should be accessible via a local URL (e.g., http://localhost:5173).Once both servers are running, the application will be fully functional, and you can begin interacting with the web interface.
HomeQuest is a web application designed for direct user interaction through a modern browser. Usage is focused on accessing the root application URL and navigating the integrated user interface.
Upon successfully starting the frontend server (npm run dev), the application will typically be accessible at a local host address provided by Vite (e.g., http://localhost:5173).
The entire application usage revolves around the interactive components and the singular verified GET / API endpoint, which is essential for serving the root application data.
-
Home Page Access (
GET /):- Navigate to the deployed application URL or the local host address. This triggers the fundamental
GET /API call to retrieve the necessary resources for the initial page load, presenting the main search interface (Home.jsx).
- Navigate to the deployed application URL or the local host address. This triggers the fundamental
-
Searching for PGs:
- Use the
pgGridSearch.jsxcomponent on the Home page. Users input location criteria, apply filters, and view results presented both in a list format and overlaid on theLocationMap.jsx.
- Use the
-
Route Optimization:
- For specific listings, tenants can leverage the Shortest Path feature (
ShortestPath.jsx) to calculate commute times to a fixed point, aiding in decision-making.
- For specific listings, tenants can leverage the Shortest Path feature (
-
Authentication:
- Users (Owners or Tenants) must utilize the
Login.jsxorSignup.jsxcomponents to gain access to their respective, protected dashboards. The system ensures only authenticated users can access profile-specific pages likeTenantProfile.jsxorOwnerProfile.jsx.
- Users (Owners or Tenants) must utilize the
-
Owner Management (Requires Login):
- Owners can use the
InsertPG.jsxform via their dashboard to add new listings, leveraging themulter.jsservice for handling image uploads.
- Owners can use the
This project is licensed under the MIT License - see the LICENSE file for complete details.