A modern, full-stack Airbnb clone built with Next.js 16, featuring user authentication, property listings, reservations, and favorites functionality.
Check out the live application: https://airbnb-gz1c.vercel.app/
- π User Authentication - Secure authentication powered by Kinde Auth
- π‘ Property Listings - Browse and search properties with advanced filtering
- π Interactive Maps - Visual location selection with map integration
- β€οΈ Favorites System - Save and manage your favorite properties
- π Reservations - Book properties and manage your reservations
- π Advanced Search - Filter by country, guests, bedrooms, and bathrooms
- π¨ Modern UI - Beautiful, responsive design with shadcn/ui components
- β‘ Optimized Performance - Built with Next.js 16 and Turbopack
- Next.js 16 - React framework with App Router
- React 19 - UI library
- TypeScript - Type safety
- Tailwind CSS - Utility-first styling
- shadcn/ui - High-quality UI components
- Lucide React - Beautiful icons
- Next.js API Routes - Serverless API endpoints
- Prisma - Type-safe ORM for database operations
- Supabase (PostgreSQL) - Scalable database solution
- Kinde Auth - Authentication and user management
- React Hook Form - Form management
- Zod - Schema validation
- date-fns - Date manipulation
Before you begin, ensure you have:
- Node.js 18+ installed
- npm or yarn package manager
- A Supabase account
- A Kinde Auth account
git clone https://github.com/okoye-peter/airbnb.git
cd airbnb-clonenpm installCreate a .env file in the root directory:
# Database
DATABASE_URL="your-supabase-connection-string"
# Kinde Auth
KINDE_CLIENT_ID="your-kinde-client-id"
KINDE_CLIENT_SECRET="your-kinde-client-secret"
KINDE_ISSUER_URL="https://yourdomain.kinde.com"
KINDE_SITE_URL="http://localhost:3000"
KINDE_POST_LOGOUT_REDIRECT_URL="http://localhost:3000"
KINDE_POST_LOGIN_REDIRECT_URL="http://localhost:3000"
# Supabase (for file uploads)
SUPABASE_URL="your-supabase-url"
SUPABASE_ANON_KEY="your-supabase-anon-key"# Generate Prisma Client
npx prisma generate
# Run migrations
npx prisma migrate dev
# (Optional) Seed the database
npx prisma db seednpm run devOpen http://localhost:3000 in your browser.
airbnb-clone/
βββ app/
β βββ actions/ # Server actions
β βββ api/ # API routes
β βββ components/ # React components
β βββ favorites/ # Favorites page
β βββ home/ # Property details page
β βββ lib/ # Utility functions
β βββ my-homes/ # User's properties
β βββ reservations/ # Reservations page
β βββ create/ # Create property flow
βββ prisma/
β βββ schema.prisma # Database schema
βββ public/ # Static assets
βββ components/
βββ ui/ # shadcn/ui components
The application uses the following main models:
- User - User account information
- Home - Property listings
- Favorite - User's favorite properties
- Reservation - Booking records
- Seamless sign-in/sign-up with Kinde Auth
- Protected routes and API endpoints
- User session management
- Multi-step property creation form
- Image upload to Supabase Storage
- Category-based organization
- Location selection with maps
- Real-time search with URL parameters
- Filter by location, guests, rooms, and bathrooms
- Persistent search state
- Date range selection
- Availability checking
- Booking confirmation
- Reservation management
Built with shadcn/ui for consistent, accessible components:
- Dialog modals
- Select dropdowns
- Cards
- Buttons
- Form inputs
- And more...
- Push your code to GitHub
- Import your repository in Vercel
- Add your environment variables
- Deploy!
# Or use Vercel CLI
vercel --prod- Create a new Supabase project
- Copy the connection string
- Run migrations:
npx prisma migrate deploy
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint
npx prisma studio # Open Prisma Studio (database GUI)
npx prisma migrate # Create/run migrationsContributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License.
Your Name - @okoyepeter98
Project Link: https://github.com/okoye-peter/airbnb-clone
Made with β€οΈ using Next.js and modern web technologies