Skip to content

Tejas-k23/Purandar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

142 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ Purandar Estate - Full-Stack Real Estate Platform

License: MIT

A modern, production-ready real estate platform featuring property listings, project management, admin workflows, media uploads, WhatsApp integration, and comprehensive analytics. Built with a Vite + React frontend and a Node.js/Express + MongoDB backend.

๐Ÿ“‹ Table of Contents

๐Ÿš€ Features

  • ๐Ÿ  Property Listings: Advanced property listings with filters for buy/rent, type, budget, and area.
  • ๐Ÿ— Project Management: Comprehensive project listings with plot-specific pricing and media uploads.
  • ๐Ÿ‘จโ€๐Ÿ’ผ Admin Panel: Rich admin interface to manage properties, projects, enquiries, feedback, blogs, and featured content.
  • ๐Ÿ“ธ Media Uploads: Support for image and video uploads for properties and projects using Cloudflare R2.
  • ๐Ÿ’ฌ WhatsApp Integration: Contact controls with company/custom options and response time tracking.
  • โญ Feedback System: Project feedback with ratings and short reviews.
  • ๐Ÿ” SEO Optimization: SEO-friendly detail pages, sitemap, and schema metadata.
  • ๐Ÿ” Authentication: JWT-based authentication with access and refresh tokens.
  • ๐Ÿ“ฑ PWA Support: Progressive Web App features for mobile experience.

๐Ÿ›  Tech Stack

Frontend

  • React (with Vite for build tooling)
  • React Router for client-side routing
  • Axios for API calls
  • CSS Modules / Custom design system for styling
  • Firebase for messaging and notifications

Backend

  • Node.js + Express.js for server-side logic
  • MongoDB + Mongoose for database and ODM
  • JWT for authentication (access + refresh tokens)
  • Cloudflare R2 for media storage
  • Multer for file uploads
  • Rate Limiting and security middlewares

๐Ÿ“ฆ Installation

Prerequisites

  • Node.js (v16 or higher)
  • MongoDB (local or cloud instance)
  • Cloudflare R2 account for media storage
  • Firebase project for messaging

Steps

  1. Clone the repository:

    git clone https://github.com/your-username/purandar-estate.git
    cd purandar-estate
  2. Install dependencies:

    # Frontend dependencies
    npm install
    
    # Backend dependencies
    cd backend
    npm install
    cd ..
  3. Set up environment variables:

    • Copy .env.example to .env for frontend
    • Copy backend/.env.example to backend/.env for backend
    • Fill in the required values (see Environment Variables section)
  4. Start the development servers:

    # Start frontend (in one terminal)
    npm run dev
    
    # Start backend (in another terminal)
    cd backend
    npm run dev
  5. Access the application:

๐Ÿš€ Usage

  1. Register/Login: Create an account or log in as an admin/user.
  2. Browse Properties: Use filters to find properties by type, budget, location, etc.
  3. View Projects: Explore ongoing and completed projects with detailed information.
  4. Admin Panel: Access admin features to manage listings, users, and content.
  5. Contact Sellers: Use WhatsApp integration to contact property owners.
  6. Leave Feedback: Rate and review projects.

๐Ÿ”— API Endpoints

The API is prefixed with /api/v1. Here are some key endpoints:

Authentication

  • POST /api/v1/auth/register - Register a new user
  • POST /api/v1/auth/login - Login user
  • POST /api/v1/auth/refresh - Refresh access token
  • GET /api/v1/auth/me - Get current user info

Properties

  • GET /api/v1/properties - List all properties
  • GET /api/v1/properties/:id - Get property by ID
  • POST /api/v1/properties - Create new property
  • PATCH /api/v1/properties/:id - Update property
  • DELETE /api/v1/properties/:id - Delete property
  • POST /api/v1/properties/:id/upload-images - Upload property images
  • POST /api/v1/properties/:id/upload-videos - Upload property videos

Projects

  • GET /api/v1/projects - List all projects
  • GET /api/v1/projects/:id - Get project by ID
  • POST /api/v1/projects - Create new project
  • PATCH /api/v1/projects/:id - Update project

Admin

  • GET /api/v1/admin/stats - Get admin statistics
  • POST /api/v1/admin/feature-property - Feature a property

Blogs

  • GET /api/v1/blogs - List blog posts
  • POST /api/v1/blogs - Create blog post

For a complete list, refer to the route files in backend/src/routes/.

๐Ÿ“ Project Structure

