16 Commits

Author SHA1 Message Date
delta-lynx-89e8
54e1cadfc9 fix: show detailed validation error messages on client
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>
2026-02-23 06:26:43 -08:00
delta-lynx-89e8
c0123ac776 feat: QA test suite (12 stages, 205 tests) + Chrome DevTools MCP config
- Add tests/ directory with 12 bash/curl/jq test stages covering all API endpoints
- Add tests/lib/common.sh shared library with assertions and helpers
- Add tests/run-all.sh orchestrator script
- Update CLAUDE.md with test data reference and DevTools MCP docs
- Increase dev rate limit to 5000 for test suite runs
- Configure Chrome DevTools MCP in project settings

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 06:17:16 -08:00
delta-lynx-89e8
167e5a9a8b fix: add trust proxy for express-rate-limit behind nginx
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 04:37:55 -08:00
delta-lynx-89e8
dc07f2a98d fix: price sorting by period type, pagination, avgRating on dashboard
- 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>
2026-02-22 17:03:23 -08:00
delta-lynx-89e8
dcd2dcb841 feat: subscription tiers, period filter, dashboards, docs
- 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>
2026-02-22 16:19:33 -08:00
delta-lynx-89e8
68beca8f30 Update seed with real rental image paths
Replace placeholder image paths with actual downloaded images
for all 6 rental categories (15 images total).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 15:39:50 -08:00
delta-lynx-89e8
d99d67375b Fix payout account-status route ordering
Move /account-status route before /:id to prevent Express
from matching "account-status" as a payout ID parameter.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 15:36:35 -08:00
delta-lynx-89e8
dbbbbd26f4 Add rental system: listings, bookings, payments, payouts, reviews
Full rental marketplace with 6 categories (apartment, house, car, motorcycle, bicycle, ebike).
Booking workflow: create → confirm → pay → active → complete → payout.
Landlord dashboard, admin moderation, availability calendar, Stripe Connect payouts.
14 QA bugs found and fixed including validator schemas, API response types, HTTP methods.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 15:33:29 -08:00
delta-lynx-89e8
8961fa701a Wire avatar upload on Create/Update profile pages
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>
2026-02-22 13:09:41 -08:00
delta-lynx-89e8
05c696d68a Fix all 22 audit issues: dead buttons, missing pages, broken links
- ChatPage: add scroll-to-bottom, sending state, conversation routing
- SettingsPage: wire change password, login activity, delete account modals
- NotificationsPage: make notifications clickable, navigate to offers/messages
- LoginPage: add forgot password modal, social login feedback
- SignUpPage: social signup feedback, link to terms/privacy
- ProductDetailPage: wire share (copy link) and report buttons
- Footer: replace all href="#" dead links with proper React Router links
- Create static pages: About, Privacy, Terms, Help, Contact, Returns
- Add all static page routes to router
- api.delete now supports request body (for account deletion)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 12:50:15 -08:00
delta-lynx-89e8
e72f3133c0 Fix login endpoint leaking sensitive user fields
Use select clause instead of spreading full user object to prevent
resetToken, resetTokenExpiry, and other internal fields from being
returned in the login response.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 12:40:09 -08:00
delta-lynx-89e8
d09c998d51 QA fixes: real listing creation, profile save, favorites, missing pages
- 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>
2026-02-22 12:30:03 -08:00
delta-lynx-89e8
6722d1d4a1 Add Figma API key to server-info.md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 07:45:15 -08:00
delta-lynx-89e8
f2e2338e8f Fix listing activation and chat conversation bugs
- Add POST /listings/:id/activate endpoint to bypass Stripe in dev
- Fix chat conversation creation crash when listingId is null/undefined
- Properly handle Prisma unique constraint for conversations

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 07:25:31 -08:00
delta-lynx-89e8
9f399291ee Add deployment docs and fix dotenv loading
- Add deploy/server-info.md with full server access, DB, SSL, nginx info
- Add dotenv dependency for .env file loading on server
- Server running at https://marketplace.173.212.212.157.sslip.io

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 07:18:52 -08:00
delta-lynx-89e8
b37b734c82 Initial marketplace implementation
Full-stack marketplace for buying/selling second-hand items.
React 19 + TypeScript + Tailwind CSS v4 frontend with 17 screens,
Express + Prisma + Socket.io backend, Stripe payments, JWT auth.

Deployed at https://marketplace.173.212.212.157.sslip.io/

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 07:00:44 -08:00