Skip to main content

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

  1. Tap Profile tab
  2. See avatar + name + bio + location pill
  3. Tap menu items to navigate

3. Web ↔ Mobile parity

CapabilityWebMobile
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 routemy-ads.tsx
My Requests✅ inline in Requests tab via "My Requests" filtermy-requests.tsx
Health Records✅ in Profile sectionhealth-records.tsx
Subscribed Storessubscribed-stores.tsx
Contributions (charity)contributions.tsx
About KA26 link✅ in Settings✅ in Settings
QR Codemy-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

EndpointMethodPurpose
/api/auth/consumer-profileGET, PUTGet / update profile (name, bio, photo, services, alias, language)
/api/orders/consumerGETUnified orders list (store + eats) — but mobile only uses /api/store-orders
/api/adsGETAuthenticated user's ads
/api/contributionsGETCharity contribution history
/api/subscriptionsGETStores the user has subscribed to
/api/referralGETReferral 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 section
  • mobile/tests/screen-completeness.test.ts — every Profile sub-screen exists
  • mobile/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/consumer test 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.