ourproject/
โ”œโ”€โ”€ src/                          # Frontend source code
โ”‚   โ”œโ”€โ”€ components/               # Reusable React components
โ”‚   โ”‚   โ”œโ”€โ”€ admin/                # Admin-specific components
โ”‚   โ”‚   โ”œโ”€โ”€ common/               # Common components
โ”‚   โ”‚   โ”œโ”€โ”€ forms/                # Form components
โ”‚   โ”‚   โ”œโ”€โ”€ home/                 # Homepage components
โ”‚   โ”‚   โ”œโ”€โ”€ project/              # Project-related components
โ”‚   โ”‚   โ”œโ”€โ”€ property/             # Property-related components
โ”‚   โ”‚   โ””โ”€โ”€ search/               # Search components
โ”‚   โ”œโ”€โ”€ pages/                    # Page components
โ”‚   โ”‚   โ”œโ”€โ”€ admin/                # Admin pages
โ”‚   โ”‚   โ”œโ”€โ”€ auth/                 # Authentication pages
โ”‚   โ”‚   โ”œโ”€โ”€ profile/              # User profile pages
โ”‚   โ”‚   โ””โ”€โ”€ public/               # Public pages
โ”‚   โ”œโ”€โ”€ services/                 # API service functions
โ”‚   โ”œโ”€โ”€ store/                    # State management (Zustand)
โ”‚   โ”œโ”€โ”€ hooks/                    # Custom React hooks
โ”‚   โ”œโ”€โ”€ utils/                    # Utility functions
โ”‚   โ”œโ”€โ”€ layouts/                  # Layout components
โ”‚   โ”œโ”€โ”€ routes/                   # Routing components
โ”‚   โ”œโ”€โ”€ config/                   # Configuration files
โ”‚   โ”œโ”€โ”€ data/                     # Static data files
โ”‚   โ”œโ”€โ”€ lib/                      # Library configurations
โ”‚   โ”œโ”€โ”€ pwa/                      # PWA-related files
โ”‚   โ””โ”€โ”€ styles/                   # CSS stylesheets
โ”œโ”€โ”€ backend/                      # Backend source code
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ controllers/          # Route controllers
โ”‚   โ”‚   โ”œโ”€โ”€ models/               # MongoDB models
โ”‚   โ”‚   โ”œโ”€โ”€ routes/               # API routes
โ”‚   โ”‚   โ”œโ”€โ”€ middlewares/          # Express middlewares
โ”‚   โ”‚   โ”œโ”€โ”€ config/               # Configuration files
โ”‚   โ”‚   โ”œโ”€โ”€ utils/                # Utility functions
โ”‚   โ”‚   โ”œโ”€โ”€ scripts/              # Database scripts
โ”‚   โ”‚   โ””โ”€โ”€ app.js, server.js     # Main application files
โ”‚   โ””โ”€โ”€ package.json
โ”œโ”€โ”€ public/                       # Static assets
โ”œโ”€โ”€ scripts/                      # Utility scripts
โ”œโ”€โ”€ package.json                  # Frontend dependencies and scripts
โ”œโ”€โ”€ vite.config.js                # Vite configuration
โ”œโ”€โ”€ eslint.config.js              # ESLint configuration
โ”œโ”€โ”€ vercel.json                   # Vercel deployment config
โ””โ”€โ”€ README.md                     # This file

๐Ÿ”ง Environment Variables

Frontend (.env)

VITE_API_URL=/api/v1
VITE_MAPBOX_ACCESS_TOKEN=your_mapbox_token
VITE_COMPANY_CONTACT_NAME=Purandar Properties
VITE_COMPANY_CONTACT_PHONE=9999999999
VITE_COMPANY_CONTACT_EMAIL=contact@purandarproperties.com
VITE_COMPANY_WHATSAPP_NUMBER=9999999999
VITE_FIREBASE_API_KEY=your_firebase_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=your_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
VITE_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
VITE_FIREBASE_APP_ID=your_app_id
VITE_FIREBASE_VAPID_KEY=your_vapid_key

Backend (backend/.env)

PORT=5000
NODE_ENV=development
CLIENT_URL=http://localhost:5173
MONGODB_URI=your_mongodb_connection_string_here
JWT_ACCESS_SECRET=your_access_secret_here
JWT_REFRESH_SECRET=your_refresh_secret_here
JWT_ACCESS_EXPIRES_IN=15m
JWT_REFRESH_EXPIRES_IN=7d
ADMIN_NAME=Purandar Admin
ADMIN_EMAIL=admin@purandar.local
ADMIN_PASSWORD=ChangeMe123!
COMPANY_CONTACT_NAME=Purandar Properties
COMPANY_CONTACT_PHONE=9999999999
COMPANY_CONTACT_EMAIL=contact@purandarproperties.com
R2_ACCOUNT_ID=your_account_id
R2_ACCESS_KEY_ID=your_access_key
R2_SECRET_ACCESS_KEY=your_secret_key
R2_BUCKET_NAME=your_bucket_name
R2_PUBLIC_URL=https://your-public-url.r2.dev
MEDIA_IMAGE_MAX_MB=5
MEDIA_VIDEO_MAX_MB=50

๐Ÿš€ Deployment

This project is configured for deployment on Vercel.

  1. Connect to Vercel: Link your GitHub repository to Vercel.
  2. Environment Variables: Set the environment variables in Vercel dashboard.
  3. Build Settings:
    • Build Command: npm run build
    • Output Directory: dist
    • Install Command: npm install
  4. Deploy: Push changes to trigger automatic deployment.

For backend deployment, consider platforms like Heroku, Railway, or AWS.

๐Ÿ”ฎ Future Improvements

  • OTP/SMS provider integration for enhanced authentication
  • Payment gateway integration for transactions
  • Advanced analytics dashboard with charts and reports
  • Mobile app development (React Native)
  • AI-powered property recommendations
  • Multi-language support
  • Integration with external real estate APIs

๐Ÿค Contributing

We welcome contributions! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/your-feature-name
  3. Commit your changes: git commit -m 'Add some feature'
  4. Push to the branch: git push origin feature/your-feature-name
  5. Open a Pull Request

Development Guidelines

  • Follow ESLint rules
  • Write meaningful commit messages
  • Test your changes thoroughly
  • Update documentation as needed

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ‘ค Author

Purandar Estate Team ยฉ 2026 Tejas kumbharkar. Unauthorized copying without attribution is not allowed.

About

A modern full-stack real estate platform for property listings, project management, admin workflows, and WhatsApp-based lead generation.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages