ProjectR Docs
Screen MapMobile app

Legal & support

Mobile app: every screen, state and flow in Legal & support.

11 screens and overlays, 50 states, 0 flows. Frames show a real screenshot where one was captured and a wireframe card where the state needs data or conditions a device run cannot produce.

Screens and states

Privacy Policy

Privacy Policy (iOS)Privacy Policy (Android)
Screen(public)/privacy-policy

Privacy Policy

Bundled PDF of the privacy policy, readable signed out.

src/app/(public)/privacy-policy.tsx

Entry

  • Login footer link
  • Deep link /privacy-policy

Exits

  • Back → previous screen

States · 3

Loading
Loading Privacy Policy... · Spinner while the PDF renders.src/features/settings/components/legal/legal-pdf-viewer.tsx:108
Error
Unable to Load Document · PDF failed to render; Retry button.src/features/settings/components/legal/legal-pdf-viewer.tsx:147
Error
Document unavailable · Alert when the external open fallback fails; iOS only offers open externally.src/features/settings/components/legal/legal-pdf-viewer.tsx:84

Terms of Service

Terms of Service (iOS)Terms of Service (Android)
Screen(public)/terms-of-service

Terms of Service

Bundled PDF of the terms, readable signed out.

src/app/(public)/terms-of-service.tsx

Entry

  • Login footer link
  • Deep link /terms-of-service

Exits

  • Back → previous screen

States · 2

Loading
Loading Terms of Service... · Spinner while the PDF renders.src/features/settings/components/legal/legal-pdf-viewer.tsx:108
Error
Unable to Load Document · PDF failed to render; Retry button.src/features/settings/components/legal/legal-pdf-viewer.tsx:147

Campaign page

Campaign page (iOS)Campaign page (Android)
Screen(public)/marketing/[slug]

Campaign page

Campaign landing page from the dashboard with features, benefits and CTAs.

src/app/(public)/marketing/[slug].tsx

Entry

  • Deep link /marketing/slug
  • Home carousel
  • Campaign links

Exits

  • Go Back → Home
  • Primary or secondary CTA → link or screen

States · 9

Edge
Blank screen without slug · No slug param renders nothing.src/app/(public)/marketing/[slug].tsx:19
Loading
Loading campaign... · Campaign query still undefined.src/features/marketing/components/marketing-page.tsx:160
Error
Campaign not found · Missing, unpublished or outside its time window all look the same; Go Back.src/features/marketing/components/marketing-page.tsx:171
Error
Cannot open link · Danger toast: Unable to open this link, or This campaign link is not available.src/features/marketing/components/marketing-page.tsx:86
Edge
CTA only with label and link · Primary and secondary buttons render only when both label and link are set.src/features/marketing/components/marketing-page.tsx:112
Offline
Loader spins offline · Query stays undefined with no timeout or error state.src/features/marketing/hooks/use-convex-marketing.ts:36
Error
Cannot open link toast · CTA link is invalid or unavailablesrc/features/marketing/components/marketing-page.tsx:86
Edge
Info campaign renders HTML · Info campaigns show contentHtml; others show description and benefit rowssrc/features/marketing/components/marketing-page.tsx:117
Edge
CTA needs text and link · Buttons render only when both text and link existsrc/features/marketing/components/marketing-page.tsx:108

Terms of Service

Privacy Policy

Return Policy

Shipping Policy

Loyalty Terms

FAQ

FAQ (iOS)FAQ (Android)
Screenprofile/settings/support/faq

FAQ

Accordion answers in six categories, plus a support email link.

src/app/(app)/(tabs)/profile/settings/support/faq.tsx

Entry

  • Profile FAQ row

Exits

  • Email link → mail app
  • Email fallback → copied toast
  • Back → Profile

States · 2

Edge
Static content · No loading or error state; no path to Contact Ussrc/app/(app)/(tabs)/profile/settings/support/faq.tsx:146
Success
Email Copied · mailto fails or throws; address copied to clipboardsrc/app/(app)/(tabs)/profile/settings/support/faq.tsx:46

Captured states

FAQ, Static content (iOS)FAQ, Static content (Android)
Static content

Contact Us

Contact Us (iOS)Contact Us (Android)
Screenprofile/settings/support/contact-us

Contact Us

Send a support message tied to the signed-in account.

src/app/(app)/(tabs)/profile/settings/support/contact-us.tsx

Entry

  • Profile Contact Us row

Exits

  • Send Message → Profile
  • Sign in → login sheet
  • Back → Profile

States · 8

Loading
Profile loading · Spinner Loading profile...src/app/(app)/(tabs)/profile/settings/support/contact-us.tsx:214
Gate
Guest · Sign in to contact us; contact-signin-gatesrc/app/(app)/(tabs)/profile/settings/support/contact-us.tsx:229
Error
Validation · Category, subject 3 to 100, message 10 to 2000 characterssrc/app/(app)/(tabs)/profile/settings/support/contact-us.tsx:41
Loading
Submitting · Button loading and disabledsrc/app/(app)/(tabs)/profile/settings/support/contact-us.tsx:324
Success
Message Sent · Toast We received your message; returns to Profilesrc/app/(app)/(tabs)/profile/settings/support/contact-us.tsx:185
Error
Failed to Send · Mutation throws; toast Something went wrongsrc/app/(app)/(tabs)/profile/settings/support/contact-us.tsx:195
Gate
Session lost mid-form · Warning toast Sign In Required then login sheetsrc/app/(app)/(tabs)/profile/settings/support/contact-us.tsx:153
Edge
success false silent · Mutation resolves without success; no feedback or navigationsrc/app/(app)/(tabs)/profile/settings/support/contact-us.tsx:185

Captured states

Contact Us, Guest (iOS)Contact Us, Guest (Android)
Guest
Contact Us, Message Sent (iOS)Contact Us, Message Sent (Android)
Message Sent

On this page