Property Pulse is a comprehensive real estate application built with Next.js 16, designed to help users find and list rental properties. It provides a seamless experience for browsing properties, managing listings, and communicating with property owners.
- User Authentication: Secure user login and registration using Google OAuth (via NextAuth.js).
- Property Listings:
- Browse a wide range of rental properties.
- Detailed property views with descriptions, amenities, and location.
- Advanced property search and filtering.
- Property Management:
- Add new property listings with image uploads.
- Edit and delete existing listings.
- Interactive Maps: View property locations on interactive maps powered by Mapbox.
- Messaging System: Real-time communication between interested tenants and property owners.
- User Profiles: Manage user account details and view posted listings.
- Bookmarking: Save favorite properties for quick access.
- Social Sharing: Share property listings on social media platforms.
- Responsive Design: A modern, mobile-friendly interface built with Tailwind CSS.
- Framework: Next.js 16 (App Router)
- Language: JavaScript
- Database: MongoDB (with Mongoose ODM)
- Authentication: NextAuth.js
- Styling: Tailwind CSS 4
- Maps: Mapbox GL & React Map GL
- Image Storage: Cloudinary
- Geocoding: Google Geocoding API / OpenCage (for converting addresses to coordinates)
- UI Components: React Icons, React Spinners, React Toastify
Follow these steps to get the project running locally on your machine.
- Node.js (v18 or higher recommended)
- MongoDB account and connection string (or local instance).
- Cloudinary account for image hosting.
- Google Cloud Console account (for OAuth and Geocoding).
- Mapbox account for map rendering.
-
Clone the repository:
git clone https://github.com/ibukun-brain/property-pulse.git cd property-pulse -
Install dependencies:
npm install
-
Environment Setup:
Create a
.envfile in the root directory (you can use.env.developmentas a reference). Add the following variables:NEXT_PUBLIC_DOMAIN=http://localhost:3000 NEXT_PUBLIC_API_DOMAIN=http://localhost:3000/api # Database MONGODB_URI=mongodb+srv://<username>:<password>@<cluster>.mongodb.net/property-pulse # Google OAuth GOOGLE_CLIENT_ID=<your-google-client-id> GOOGLE_CLIENT_SECRET=<your-google-client-secret> # NextAuth NEXTAUTH_URL=http://localhost:3000 NEXTAUTH_URL_INTERNAL=http://localhost:3000 NEXTAUTH_SECRET=<your-nextauth-secret> # Cloudinary CLOUDINARY_CLOUD_NAME=<your-cloud-name> CLOUDINARY_API_KEY=<your-api-key> CLOUDINARY_API_SECRET=<your-api-secret> # Maps & Geocoding NEXT_PUBLIC_MAPBOX_TOKEN=<your-mapbox-token> NEXT_PUBLIC_GOOGLE_GEOCODING_API_KEY=<your-google-geocoding-key> OPENCAGE_API_KEY=<your-opencage-key>
-
Run the application:
npm run dev
Open http://localhost:3000 with your browser to see the result.
property-pulse/
├── app/ # Next.js App Router pages and API routes
│ ├── api/ # Backend API endpoints
│ ├── properties/ # Property listing pages
│ ├── layout.jsx # Main application layout
│ └── page.jsx # Homepage
├── components/ # Reusable UI components
├── config/ # Configuration files (e.g., DB connection)
├── context/ # React Context wrappers (e.g., AuthProvider)
├── models/ # Mongoose database models
├── utils/ # Utility functions
├── public/ # Static assets
└── ...
Contributions, issues, and feature requests are welcome!
This project is licensed under the MIT License.