Add optional identity verification and service-backed limits #21

Merged
tech merged 3 commits from kyc-20 into main 2026-09-12 10:12:01 +00:00
Owner

Users can now explore optional identity verification, see their current limits and upgrade benefits, and submit a passport photo plus a selfie holding it for simulated human review. Unverified, pending, correction-requested and denied accounts retain basic limits; approval refreshes the limits returned by the service.

The EN/RU flow includes guided selection, content/size validation, previews, replacement, review confirmation, retry, draft-discard protection, review reasons and a denial support placeholder. Shared sxchnge_kyc providers/services are reusable by mobile clients. LimitsProvider fetches LimitsService data following Sendico's backend-owned visible-limits boundary; widgets do not calculate entitlements.

UX and observability were planned first in docs/ux/kyc.md. Typed, nonblocking analytics distinguishes simulated submission from review observation and collects no document data. Photos remain local in memory, and preview cache entries are evicted on disposal.

Validation: 86 frontend tests; analyze app, sxchnge_kyc and sxchnge_analytics; Dart format; release web build. Browser selection of generated PNG samples reaches pending review. Tests cover 320px Russian at 1.6 text scale, accessibility labels/tap targets, status/limits failures, retries, denial, resubmission and route guards.

This is an explicit demo. Real authenticated uploads, document storage, staff backoffice review, support, server-enforced limits and server-side review analytics are not connected. Numeric limits are stub fixtures, not a product policy. See docs/implementation.md and docs/ux/kyc.md for integration boundaries.

Closes #20.

Users can now explore optional identity verification, see their current limits and upgrade benefits, and submit a passport photo plus a selfie holding it for simulated human review. Unverified, pending, correction-requested and denied accounts retain basic limits; approval refreshes the limits returned by the service. The EN/RU flow includes guided selection, content/size validation, previews, replacement, review confirmation, retry, draft-discard protection, review reasons and a denial support placeholder. Shared sxchnge_kyc providers/services are reusable by mobile clients. LimitsProvider fetches LimitsService data following Sendico's backend-owned visible-limits boundary; widgets do not calculate entitlements. UX and observability were planned first in docs/ux/kyc.md. Typed, nonblocking analytics distinguishes simulated submission from review observation and collects no document data. Photos remain local in memory, and preview cache entries are evicted on disposal. Validation: 86 frontend tests; analyze app, sxchnge_kyc and sxchnge_analytics; Dart format; release web build. Browser selection of generated PNG samples reaches pending review. Tests cover 320px Russian at 1.6 text scale, accessibility labels/tap targets, status/limits failures, retries, denial, resubmission and route guards. This is an explicit demo. Real authenticated uploads, document storage, staff backoffice review, support, server-enforced limits and server-side review analytics are not connected. Numeric limits are stub fixtures, not a product policy. See docs/implementation.md and docs/ux/kyc.md for integration boundaries. Closes #20.
tech added 1 commit 2026-09-12 07:29:09 +00:00
tech added the frontend label 2026-09-12 07:29:36 +00:00
tech self-assigned this 2026-09-12 07:29:36 +00:00
tech added this to the SXCHNGE project 2026-09-12 07:29:37 +00:00
tech added 1 commit 2026-09-12 07:29:50 +00:00
tech added 1 commit 2026-09-12 10:11:53 +00:00
tech merged commit a3646e85ba into main 2026-09-12 10:12:01 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tech/sxchnge#21