π Live Demo: https://flex-living-dashboard-3xbs.vercel.app/properties
The Flex Living Reviews Dashboard is a comprehensive review management system that enables property managers to curate and publish guest reviews for their premium properties. The system integrates with the Hostaway Reviews API (mocked) and provides both manager-facing and guest-facing interfaces.
- Next.js 15 (App Router) - React framework with server-side rendering
- React 18 - UI component library
- Tailwind CSS - Utility-first CSS framework
- Lucide React - Icon library
- Next.js API Routes - Serverless functions for API endpoints
- Local Storage - Persistence layer for published reviews (demo purposes)
- ESLint - Code linting
- TypeScript (optional) - Type safety
app/
βββ api/reviews/hostaway/ # API endpoint for review data
βββ components/ # Reusable UI components
β βββ Dashboard.js # Manager dashboard
β βββ ReviewCard.js # Modular review display
β βββ Navigation.js # App-wide navigation
βββ dashboard/ # Manager dashboard route
βββ properties/ # Public property listing
βββ property/[id]/ # Individual property pages
βββ utils/ # Helper functions
1. Mock API Integration
- Created realistic API responses matching Hostaway structure
- Normalized review data for consistent frontend consumption
- Added property ID mapping for reliable navigation
2. Modular Review Display
- ReviewCard component with multiple display variants (table/card)
- Reusable across dashboard and property pages
- Consistent styling and behavior
3. Persistent Review Publishing
- LocalStorage for demo (easily replaceable with database)
- Reviews remain published across sessions
- Manager can update selections anytime
4. Role-Based Access
- Simple localStorage-based authentication for demo
- Separate navigation for managers vs. guests
- Protected dashboard routes
Purpose: Fetches and normalizes review data
Response Structure:
{
"status": "success",
"result": [
{
"id": 7453,
"type": "guest-to-host",
"status": "published",
"rating": 8,
"publicReview": "Great stay!",
"categories": [...],
"propertyId": 848961949,
"guestName": "John Doe",
"listingName": "2B N1 A - Shoreditch",
"channel": "Airbnb",
"isSelected": false
}
]
}Data Transformations:
- Calculates average ratings from category ratings
- Maps property names to consistent IDs
- Normalizes channel data
- Converts ratings to 5-star scale for display ( still buggy *_^ )
Property Performance
- Displays review counts and average ratings per property
- Visual hierarchy for easy scanning
- Search functionality for large property lists
Filtering & Sorting
- Multi-criteria filtering: property, rating, channel, date range
- Bidirectional sorting: date, rating
- Real-time filter updates
- Persistent filter states during session
Trend Analysis
- Identifies recurring issues from low-rated reviews
- Keyword extraction from review text
- Category performance tracking
Review Publishing
- Checkbox selection with visual feedback
- Bulk publish/unpublish operations
- Published status indicators
- Confirmation dialogs for destructive actions
Property Browsing
- Responsive grid layout
- Filtering (price, guests, type)
- Search by location or property name
- Sort by price, rating, or featured
Property Details
- Flex Living branded design (alittle bit poor due to time constraints)
- Only shows manager-approved reviews
- Guest-to-host reviews only (relevant content)
- Rating display converted to 5-star scale ( Also still buggy _ )
Google Places API can provide review data through:
- Places Details endpoint
- Requires API key and Place ID
- Returns maximum 5 most relevant reviews
- Real-time data but limited quantity
- Cost: Pay-per-request pricing model
- Rate Limits: Quotas on API calls
- Data Limitations: Only 5 reviews, no historical data
- Authentication: Requires Google Cloud setup
- Place ID Mapping: Each Flex Living property must be mapped to corresponding Google Place ID
- Limited Business Profiles: Short-term rental properties often lack established Google Business listings or have inconsistent presence
- Data Inconsistency: Property names in Google may not match internal Flex Living naming conventions
- Review Attribution: Difficulty in matching Google reviews to specific booking periods or guest stays
-
1. Web Scraping Pros: Could potentially access full review data Cons: Legally risky π
-
2. Manual Data Entry Pros: Simple Cons: Time-consuming, prone to errors, and not scalable
- Primary reviews from Hostaway (comprehensive)
- Google Reviews integration should be considered as a future enhancement once:
- Core dashboard is stable and proven valuable
- Property-to-Place ID mapping is established
- Caching Google data to minimize API costs is implemented
- Node.js 16+ installed
- npm or yarn package manager
# Clone the repository
git clone [repository-url]
# Navigate to project
cd flex-living-dashboard
# Install dependencies
npm install
# Run development server
npm run dev
# Open browser to http://localhost:3000No environment variables required for demo.
- Navigate to
/properties - Click "Manager Login" and confirm
- Access Dashboard from navigation
- Select reviews to publish
- Click "Publish Selected Reviews"
- View published reviews on property pages
- Browse properties at
/properties - Use filters to find suitable properties
- Click property to view details
- See only manager-approved reviews
- β Hostaway API integration (mocked)
- β Review normalization and data parsing
- β Per-property performance metrics
- β Multi-criteria filtering and sorting
- β Trend analysis and issue detection
- β Review selection and publishing
- β Flex Living branded property pages
- β Manager-controlled review display
- β Google Reviews exploration documented
- π― Property search functionality
- π― Responsive design for all devices
- π― Role-based navigation
- π― Persistent review publishing
- π― Quick property navigation from dashboard
- π― Visual status indicators
- Replace localStorage with database
- Implement proper authentication
- Add real Hostaway API integration
- Implement caching strategy
- Add error boundaries and loading states
- presist the "clear all selection" button state
- Fix current bugs (most noticed one -> rating display converted to 5-star scale)
- Review response functionality
- Automated review quality scoring
- Email notifications for new reviews
- Advanced analytics dashboard
- Multi-language support
- Problem: Inconsistent property identification
- Solution: Created utility function to generate consistent IDs
- Impact: Reliable navigation between all pages
- Problem: Host reviews shown to guests in the property page
- Solution: Filtered by review type on property pages
- Impact: More relevant content for potential guests
- Problem: Review selections lost on refresh
- Solution: LocalStorage persistence with state synchronization
- Impact: Better user experience for managers
- Modular component architecture
- Reusable utility functions
- Consistent naming conventions
- React hooks for state management
- Responsive design patterns
- Inline code comments
- Setup and deployment guides
Project developed by: Ziad Rohayiem ft. The Great Performer: Claude Opus 4 Date: 25/09/2025 Version: 1.0.0