VeriCert
Issue credentials anyone can verify in seconds
A platform where universities and training centres issue digitally signed diplomas and certificates as W3C Verifiable Credentials. Employers verify one by scanning its QR code, entering its ID or uploading the PDF, and the platform never stores the holder's documents or personal data.
vericert.demodomain.site
- Role
- Solo: product, cryptography, front end, deployment
- Platforms
- Web: public verifier · Web: issuer portal · Public API
- Tech
- Next.js 16React 19TypeScriptPostgreSQLDrizzle ORMBetter AuthW3C VC 2.0ES256 / did:webpdf-libPlaywrightDocker
5
checks on every verification
0
holder documents or personal data stored
200
rows per bulk upload, each checked first
118k
credentials per revocation list
The problem
Checking a diploma shouldn't take a phone call
Today an employer who wants to check a diploma emails or calls the registrar's office and waits. Paper and PDF certificates are easy to edit, and a cancelled certificate looks exactly like a valid one.
VeriCert gives every credential the institution's digital seal. Anyone can check it in seconds, without an account, and if a single character changes the seal breaks. The platform keeps only a fingerprint and the revocation status, never the graduate's documents.
01 · Verify
Forged, edited and cancelled credentials are caught
Verification runs five checks: the issuer's public key, the signature, the registered fingerprint, the revocation list and the validity dates. A verifier sees a clear verdict with the reason, and can download a receipt.
- Verify by credential ID, QR camera scan, PDF upload or pasted JWT
- An edited PDF no longer matches its registered hash and is flagged as altered
- Revocation is a signed Bitstring Status List: public status, without revealing who holds a credential
02 · Issue
One credential, previewed as you type
Issuers fill in the holder, the achievement, the dates, the department and the signatories, and see the certificate update live. Signing produces a PDF with the signed credential embedded, plus a .jwt file.
- Institutions can also upload an existing PDF diploma and seal it
- Every institution gets its own signing key, published through did:web
- QR code on the document links straight to its verification page
03 · Bulk
A whole graduating class in one upload
Upload a CSV or XLSX of up to 200 rows. Every row is validated before anything is signed, problems are flagged per row, and the batch is issued in one click with every PDF downloadable at once.
04 · Manage
Revoke with a reason, audit everything
Institutions see every credential they issued with its status, revoke with a reason, and get an audit log of every action. The platform admin approves, suspends and invites institutions.
- Roles for platform admin, institution admin and issuer
- Optional TOTP two-factor sign-in and invitation flow
05 · Developers
A public API for verifiers
HR systems and admissions portals can verify credentials automatically through a JSON API: look up an ID, or post a signed JWT for full verification. Rate-limited, CORS-enabled and documented on a developers page.
Under the hood
How it's built
- 01
Open standards
Credentials follow W3C Verifiable Credentials 2.0 and Open Badges 3.0, signed with ES256 (P-256) and published through did:web, so any standards-compliant verifier can check them.
- 02
Privacy by design
The database keeps metadata, the revocation bit and a SHA-256 fingerprint, never the holder's documents or personal data. Holder details come from the signed credential itself.
- 03
Signing keys per institution
Each institution gets its own encrypted private key, its public did:web document and its own revocation list (room for about 118,000 credentials) the moment it is created.
- 04
PDF handling
pdf-lib and fontkit render certificates and embed the signed credential; pdfjs reads uploaded diplomas so an existing PDF can be sealed instead of re-designed.
- 05
Stack and quality
Next.js 16 and React 19, PostgreSQL with Drizzle, Better Auth with TOTP. Vitest for the cryptography and parsing, Playwright for the flows, and sample valid, revoked, expired and forged PDFs for demos.
- 06
Deployment
A Docker image with migrations and seeding, behind Caddy on a VPS, with GitHub Actions running the checks.