Parse field-specific errors from server response instead of showing
generic "Validation error" message. Applies to both request() and
upload() methods in the API client.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Sort by monthlyPrice when periodType=MONTHLY instead of always dailyPrice
- Fix client-side pagination in MyBookingsPage and LandlordListingsPage
- Compute avgRating in /rentals/mine endpoint so dashboard shows ratings
- Fix falsy filter for avgRating=0 on landlord dashboard
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add subscription tiers (Basic/Pro/Business) with listing limits and dynamic commission
- Add daily/monthly period filter on rentals page
- Add landlord dashboard with earnings chart, stat cards, property performance
- Add landlord subscription management page
- Add tenant dashboard with upcoming stays
- Add business model documentation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Camera button now triggers file input -> uploads to POST /users/avatar -> updates auth context and preview.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- SellItemPage: real file upload + API listing creation + activate
- CreateProfilePage: save profile via PUT /users/profile
- ProductDetailPage: wire edit/delete/message buttons, show edit for owner
- ListingCard: persist favorites via API, show real images
- Footer: connect newsletter subscribe to API
- Router: add /dashboard/listings and /dashboard/saved routes
- Backend: add GET /listings/favorites endpoint
- New pages: MyListingsPage, SavedItemsPage
- Fix unused imports causing build failures
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>