A full-stack web application for discovering, listing, and booking short-term stays. Stay Finder connects guests and hosts with a seamless experience, robust authentication, and easy property management.
- 🏠 Browse Listings: Search and explore available properties with detailed information.
- 📅 Booking System: Book stays with date and guest selection, and view your bookings.
- 🧑💼 Host Dashboard: Hosts can add, edit, and manage their property listings.
- 🔒 Secure Authentication: User registration and login with JWT-based security.
- 💬 Reviews & Ratings: (Planned) Guests can leave reviews and ratings for properties.
- 📱 Responsive Design: Optimized for all devices.
- Frontend (Guest): Next.js, React, Tailwind CSS (
/client
) - Frontend (Host): Next.js, React, Tailwind CSS (
/host
) - Backend: Node.js, Express, Mongoose (
/back
) - Database: MongoDB
- Authentication: JWT
/glen
/back # Backend API (Express, MongoDB)
/client # Guest-facing Next.js frontend
/host # Host dashboard Next.js frontend
git clone https://github.com/abhisheksharmacodes/stayfinder.git
cd glen
Install backend dependencies:
cd back
npm install
Install client dependencies:
cd ../client
npm install
Install host dashboard dependencies:
cd ../host
npm install
Create a .env
file in /back
:
DB_URI=mongodb://localhost:27017/stayfinder
JWT_SECRET=your_jwt_secret
Start the backend API:
cd back
npm run dev
Start the client (guest) app:
cd ../client
npm run dev
Start the host dashboard app:
cd ../host
npm run dev
- Guest app: http://localhost:3000
- Host dashboard: http://localhost:3000 (if running separately, may use a different port)
- Backend API: http://localhost:4998
- Deploy frontend apps (client, host) to Vercel or similar platforms.
- Deploy backend (
/back
) to Vercel, Render, or your preferred Node.js host. - Set all required environment variables in your deployment environment.
POST /api/auth/register
— Register a new userPOST /api/auth/login
— LoginGET /api/listings
— Get all listingsGET /api/listings/:id
— Get listing by IDPOST /api/listings
— Add a new listingPUT /api/listings/:id
— Update a listingDELETE /api/listings/:id
— Delete a listingPOST /api/bookings
— Book a listingGET /api/bookings?listingId=...
— Get bookings for a listing