A modern, full-stack SaaS real estate management system built with the MERN stack and Next.js.
Designed for managing property listings, users, and administrative workflows in a scalable and efficient way.
- Home Page
- Property Listings with Filters
- Admin Dashboard Analytics
- Property Details Page
- JWT-based authentication
- Role-based access control (Admin, Agent, User)
- Secure password hashing (bcrypt)
- Protected routes
- Create, update, delete properties
- Upload multiple images (Cloudinary)
- Property categories (rent / sale / residential / commercial)
- Advanced filtering & search system
- Analytics dashboard using Recharts
- Manage users and listings
- Platform activity overview
- Search properties by location, price, type
- Filter & sort functionality
- Responsive grid layout
- Pagination support
- Image uploads via Cloudinary
- Multer-based file handling
- Email notifications via Nodemailer
- Inquiry/contact system
- Next.js App Router (SSR/CSR hybrid)
- React Query for API caching
- Zustand for UI state management
- Framer Motion animations
- Mobile-first responsive design
- Framework: Next.js 16 (React 19)
- Styling: Tailwind CSS, Framer Motion, Swiper
- State Management: Zustand, TanStack React Query
- Form Handling & Validation: React Hook Form, Zod
- Icons: Lucide React, React Icons
- Data Visualization: Recharts
- HTTP Client: Axios
- Runtime: Node.js (v18+)
- Framework: Express.js 5
- Database: MongoDB (Mongoose)
- Authentication: JWT (JSON Web Tokens), bcryptjs
- File Uploads: Multer, Cloudinary
- Security: Helmet, Express Rate Limit, CORS
- Email: Nodemailer
Real-State/
├── client/ # Next.js frontend application
│ ├── src/ # Source code (app router, components, services, etc.)
│ ├── public/ # Static assets
│ └── package.json # Frontend dependencies and scripts
└── server/ # Node.js/Express backend application
├── config/ # Configuration files (e.g., Cloudinary, DB)
├── middleware/ # Express middlewares (e.g., Auth)
├── models/ # Mongoose schemas
├── routes/ # API routes
├── controllers/ # Route handlers
├── seed/ # Database seeding scripts
└── package.json # Backend dependencies and scripts
- Node.js (v18.0.0 or higher)
- MongoDB (Local or Atlas)
- Cloudinary Account (for image uploads)
-
Clone the repository:
git clone <repository-url> cd Real-State
-
Install Backend Dependencies:
cd server npm install -
Install Frontend Dependencies:
cd ../client npm install
Backend (server/.env)
Create a .env file in the server directory and configure the following variables:
PORT=5000
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
CLOUDINARY_CLOUD_NAME=your_cloudinary_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secretFrontend (client/.env.local)
Create an .env.local file in the client directory and configure your frontend environment variables:
NEXT_PUBLIC_API_URL=http://localhost:5000/api(Adjust the API URL based on your server configuration).
Run the Backend Development Server:
cd server
npm run devRun the Frontend Development Server:
cd client
npm run devThe frontend will be available at http://localhost:3000 and the backend at http://localhost:5000.
Auth
- POST /api/auth/register
- POST /api/auth/login
- GET /api/auth/me
Properties
- GET /api/properties
- POST /api/properties
- PUT /api/properties/:id
- DELETE /api/properties/:id
Users
- GET /api/users
- PUT /api/users/:id
- Google Maps integration
- Real-time chat system
- Stripe payment integration
- Email automation system
- Mobile app (React Native)
- AI property recommendations
Built by a solo developer using MERN + Next.js A production-style SaaS real estate management platform.
MIT License