A full-stack Airbnb clone built with Next.js 14, TypeScript, Prisma, MongoDB, and Tailwind CSS. This project replicates core Airbnb features including property listings, reservations, user authentication, and more.
-
🔐 Authentication
- Email/password authentication
- OAuth integration
- Protected routes and API endpoints
-
🏠 Property Management
- Create and manage property listings
- Upload property images
- Set property details (rooms, bathrooms, guests)
- Location selection with map integration
- Category-based property organization
-
🔍 Search & Filtering
- Location-based search
- Date range selection
- Guest count filtering
- Room and bathroom requirements
- Category filtering
-
📅 Reservation System
- Calendar-based booking
- Date availability checking
- Reservation management
- Booking cancellation
-
❤️ Favorites
- Save favorite properties
- Quick access to saved listings
-
🗺️ Maps Integration
- Interactive maps for property locations
- Location selection during property creation
-
Frontend
- Next.js 14 (App Router)
- TypeScript
- Tailwind CSS
- React
- Zustand (State Management)
-
Backend
- Next.js API Routes
- Prisma (ORM)
- MongoDB
- NextAuth
- Clone the repository:
git clone https://github.com/yourusername/airbnb-clone.git
cd airbnb-clone- Install dependencies:
pnpm install- Set up environment variables:
Create a
.envfile in the root directory with the following variables:
DATABASE_URL="your_mongodb_connection_string"
NEXTAUTH_SECRET="your_nextauth_secret"
NEXTAUTH_URL="http://localhost:3000"- Build & Start server:
pnpm build
pnpm startOpen http://localhost:3000 with your browser to see the result.
app/
├── actions/ # Server actions
├── api/ # API routes
├── components/ # React components
├── hooks/ # Custom React hooks
├── libs/ # Utility functions
├── providers/ # Context providers
└── types/ # TypeScript types
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.