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.
Volunteer Certification Gate makes passing the training the only way into real work, with a certificate issued the moment the test is passed.
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.
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
Projects
Learning Management System
for teaching children English.
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.
GIS Platform — KidsVisitor
for exploring the nearby events for children.
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!
Civic Technologies Web App
the web platform for civic engagement.
Need a project estimate?
Drop us a line, and we provide you with a qualified consultation.