Verification platform

Verifier App for UzSU

A production membership platform that connects subscription choices, member records, digital QR passes, public verification, and administration in one workflow.

Uzbekistan's Students Union 2025 Architecture, full-stack development, and payments workflow Live

Screens

  • UzSU membership verification portal presented on desktop and mobile
  • UzSU membership verification portal with navigation and a digital QR pass
    One shell, two roles Members and administrators sign in to the same product; access decides what the sidebar lists.
    The QR pass The code replaces the paper card, and points at the record rather than carrying it.
  • Public UzSU membership verification form for a token or QR code
    One field, one button A member token or a scanned QR goes in; valid or not comes back, and nothing else.
  • UzSU standard and premium membership plan selection
    The region chip Changing the country changes the plans on offer, and nothing else about the product forks.
    Free beside paid Standard and premium sit side by side, monthly or yearly, before any payment handoff.

Desktop and mobile

A prepared portfolio composite shows the verification product across desktop and mobile without cropping the interface.

Authenticated portal

The authenticated portal keeps membership access, verification, and administration inside one focused product surface.

Public verification

A deliberately narrow public flow turns a member token or scanned QR code into a verification result.

Plan selection

Regional plan selection connects the public membership journey to the Stripe subscription layer.

1 / 4

System

Membership choice Stripe subscription Member record Digital QR pass Public verification Administration premium free subscription status manage Membership-to-verification workflow Membership choice Stripe subscription Member record Digital QR pass Public verification Administration premium free subscription status manage Membership-to-verification workflow

Features

Sessions and logout-all

Sign in on many devices. One action revokes every session.

QR pass grace period

The pass keeps working while a payment is past due.

Blocked pass reveals nothing

No name, email, photo or expiry. Only valid or not.

Atomic password setup and reset

72 hours to set up, 30 minutes to reset, one transaction.

Admin sessions and link issuance

12-hour admin sessions. Admins issue links, never set passwords.

In-app notification centre

Ten account, billing and support events, tracked per member.

Decisions and tradeoffs

Problems we hit

History rows shadowing active membership

Problem

A member can accumulate multiple membership rows: a historical cancelled record alongside a current active one.

Our solution

Derive the status, never read it

A canonical projection derives the authoritative status, preventing stale or cancelled rows from overriding a valid paid entitlement and vice versa.

Concurrent password links causing conflicts

Problem

Multiple simultaneous forgot-password requests could deliver competing active links to the same member.

Our solution

One lease, one idempotency key

One short-lived database lease per member and purpose, with the token ID as the email provider's idempotency key, so concurrent requests produce only one link and provider retries do not re-deliver it.

Declared file type is unverifiable

Problem

Browser-declared MIME types and original filenames cannot confirm that an uploaded file is genuinely an image.

Our solution

Decode the bytes, re-encode the result

The server decodes the raw bytes to confirm the format, rejects multi-frame or oversized files, and re-encodes the result as a clean JPEG.

Reset secrets exposed in browser history

Problem

Password setup and reset secrets passed in query strings appear in server logs and browser history.

Our solution

Move the secret to the URL fragment

Fragments never reach the server. The browser retains the fragment only in memory during a temporary validation failure, to allow a safe retry.

Decisions we made

Membership is data, not a generated image

Decision

The central decision was to model membership as data, not as a generated image.

Why we made it

The QR pass is only a portable pointer into the current record. Expiry, plan, and active status remain server-controlled, so a previously issued pass cannot become a permanent source of truth by itself.

The public surface stays narrow

Decision

The second decision was to keep the public verification surface separate from the richer member cabinet and administration views.

Why we made it

Public verification should reveal only the result needed for the interaction; profile, billing, and internal management information stay behind authenticated access.

Signup and operations share one plan definition

Decision

The application also connects public acquisition and internal operations.

Why we made it

The same plan definitions shown during signup feed the membership and subscription workflow, rather than creating a disconnected marketing page that staff later reconcile manually.

Next

Contact

Let's talk.

For professional opportunities, collaborations, or selected freelance work.

Open to conversations Frankfurt, Germany Europe/Berlin