# QRCupid — Product Requirements Document

## Original Problem Statement
Build a complete dating platform "qrcupid" for subscribers to create a personalized dating profile and share it instantly with an individual QR code. Perfect for singles events, networking, bars, coffee shops, and real-world connections. (Full feature list: accounts, dating profiles, search & discovery, communication, membership & payments via Authorize.Net, admin panel, security.)

## User Choices / Decisions
- Auth: JWT email/password (bcrypt). Social login deferred.
- Payments: Full UI with MOCKED Authorize.Net flow (no real charges yet).
- QR: Each profile has its own public QR linking to `/u/{slug}`.
- Email verification & password reset: MOCKED (tokens surfaced in API responses / logs).
- Admin panel: included.

## Architecture
- Backend: FastAPI (`/app/backend/server.py`), MongoDB (motor). UUID string ids, never returns `_id`.
- Frontend: React 19 + React Router 7, Tailwind (neo-brutalist design), recharts, react-qr-code, sonner toasts.
- Auth: JWT (7-day), Bearer header + httpOnly cookie. AuthContext in `/app/frontend/src/context/AuthContext.jsx`.

## User Personas
- Single attending events who wants a scannable dating profile.
- Premium subscriber wanting advanced filters & "who likes you".
- Admin moderating users, reports, and viewing revenue.

## Implemented (June 2026)
- Auth: register/login/logout/me, mocked email verification (verified badge), mocked password reset, brute-force lockout.
- Profiles: full editor (bio, age, gender, orientation, location, interests, occupation, education, photo gallery base64, avatar, privacy toggle), public profile page + individual QR card (copy/share).
- Discovery: Browse with filters (gender, age range, location, interest, online-now, premium recently-active), keyword Search.
- Communication: likes/favorites, mutual matches, direct messaging with read receipts & image sharing, block, report.
- Membership: Free / Premium Monthly ($19.99) / Yearly ($149.99), mocked Authorize.Net checkout, payment history, cancel subscription, premium-gated "who likes you" (402).
- Admin: analytics dashboard (revenue & membership charts), user management (suspend/verify/delete), report review, payments table, photo moderation.
- Pages: Home, Pricing, About, Contact, Login, Register, Forgot Password, Dashboard, My Profile, Browse, Search, Matches, Favorites, Messages, Settings, Member Detail, Public Profile, Upgrade + 5 admin pages.
- Tested: 29/29 backend pytest pass; frontend flows 100% (testing agent iteration_1).

## Backlog / Remaining
- P1: Real Authorize.Net integration (sandbox keys), recurring billing webhooks.
- P1: Real email provider (Resend/SendGrid) for verification & reset.
- P2: Social login (Google/Apple/Facebook), two-factor auth, distance-based geolocation filtering, image moderation AI, GDPR export/delete tooling, rate limiting middleware.
- P2: Refactor server.py into routers; add payments/reports indexes.

## Test Credentials
- Admin: admin@qrcupid.com / Admin@123
- Demo users: maya@demo.com, jordan@demo.com, sofia@demo.com, etc. — all Demo@123
- Test card: 4111 1111 1111 1111

## Next Tasks
1. Wire real Authorize.Net (collect sandbox API Login ID + Transaction Key from user).
2. Integrate email provider for verification/reset.
3. Add social login if desired.
