Announcing and Exploring DCW’s Digital Certification Portal: the difference it makes
Deoband Community Wikimedia turned 5 on 31 July 2026. Over the past five years, we have heard different perspectives on how students and the Gen Z community can be retained in our ecosystem of knowledge production. We thus built the Digital Certification Portal, publicly live at certificates.dcwwiki.org
DCW’s Digital Certification Portal is the 5th-anniversary gift from its volunteers to support retention. Initially designed to issue certificates of participation for our Wikiversary Conference in February 2026, it very soon moved to a full-fledged application with several advanced functions.
The portal is a very lightweight and monolithic PHP application for bulk-generating and distributing verifiable event and program participation certificates (public claim + verification). Organisers use the admin dashboard to upload PDF templates, map dynamic fields, import participants via CSV or add them manually, generate certificates (PDF), and send notifications; end users claim or verify certificates via the public UI. The different story here is that we are not relying on any paid APIs or using any extensive third-party tools like Credly in this process.
Stack
- Language(s): PHP (primary), CSS, Vanilla JavaScript
- Framework/runtime: Plain PHP 8.x (no heavy framework; designed for shared hosting / cPanel)
- Notable libraries: setasign/fpdi (PDF template import), tecnickcom/tcpdf (PDF generation), phpmailer/phpmailer (email delivery), vlucas/phpdotenv (optional env handling)
What is in it?
config.php creates a global PDO $pdo and security helpers; helpers.php provides common utilities. The public entry point index.php shows forms to claim certificates or verify IDs; claiming looks up event_participants and redirects to success or download endpoints. The admin/ directory contains the monolithic admin UI (events, roles, CSV import, a PDF visual editor implemented in admin/preview_event.php + admin/script.js) that maps template fields and stores visual settings in event_roles. PDF generation uses FPDI + TCPDF; send-email.php + email_logs handle notification delivery.
The front end is located at certificates.dcwwiki.org, which currently features a dropdown list of events, workshops, and programs with readily available certifications. Towards the right side, people who want to verify the reliability of Certificate IDs can enter an ID and check its authenticity. Wrong ones tell about non-existence, and right ones land on the verification page located at certificates.dcwwiki.org/verify/CertID
Creating Programs and Events
Events are created on the admin dashboard, where existing events are also listed. Each event has an associated Actions tab that lists three options: Edit Event, Manage Roles, and Manage Participants.
Roles are important
While organisers map the dynamic elements such as participant name, certificate ID, QR code, or any other required custom text, they are also allowed to upload any fonts that a specific certificate may require. Afterwards, the next step is to add/import participants across the roles created.
How are certificates issued?
Organisers create an event/program on the dashboard, add a desired prefix to the Certificate ID, and include other customised information such as predefined messages for LinkedIn posts. Roles are the second task, and each role has to have a unique template. You no longer need to keep hundreds of copies of certificates and send them one by one to participants. Visual Editor helps map QR codes, Credential IDs, and participant names, any custom text, issue dates, among other things. Fun: both the QR code and Credential ID are clickable inside a PDF. Clicking on them takes one to the verification line of that specific certificate.
The dashboard allows unique support for events and programs run under partnerships and collaborators. In case an event is of collaborative nature, organisers can set a partnership logic which automatically shifts the verification statement.
Certificates will only have elements which are mapped in the visual editor. If you don’t map, empty templates will appear on the verification endpoints. Visual Editor also allows using dynamic color elements and has grid options to ease mapping.
Adding and participants
Participants can be added manually or imported using a CSV file. The roles in your CSV (e.g., Attendee, Organiser) MUST EXACTLY MATCH the roles that have already been created in the Manage Roles section. Any rows with unrecognized roles will be skipped! A random certificate ID is issued to every participant – difficult to guess by others.
As soon as a participant is added to an event, they receive a notification on their registered email that their certificate is available for claim. They receive an additional email containing a PDF of the certificate once they have hit the download button when claiming the certificate.
LinkedIn integration
Both on successful certificate generation pages and in emails, participants are given the option to quickly add certificates to their LinkedIn licenses. They are also given ways to use pre-defined messages in case they decide to post.
Sharing verification links on social media platforms generates unique certificate thumbnails instead of a predefined hard image thumbnail. This requires conversion from PDF to image/png; this slightly puts a load on the server, which is manageable if the usage of the server load is good enough.
Where are certificates stored?
Certificates are generated on demand based on how things are mapped in the visual editing process. No certificate files are stored on the server for security and storage-related aspects. We store only the role templates and fonts used in various certificate fields.
The people behind
The idea is mine, while User:Zaidusyy, a participant of our April 2026 Train-a-Wikipedian residential program, created its initial infrastructure. Gauri Guptaa significantly contributed, while User:Shadabgdg and others also made significant contributions. I personally thank all of them for having helped us build this!
What now!
The source code is freely available on GitHub, and we welcome improvements and reuse of this portal for wider community benefit. There is much more to improve, but this portal is stable enough to support our movement organisers in celebrating their volunteers. We welcome your reflections about our five years of being around and helping in the capacities that we could. Tune in to dcwwiki.org/reflections5 for your thoughts. If you come across any issues in the code, do raise them on the GitHub repo and/or contribute PRs if you are a technical editor.