Profile Live
The consumer's identity surface + entry point to all owned content (orders, ads, requests, health records, contributions).
1. Overview
Clean minimal layout — large centered avatar, system alias (e.g. "EchoNova"), bio, location pill (interactive). Below are menu items linking to: Orders, Requests, Health, Stores (subscribed), Contributions, Settings, About KA26.
Profile screen is intentionally NOT linked to Reels Profile — Reels Profile is its own surface accessed exclusively from the Reels page (per project memory: influence-first redesign).
2. User journey
- Tap Profile tab
- See avatar + name + bio + location pill
- Tap menu items to navigate
3. Web ↔ Mobile parity
| Capability | Web | Mobile |
|---|---|---|
| Avatar + bio | ✅ | ✅ |
| Interactive location pill (tap to change) | ✅ Modal with GPS / search / reset | ✅ |
| My Orders | ✅ /orders (unified store + eats list) | ✅ orders.tsx |
| My Ads | ✅ /profile/ads route | ✅ my-ads.tsx |
| My Requests | ✅ inline in Requests tab via "My Requests" filter | ✅ my-requests.tsx |
| Health Records | ✅ in Profile section | ✅ health-records.tsx |
| Subscribed Stores | ✅ | ✅ subscribed-stores.tsx |
| Contributions (charity) | ✅ | ✅ contributions.tsx |
| About KA26 link | ✅ in Settings | ✅ in Settings |
| QR Code | ✅ | ✅ my-qr.tsx |
4. Key components
- Web:
src/app/(consumer)/profile/page.tsx,src/app/(consumer)/profile/ads/page.tsx,src/app/(consumer)/profile/reels/page.tsx - Mobile:
mobile/app/(tabs)/profile.tsx,mobile/app/edit-profile.tsx,mobile/app/my-ads.tsx,mobile/app/my-requests.tsx,mobile/app/health-records.tsx,mobile/app/subscribed-stores.tsx,mobile/app/contributions.tsx,mobile/app/my-qr.tsx,mobile/app/reels-profile.tsx
5. APIs
| Endpoint | Method | Purpose |
|---|---|---|
/api/auth/consumer-profile | GET, PUT | Get / update profile (name, bio, photo, services, alias, language) |
/api/orders/consumer | GET | Unified orders list (store + eats) — but mobile only uses /api/store-orders |
/api/ads | GET | Authenticated user's ads |
/api/contributions | GET | Charity contribution history |
/api/subscriptions | GET | Stores the user has subscribed to |
/api/referral | GET | Referral count + code |
6. Database touchpoints
Consumer— base profile (name,email,phone,bio,photoUrl,alias,services,language)ConsumerLocation— saved addresses for delivery autocomplete- Joins for sub-pages:
Product(ads),Request,Prescription,Subscription,Contribution,Reel
7. Business logic
- System alias: every consumer gets a unique 2-word alias (e.g. "EchoNova") generated at signup. Used for anonymous posting.
- Bio: max 150 chars, line-clamp-3 in display, editable from Reels Profile only (intentional — keeps main profile minimal)
- Location pill uses 3-step flow: GPS → Nominatim reverse geocoding → save to localStorage. Manual fallback via city/PIN search.
- Services I Offer: 32 categories (Driver, Plumber, etc.) + custom — used to broadcast Requests to matching providers.
8. Feature flags / env vars
None.
9. Tests
tests/build-integrity.test.ts— Profile sectionmobile/tests/screen-completeness.test.ts— every Profile sub-screen existsmobile/tests/mobile-code-integrity.test.ts— profile API contracts (/api/auth/consumer-profile,/api/orders, etc.)
10. Known gotchas
- Edit Bio is on Reels Profile, not main Profile — confused multiple users. Intentional per influence-first redesign, but worth knowing.
- Mobile's
/api/orders/consumertest was outdated: mobile actually only calls/api/store-orders. Test was fixed 2026-04-17. - Profile photo upload: 400×400 cover-cropped, stored in GCS. Client-side preview before upload.
11. Related
- Settings · Authentication · Reels (Reels Profile)