A modern, Airbnb-like property management system built for property owners who want to simplify their vacation rental business.
Project Name: InCA Homes
Client: Property owner wanting simplified Airbnb-like system
- Property Management Dashboard - Complete admin panel for managing properties
- Customer Booking Website - Beautiful, responsive website for guests
- Airbnb Integration - Sync properties with Airbnb (future feature)
- Mobile-Responsive Design - Works perfectly on all devices
- Self-Manageable - Easy for clients to manage independently
- Zero Monthly Costs - Free hosting and services initially
- Framework: Next.js 14 (React)
- Styling: Tailwind CSS + Headless UI
- Icons: Lucide React
- Forms: React Hook Form + Zod validation
- State: React Context + useState
- Image Handling: Next.js Image optimization
- Runtime: Node.js (Vercel Serverless Functions)
- Framework: Next.js API Routes
- Authentication: JWT + bcrypt
- File Upload: Formidable + Cloudinary
- Validation: Zod schemas
- Primary DB: Supabase (PostgreSQL - Free tier)
- ORM: Native SQL queries with pg client
- Storage: 500MB (thousands of properties)
- Features: Built-in auth, real-time, auto-backups
- Hosting: Vercel (Free Hobby Plan)
- Images: Cloudinary (Free - 25GB bandwidth)
- Domain: .vercel.app initially (custom domain $10/year optional)
- Analytics: Vercel Analytics (free)
- Monitoring: Built-in Vercel monitoring
- SSL: Automatic (Vercel included)
- Node.js 18+
- npm or yarn
- Supabase account
- Cloudinary account
-
Clone the repository
git clone <repository-url> cd inca-homes-property-management
-
Install dependencies
npm install
-
Set up environment variables Create a
.env.localfile in the root directory:# Database DATABASE_URL=postgresql://...supabase... NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key # Authentication JWT_SECRET=your-super-secret-key-here NEXTAUTH_URL=https://incahomes.vercel.app # Image Storage CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name CLOUDINARY_API_KEY=your_cloudinary_api_key CLOUDINARY_API_SECRET=your_cloudinary_api_secret # Application Configuration NEXT_PUBLIC_APP_URL=https://your-app-name.vercel.app # For production # NEXT_PUBLIC_APP_URL=http://localhost:3000 # For local development
-
Set up the database
- Create a new Supabase project
- Run the SQL commands from
database/schema.sqlin your Supabase SQL editor
-
Run the development server
npm run dev
-
Open your browser Navigate to http://localhost:3000
src/
├── app/ # Next.js App Router
│ ├── admin/ # Admin panel pages
│ │ ├── login/ # Admin login
│ │ └── page.tsx # Admin dashboard
│ ├── api/ # Backend API routes
│ │ ├── auth/ # Authentication endpoints
│ │ ├── properties/ # Property management
│ │ └── upload/ # File upload
│ ├── properties/ # Customer-facing property pages
│ └── page.tsx # Customer homepage
├── components/ # React components
│ ├── admin/ # Admin panel components
│ ├── customer/ # Customer-facing components
│ ├── shared/ # Shared components
│ └── ui/ # UI components
├── lib/ # Utility libraries
│ ├── auth.ts # Authentication helpers
│ ├── supabase/ # Database client
│ ├── cloudinary.ts # Image upload
│ └── utils.ts # Helper functions
└── types/ # TypeScript definitions
The system uses the following main tables:
- users - Admin authentication and user management
- properties - Property listings with images and amenities
- bookings - Booking information (synced from Airbnb)
- analytics - Event tracking and analytics data
POST /api/auth/login # Admin login
POST /api/auth/logout # Admin logout
GET /api/auth/me # Get current user
GET /api/properties # List properties (public)
POST /api/properties # Create property (admin)
GET /api/properties/[id] # Get property details
PUT /api/properties/[id] # Update property (admin)
DELETE /api/properties/[id] # Delete property (admin)
POST /api/upload # Upload images
DELETE /api/upload/[id] # Delete image
- Primary: #3B82F6 (Blue)
- Secondary: #EF4444 (Red - Airbnb inspired)
- Success: #10B981 (Green)
- Warning: #F59E0B (Yellow)
- Headings: Inter (Bold)
- Body: Inter (Regular)
- Buttons: Inter (Medium)
- Cards: Rounded corners + subtle shadows
- Buttons: Rounded + hover states
- Forms: Clean inputs + validation states
- Homepage: Hero section + property grid + search
- Property Details: Photo gallery + amenities + booking widget
- Search: Filters by location, price, guests, dates
- Mobile-first: Responsive design for all devices
- Login Page: Secure admin authentication
- Dashboard: Overview stats + recent activity
- Properties: Grid view + add/edit forms
- Analytics: Charts + booking reports
- Settings: System configuration
- Push your code to GitHub
- Connect your repository to Vercel
- Add environment variables in Vercel dashboard:
- Set
NEXT_PUBLIC_APP_URLto your Vercel app URL (e.g.,https://your-app-name.vercel.app) - Add all other environment variables from
.env.local
- Set
- Deploy
Important: For production deployment, ensure NEXT_PUBLIC_APP_URL is set to your actual Vercel domain, not localhost:3000. The property detail pages and API calls depend on this URL being correct.
The application can be deployed to any platform that supports Next.js:
- Netlify
- Railway
- DigitalOcean App Platform
- AWS Amplify
- Page load time: < 3 seconds
- Mobile responsiveness: 100%
- Uptime: 99.9% (Vercel SLA)
- SEO score: > 90 (Lighthouse)
- Property management time: Reduced by 80%
- Booking inquiries: Tracked and organized
- Client satisfaction: Easy self-management
- Cost savings: $50-200/month vs alternatives
- Airbnb API integration
- Multi-language support
- Advanced analytics + reporting
- Email marketing integration
- Guest communication system
- Calendar sync (Google, Outlook)
- Payment integration (Stripe)
- Review management system
- Multi-tenant (multiple property owners)
- White-label solution
- API for third-party integrations
- Advanced booking management
- Revenue optimization tools
- User manual for client
- Developer documentation
- API documentation
- Deployment guide
- 1-hour training session for client
- Video tutorials for common tasks
- Admin panel user guide
- Bug fixes and updates
- Feature requests evaluation
- Performance monitoring
- Security updates
- Live Website - https://incahomes.vercel.app
- Admin Dashboard - https://incahomes.vercel.app/admin
- Source Code - GitHub repository
- Documentation - User guide + technical docs
- Training - Client onboarding session
- Support - 30-day post-launch support
This project is licensed under the MIT License.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project delivers a complete, professional property management system for $0/month hosting costs, with the flexibility to scale as the business grows.