Skip to main content
Skip to main content
Anteyko

Case Study

TRM Oferta: online registration and public offer acceptance (end‑to‑end)

Full product flow: registration, public offer acceptance with audit trail, PDF proof with seal/signature, admin panel. Legally compliant, mobile‑first.

3Steps in UX flow
9+Audit fields per record
Year: 2026Industry: EdTech / LegalTimeline: 2 weeks

Problem

An education company needed to collect legally binding offer acceptance from students (including minors with legal guardians) online, generate PDF confirmations with official seal and signature, and store a tamper‑proof audit trail — all without manual paperwork.

Constraints

  • Must handle adult and minor registration flows differently
  • Legal guardian must accept offer for minors (explicit checkbox + data)
  • PDF must include Cyrillic text, official seal, and director signature
  • Audit trail: IP, User‑Agent, timestamp, offer version, consent checkboxes
  • Admin panel protected by HTTP Basic Auth
  • Cloud PostgreSQL (Neon.tech) — no local file dependencies
  • Mobile‑first: 70%+ traffic from phones

Solution

Built a 3‑step conversion flow: registration (with conditional fields for minors), offer review and acceptance (progressive disclosure of full text), and deposit instructions with WhatsApp deep‑link. Each step validates before proceeding. Backend stores full audit trail in cloud PostgreSQL, generates branded PDF with Cyrillic support, seal, and signature. Admin panel with Basic Auth for viewing records, downloading PDFs, and changing statuses.

Deliverables

  • 3‑step registration + offer acceptance flow
  • Conditional UX for adult vs minor registration
  • PDF generation with Cyrillic, seal, and director signature
  • Cloud PostgreSQL with full audit trail (9+ fields per record)
  • Admin panel with HTTP Basic Auth
  • WhatsApp deep‑link for deposit follow‑up
  • Email notifications to admin (optional SMTP)
  • Production deployment with public URL

Screenshots / UX Flow

Step-by-step walkthrough of the product interface

01

Step 1: Adult registration — age toggle, full name, phone number

02

Step 2: Public offer preview — company info, acceptance checkbox

03

Step 2: Public offer full text expanded — scrollable legal document

04

Step 3: Offer signed — confirmation, record UUID, PDF download, student data summary

05

Step 1: Minor registration — guardian fields, warning banner, consent checkbox

06

Step 2: Minor offer — expanded text, dual consent checkboxes (student + guardian)

07

Step 3: Minor offer signed — confirmation with student and guardian data, PDF download

08

Admin panel: signed offers table — date, student, phone, guardian, status, actions (PDF, approve, reject)

Artifacts

Documents and deliverables from the project

3-step UX flow

Registration → Offer → Deposit

PDF with seal & signature

PDFKit + Cyrillic TTF

Audit trail schema

9+ fields per record

Admin panel

HTTP Basic Auth

Verification / Quality gates

6-phase checklist before release

01Build
Pass
02Adult flow E2E
Pass
03Minor flow E2E
Pass
04PDF Cyrillic rendering
Pass
05Audit trail completeness
Pass
06Admin auth security
Pass
All gates passed
6/6

Tech stack

Node.jsExpressPostgreSQLNeon.techPDFKitTailwind CSSNodemailer

Outcome

Launched in production. All registrations go through the digital flow — zero paper forms. Every acceptance has a tamper‑proof audit record. PDFs with seal and signature are generated instantly. Admin panel lets the team manage records without developer involvement.

Hard parts we solved

Legally binding digital acceptance without e‑signature provider

Kyrgyz civil law (Article 396 of the Civil Code of the Kyrgyz Republic) allows acceptance of a public offer through 'conclusive actions' — but the burden of proof lies with the company. We built an evidence bundle that holds up in court without an external e-signature service: each acceptance captures 9+ forensic fields (IP, User-Agent, timestamp with NTP sync, offer version hash, explicit consent checkboxes, guardian data if minor), generates a PDF with company seal and director signature as the legal confirmation document, and stores everything in an append-only PostgreSQL table with row-level immutability (no UPDATE/DELETE on acceptance records, enforced by database trigger). The system produces a complete 'proof of acceptance' artifact that satisfies both the client's legal counsel and the requirements of Article 393 of the Civil Code of the Kyrgyz Republic.

Cyrillic PDF with seal and signature

Default PDFKit doesn’t render Cyrillic. Embedded a TTF font with full RU support. Positioned the company seal and director signature as images with precise rotation, scale, and coordinates — tuned through several iterations.

Tamper‑proof audit trail

Each acceptance stores: full name, phone, guardian data (if minor), consent checkboxes, IP address, User‑Agent, timestamp, offer version, and record status. All fields are append‑only in PostgreSQL. Status changes are logged. Admin can view but not edit acceptance data.

Have a similar project? Get an estimate or book a call.

Related Cases

Product

Restaurant Order & Inventory Management System (end‑to‑end)

Full-cycle restaurant management system: role-based access (Chef, Employee, Accountant, Owner), ingredient inventory with cost tracking, roll recipes with auto-calculated cost/margin, set composition with pricing, order management, supply/write-off logging, accounting with Excel export, analytics dashboards, and a full audit trail for every change.

Product

KutWallet: Multi‑Asset Crypto Wallet with Integrated Exchange (iOS, end‑to‑end)

Full‑cycle mobile crypto wallet for iOS: non‑custodial key management with AES‑256‑GCM encryption, 4‑digit PIN + Face ID biometric auth, 3‑step onboarding with value‑driven storytelling, multi‑asset portfolio dashboard with real‑time price feeds (BTC, ETH, LTC, XRP), built‑in exchange with interactive candlestick charts and Buy/Sell flow, spending analytics with category‑segmented donut chart, QR‑code scanner for instant P2P transfers, multi‑currency fiat settings with 6+ currencies, OAuth social login (Google, Apple ID), 4‑digit OTP email verification, and a Node.js/PostgreSQL backend with WebSocket price streaming and CoinGecko aggregation.

Product

M7‑Finance: Digital Banking Platform — Design, Frontend & Backend (end‑to‑end)

Full-cycle product development for a digital banking platform: UX research, information architecture, high-fidelity design, React frontend with real-time data, and a Node.js/PostgreSQL backend with transactional ledger, multi-provider payment processing, PDF invoice generation, scheduled transfers engine, and OAuth 2.0 + JWT authentication — from user pain points to a production-grade fintech system handling wallets, transactions, invoices, and analytics.