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.
- ๐ Features
- ๐ Tech Stack
- ๐ฆ Installation
- ๐ Usage
- ๐ API Endpoints
- ๐ Project Structure
- ๐ง Environment Variables
- ๐ Deployment
- ๐ฎ Future Improvements
- ๐ค Contributing
- ๐ License
- ๐ค Author
- ๐ 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.
- 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
- 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
- Node.js (v16 or higher)
- MongoDB (local or cloud instance)
- Cloudflare R2 account for media storage
- Firebase project for messaging
-
Clone the repository:
git clone https://github.com/your-username/purandar-estate.git cd purandar-estate -
Install dependencies:
# Frontend dependencies npm install # Backend dependencies cd backend npm install cd ..
-
Set up environment variables:
- Copy
.env.exampleto.envfor frontend - Copy
backend/.env.exampletobackend/.envfor backend - Fill in the required values (see Environment Variables section)
- Copy
-
Start the development servers:
# Start frontend (in one terminal) npm run dev # Start backend (in another terminal) cd backend npm run dev
-
Access the application:
- Frontend: http://localhost:5173
- Backend API: http://localhost:5000
- Register/Login: Create an account or log in as an admin/user.
- Browse Properties: Use filters to find properties by type, budget, location, etc.
- View Projects: Explore ongoing and completed projects with detailed information.
- Admin Panel: Access admin features to manage listings, users, and content.
- Contact Sellers: Use WhatsApp integration to contact property owners.
- Leave Feedback: Rate and review projects.
The API is prefixed with /api/v1. Here are some key endpoints:
POST /api/v1/auth/register- Register a new userPOST /api/v1/auth/login- Login userPOST /api/v1/auth/refresh- Refresh access tokenGET /api/v1/auth/me- Get current user info
GET /api/v1/properties- List all propertiesGET /api/v1/properties/:id- Get property by IDPOST /api/v1/properties- Create new propertyPATCH /api/v1/properties/:id- Update propertyDELETE /api/v1/properties/:id- Delete propertyPOST /api/v1/properties/:id/upload-images- Upload property imagesPOST /api/v1/properties/:id/upload-videos- Upload property videos
GET /api/v1/projects- List all projectsGET /api/v1/projects/:id- Get project by IDPOST /api/v1/projects- Create new projectPATCH /api/v1/projects/:id- Update project
GET /api/v1/admin/stats- Get admin statisticsPOST /api/v1/admin/feature-property- Feature a property
GET /api/v1/blogs- List blog postsPOST /api/v1/blogs- Create blog post
For a complete list, refer to the route files in backend/src/routes/.
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
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
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
This project is configured for deployment on Vercel.
- Connect to Vercel: Link your GitHub repository to Vercel.
- Environment Variables: Set the environment variables in Vercel dashboard.
- Build Settings:
- Build Command:
npm run build - Output Directory:
dist - Install Command:
npm install
- Build Command:
- Deploy: Push changes to trigger automatic deployment.
For backend deployment, consider platforms like Heroku, Railway, or AWS.
- 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
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature-name - Commit your changes:
git commit -m 'Add some feature' - Push to the branch:
git push origin feature/your-feature-name - Open a Pull Request
- Follow ESLint rules
- Write meaningful commit messages
- Test your changes thoroughly
- Update documentation as needed
This project is licensed under the MIT License - see the LICENSE file for details.
Purandar Estate Team ยฉ 2026 Tejas kumbharkar. Unauthorized copying without attribution is not allowed.