HomeHorizon is a comprehensive real estate platform built with React and Node.js that connects property buyers, sellers, and real estate agents in one dynamic marketplace. The platform allows users to browse properties, make offers, manage listings, get expert guidance from agents, and connect with fellow property enthusiasts. With features like role-based authentication, advanced property management, payment integration, and interactive community features, HomeHorizon makes real estate transactions seamless and efficient.
A live demo of the project can be found here on Netlify & here on Surge.
To know better about our project:
- Browse Properties: Explore a vast collection of residential and commercial properties.
- Advanced Search & Filter: Find specific properties with powerful search and filtering options.
- Property Details: Detailed property information with images, location maps, and specifications.
- Add Properties: Agents can list new properties with comprehensive details and images.
- Three User Roles: User (Buyer), Agent (Seller), and Admin (Platform Manager).
- Firebase Authentication: Secure authentication with email/password and social login options.
- Role-Based Access Control: Different dashboard features based on user roles.
- Protected Routes: Secure user areas for profile management and transactions.
- Property Listings: Manage and update property listings.
- Offer Management: Handle purchase offers from potential buyers.
- Sales Tracking: Track sold properties and commission details.
- Performance Analytics: View sales performance and statistics.
- User Management: Manage all users, agents, and their roles.
- Property Moderation: Approve, reject, or remove property listings.
- Review Management: Moderate user reviews and ratings.
- Property Advertisement: Feature properties on the homepage.
- Make Offers: Users can make offers on properties.
- Payment Integration: Secure payment processing with Stripe.
- Wishlist: Save favorite properties for future reference.
- Purchase History: Track bought properties and transaction history.
- Modern UI/UX: Clean, intuitive interface built with Tailwind CSS and Radix UI.
- Interactive Maps: Property location visualization with Leaflet maps.
- Smooth Animations: Beautiful transitions and interactions powered by Motion.
- Mobile Responsive: Fully responsive design that works seamlessly on all devices.
- Real-time Updates: Dynamic content updates and notifications.
- React 19 β Modern UI library with latest features
- React Router 7 β Advanced client-side routing
- Tailwind CSS 4 β Utility-first CSS framework
- Radix UI β Accessible component primitives
- Motion β Powerful animation library
- Firebase Auth β Secure authentication system
- Vite β Lightning-fast build tool
- TanStack React Query β Server state management
- React Hook Form β Performant forms with easy validation
- Leaflet & React Leaflet β Interactive maps
- Axios β HTTP client for API requests
- Stripe β Payment processing integration
- Lottie React β High-quality animations
- React Icons β Comprehensive icon library
- Moment.js β Date and time formatting
- Node.js β JavaScript runtime environment
- Express.js β Fast web application framework
- MongoDB β NoSQL database for flexible data storage
- Firebase Admin SDK β Server-side Firebase integration
- JWT β JSON Web Token for authentication
- Stripe β Payment processing
- Cloudinary β Image upload and management
- Multer β File upload handling
- CORS β Cross-origin resource sharing
- dotenv β Environment variable management
Role | Password | |
---|---|---|
Admin | admin@email.com | Password123@ |
Agent | agent@email.com | Password123 |
Fraud Agent | fraud@email.com | Password123 |
- Node.js (v18 or higher)
- npm or yarn
- MongoDB database
- Firebase project
- Stripe account
- Cloudinary account
git clone https://github.com/rakibhasansohag/home-horizon.git
cd home-horizon
-
Navigate to client directory:
cd client
-
Install dependencies:
npm install
-
Set up environment variables: Create a
.env
file in the client directory:VITE_FIREBASE_API_KEY=your_firebase_api_key VITE_FIREBASE_AUTH_DOMAIN=your_project_id.firebaseapp.com VITE_FIREBASE_PROJECT_ID=your_project_id VITE_FIREBASE_STORAGE_BUCKET=your_project_id.appspot.com VITE_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id VITE_FIREBASE_APP_ID=your_app_id VITE_API_URL=http://localhost:5000 VITE_STRIPE_PUBLISHABLE_KEY=your_stripe_publishable_key
-
Start the development server:
npm run dev
-
Navigate to server directory:
cd server
-
Install dependencies:
npm install
-
Set up environment variables: Create a
.env
file in the server directory:PORT=5000 MONGODB_URI=your_mongodb_connection_string JWT_SECRET=your_jwt_secret FIREBASE_SERVICE_ACCOUNT_KEY=path_to_your_firebase_service_account_key.json STRIPE_SECRET_KEY=your_stripe_secret_key CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name CLOUDINARY_API_KEY=your_cloudinary_api_key CLOUDINARY_API_SECRET=your_cloudinary_api_secret NODE_ENV=development
-
Start the server:
npm run dev
Your client app should be running at http://localhost:5173
and your server at http://localhost:5000
.
Netlify:
- Push your code to GitHub
- Connect your repo to Netlify
- Set build command:
npm run build
- Set publish directory:
dist
- Add environment variables in Netlify's dashboard
Surge:
- Install Surge globally:
npm install -g surge
- Build the app:
npm run build
- Deploy:
surge ./dist
Deploy your Node.js server to platforms like Railway, Render, or Vercel, ensuring all environment variables are properly configured.
home-horizon/
βββ client/ # Frontend React application
β βββ public/ # Static assets and screenshots
β βββ src/
β β βββ components/ # Reusable UI components
β β β βββ Shared/ # Shared components
β β β β βββ Navbar/ # Navigation components
β β β β βββ Footer/ # Footer components
β β β β βββ NotFound/ # Error page components
β β β βββ ui/ # Radix UI components
β β β βββ ... # Other components
β β βββ layouts/ # Layout components
β β β βββ HomeLayout.jsx # Main site layout
β β β βββ AuthLayout.jsx # Authentication layout
β β β βββ DashboardLayout.jsx # Dashboard layout
β β βββ pages/ # Page components
β β β βββ Authentication/ # Login/Register pages
β β β βββ Dashboard/ # Dashboard pages
β β β βββ Home.jsx # Homepage
β β β βββ AllProperties.jsx # Properties listing
β β β βββ PropertyDetails.jsx # Property details
β β βββ hooks/ # Custom React hooks
β β βββ contexts/ # React contexts
β β βββ utils/ # Utility functions
β β βββ services/ # API services
β β βββ route/ # Route protection components
β β βββ App.jsx # Main app component
β β βββ main.jsx # Entry point
β βββ package.json
β βββ vite.config.js
βββ server/ # Backend Node.js application
β βββ models/ # Database models
β βββ routes/ # API routes
β βββ middleware/ # Express middleware
β βββ controllers/ # Route controllers
β βββ utils/ # Utility functions
β βββ config/ # Configuration files
β βββ index.js # Main server file
β βββ package.json
βββ .gitignore
βββ README.md
Platform | Link |
---|---|
Live Demo (Netlify) | https://homehorizon-by-rakib.netlify.app |
Live Demo (Surge) | http://HOMEHORIZON-by-rakib.surge.sh |
GitHub Repository | https://github.com/rakibhasansohag/home-horizon |
/
- Homepage with featured properties/all-properties
- Browse all available properties/all-properties/:id
- Individual property details (login required)/auth/login
- User login/auth/register
- User registration
/dashboard
- Dashboard homepage/dashboard/profile
- User profile management/dashboard/wishlist
- User's saved properties/dashboard/offer/:propertyId
- Make an offer on a property/dashboard/property-bought
- User's purchased properties/dashboard/my-reviews
- User's reviews and ratings
/dashboard/add-property
- Add new property listing/dashboard/my-property
- Manage agent's properties/dashboard/agent-offer-properties
- Handle incoming offers/dashboard/sold-properties
- View sold properties
/dashboard/manage-properties
- Moderate all properties/dashboard/manage-users
- User and role management/dashboard/manage-reviews
- Review moderation/dashboard/advertise-property
- Feature properties
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
Rakib Hasan Sohag
- GitHub: @rakibhasansohag
- Email: rakibhasansohag133@gmail.com
- Linkedin: @rakibhasansohag
This project is licensed under the MIT License - see the LICENSE file for details.
HomeHorizon - Making real estate transactions seamless and efficient for everyone.