VeriCred is a Django-based web app for institutional certificate issuance and public verification using QR codes.
- Authentication (Django auth login/logout)
- Role-based authorization (
ADMIN,ISSUER,REVIEWER,VIEWER) - Certificate CRUD
- Workflow statuses and approval pipeline:
- Draft
- Pending Review
- Approved
- Rejected
- Issued
- Revoked
- QR generation per certificate
- Public verification endpoint using secure token
- Dashboard metrics
- Audit trail for creation/updates/workflow transitions
- Search and filtering for certificates and audit logs
- Revocation with mandatory reason
- Python 3.12+
- Django 5.x
- SQLite (default)
qrcode+ Pillow for QR image generation
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python manage.py migrate
python manage.py createsuperuser
python manage.py runserverOpen: http://127.0.0.1:8000/
Users are created through admin or shell and automatically get a Profile record.
Set user roles from Django admin:
/admin/vericore/profile/
Suggested role mapping:
ISSUER: create/edit drafts, submit, issue, revokeREVIEWER: approve/reject pending reviewsADMIN: full accessVIEWER: read-only access
/Dashboard (authenticated)/accounts/login/Login/certificates/Certificate list + filtering/certificates/new/Create certificate/certificates/<id>/Detail + workflow controls/certificates/verify/<token>/Public verification page/certificates/audit/Audit logs
Run tests:
python manage.py test- QR code currently stores relative verify URL. In production you can switch to absolute URL generation.
- SQLite is used by default for easy local demos; PostgreSQL can be configured through Django settings for production.