- OnboardingScreen used min-h-dvh instead of h-dvh, so the scrollable content
area never actually clipped/scrolled internally; the page just grew and the
primary CTA button scrolled away with it instead of staying visible. Switch
to h-dvh and give each step's button a sticky footer (StepFooterButton).
- SwipeCard crashed with "Cannot read properties of null" when a candidate
had no photos, because the backend could return null instead of an empty
array; guard with optional chaining.
- New /onboarding/photos step (upload/delete grid, needs >=1 photo to
continue), inserted as step 2 right after basic info.
- Pending screen gets an "edit your info" entry point into the wizard;
Rejected screen's edit button now goes there too instead of just
the read-only profile page.
- Step 1's back button now returns to /home instead of /login when
the user is already onboarded (was previously always /login).
- Progress bar segments become clickable to jump directly to any step
once the user is already onboarded.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Multi-stage Dockerfile producing a minimal runtime image via
next.config.ts's output:"standalone". NEXT_PUBLIC_API_URL is taken as
a build arg since it gets baked into the client bundle at build time.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Phone+OTP auth, staged onboarding, admin-approval-gated home screen,
and the full discovery/match/chat UI (swipe deck with drag gestures,
match modal, profile detail, filters, messages/chat) wired to the
real backend, styled after a Figma dating-app UI kit.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>