Illustration

Volunteer Certification Gate makes passing the training the only way into real work, with a certificate issued the moment the test is passed.

~300 volunteers on real data since Sep 2026
≤48 business hours of waiting, now instant
16 work directions with their own admission
Project
Project

Partner's Profile

Background

The client is an EU-based non-profit organization that coordinates an international volunteer network. SDH builds its CRM: a workspace for staff plus a personal cabinet for volunteers. Onboarding training and the test used to live in an external form service, and staff issued certificates by hand within up to 48 business hours. Access to tasks did not depend on training at all: any volunteer could take any task, prepared or not.

Objective

Move training, testing and certification into the product and make the certificate the real gate to work. A volunteer should receive a certificate the moment they pass, anyone should be able to verify it without an account, and each of the 16 work directions, from Legal Support to Translation & Localisation, needed its own materials and admission on top of the general certificate. Admins had to manage all of it themselves in English, Ukrainian and Russian.

Solution

We built the training module as part of the organization's web application: a piece of material, then a question, then an instant explanation. The test has a configurable pass threshold (the client set 80%) and an optional attempt limit. Passing issues a certificate on the spot, with a public verification page that works by number or QR code and needs no login. Without a certificate a volunteer neither sees nor takes tasks, and each of the 16 directions adds its own materials and test that open up tasks of that direction.

The hard part was making access unambiguous. In the Django backend, a single access gate answers "may this person work?" and returns a distinct reason for every refusal: training not passed, certificate revoked, direction not admitted, admission withdrawn. An automated test fails the build if any code reads certificates around that gate, so the rule cannot erode as the CRM grows.

Other decisions that keep the system honest:

  • Correct answers are never sent to the browser.
  • Certificate numbers carry a long random part, about 3.5·1013 combinations per country, so the public check page cannot be enumerated. It replaced a sequential counter.
  • A double click used to create attempts above the limit and two certificates with different numbers. A per-volunteer row lock plus database uniqueness constraints closed that race.
  • The threshold is stored in percent and the score counts only the questions actually shown, so editing a test neither softens the bar nor fails someone mid-attempt.
  • A revoked certificate is marked with who, when and why instead of being deleted. Tasks already taken stay; a retake is closed.

The codebase is covered by about 3,100 backend tests and around 120 frontend test files, and admins sign in with mandatory two-factor authentication.

Learn, Answer, Get the Why

Training runs inside the volunteer cabinet as material, then a question, then an instant explanation. The test uses a configurable pass threshold, set by the client at 80%, and an optional attempt limit. Correct answers never reach the browser.

Instant Certificate, Public Check

Passing the test issues a certificate immediately. Anyone can verify it on a public page by number or QR code, without an account. A long random part in the number keeps that page from being enumerated.

One Gate for Access to Work

A single access check decides whether a person may work and names the reason for every refusal: training not passed, certificate revoked, direction not admitted or admission withdrawn. The build fails if any code bypasses it.

16 Directions, Own Admission

Translation, Legal Support, Design, IT and twelve more directions each have their own materials and test. Passing opens up tasks of that direction on top of the general certificate. Admins edit all content themselves in three languages.

Revocation with an Audit Trail

An admin can revoke a certificate with a reason. It is marked as revoked with who, when and why instead of being deleted, so the history stays intact. Tasks already taken remain; a retake is closed.

Technologies

Backend

Python 3.12, Django 5, Django REST Framework, PostgreSQL 17, Redis, Celery, SimpleJWT, django-otp

Frontend

React 19, TypeScript, Vite, React Router, TanStack Query, Zustand, i18next, Tailwind CSS, shadcn/ui, Vitest

Infrastructure

Docker Compose on an EU VPS, Caddy, Jenkins, Ansible

Project

Projects

RosteringAI & ML-enabled

Learning Management System

for teaching children English.

301K Connected devices
191K Active users
5.01Google play store

Web AppDjango

Training and Certification Gate for a Volunteer CRM

Built-in training, instant certificates with public QR verification, and per-direction access to tasks for nearly 300 volunteers.

~300 volunteers on real data since Sep 2026
≤48 business hours of waiting, now instant
16 work directions with their own admission

GIS

GIS Platform — KidsVisitor

for exploring the nearby events for children.

60K MAU performance app
$2M raised investment
⭐ 4.8Google play store

GISWeb App

GIS Web App for Agronomists — Lanscript

a digital version of field planting history.

Existing paper books digitalization of fields history, visualization of full and relevant land bank (cartography), creating fertilizer application maps, crop and work analytics in connection with weather monitoring was conceived by farmers, created by IT experts, and advanced together!

CivicTechSocial

Civic Technologies Web App

the web platform for civic engagement.

34.6K active voters
3.7K engaged teams
x2increasing of voters' activity

Need a project estimate?

Drop us a line, and we provide you with a qualified consultation.

x

Partnership That Works for You

Your Trusted Agency for Digital Transformation and Custom Software Innovation.

Start typing to search...