CertifyPro is a full-stack certificate issuance, verification, and access-management platform for institutions, training organizations, and academic teams. It combines a React admin portal, a FastAPI backend, and Supabase for authentication, database storage, and file storage.
The repository contains the application code, schema files, and operational documentation needed to run the system locally. Because sensitive local files are intentionally excluded from source control, a ZIP download from GitHub is not enough by itself. You will need to recreate environment files and configure Supabase before the app can start successfully.
Landing page
|
Login/Request_Access Page
|
Dashboard
|
Main Generation Flow
|
Registry
|
Access Control
|
Cont. Access Control
|
Profile Page (Bulding..)
|
Profile_page (building)
|
Import Data
|
CertifyPro is built to support the end-to-end certificate workflow:
- organization onboarding and admin access control
- certificate template upload and workspace configuration
- student import and batch preparation
- certificate generation with QR-backed verification
- public certificate verification
- profile management and dashboard analytics
- contact and support workflows
The project is organized as three main layers:
- Frontend: React 18, Vite, TypeScript, Tailwind CSS, shadcn/ui, Supabase browser auth
- Backend: FastAPI, Python, Supabase Python SDK, image generation, file upload endpoints
- Platform services: Supabase Auth, Postgres, Storage, and an optional Edge Function for access-request automation
- Supabase-backed authentication and profile onboarding
- role-aware admin and co-admin access control
- template management with workspace layout configuration
- CSV and Excel-driven student import flows
- certificate rendering with Pillow and QR code generation
- public verification flows backed by certificate identifiers
- dashboard metrics and activity views
- contact workflow with SMTP integration
- backend: FastAPI application, services, API routes, schema files, and uploads
- frontend: React application and UI assets
- database: additional SQL for profiles and authentication-related setup
- supabase/functions: optional Supabase Edge Function for access-request processing
- Guide.md: step-by-step local setup guide for ZIP downloads and missing ignored files
Install these before starting local development:
- Node.js 20+
- npm 10+ or Bun
- Python 3.11+
- a Supabase project
Recommended:
- VS Code
- Git
- Supabase CLI
Optional for PDF template preview generation:
pdf2image- Poppler available on your system
PATH
Place the project anywhere on your machine, for example D:\SGP.
cd frontend
npm installFrom the repository root:
py -3.11 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install -r requirements.txtCreate these files manually:
backend/.envfrontend/.env
Minimum frontend values:
VITE_SUPABASE_URL=https://YOUR_PROJECT.supabase.co
VITE_SUPABASE_ANON_KEY=YOUR_SUPABASE_ANON_KEYMinimum backend values:
SUPABASE_URL=https://YOUR_PROJECT.supabase.co
SUPABASE_SERVICE_ROLE_KEY=YOUR_SUPABASE_SERVICE_ROLE_KEY
FRONTEND_ORIGINS=http://localhost:5173
ACCESS_INVITE_REDIRECT_URL=http://localhost:5173/reset-password?type=invite
SMTP_HOST=smtp.yourprovider.com
SMTP_PORT=587
SMTP_USER=your-smtp-user
SMTP_PASSWORD=your-smtp-password
SMTP_FROM_EMAIL=no-reply@yourdomain.com
CONTACT_DESTINATION_EMAIL=certifyprocare@gmail.com
CONTACT_BRAND_NAME=ElevateXYou need these values from Supabase Project Settings:
- project URL
- anon key
- service role key
Run the SQL setup in this order:
- backend/database/supabase_schema.sql
- database/profiles_schema.sql
- database/authentication_details.sql
Create the required storage bucket:
certificate-templatesas a public bucket
For the full access-control model, also follow ACCESS_CONTROL_SETUP.md.
From the repository root:
.\.venv\Scripts\Activate.ps1
uvicorn backend.app.main:app --reload --host 0.0.0.0 --port 8000Backend base URL:
http://127.0.0.1:8000
Open a second terminal:
cd frontend
npm run devFrontend URL:
http://localhost:5173
- ZIP downloads do not include
.env,.venv,node_modules, or other ignored local files. - The backend will fail fast if
SUPABASE_URLorSUPABASE_SERVICE_ROLE_KEYis missing. - Template uploads require the
certificate-templatesSupabase storage bucket to exist and be public. - Some frontend API calls are currently hardcoded to
http://127.0.0.1:8000, so local backend startup should use that host and port. - PDF template preview support is optional and depends on
pdf2imageplus Poppler.
VITE_SUPABASE_URLVITE_SUPABASE_ANON_KEY
SUPABASE_URLSUPABASE_SERVICE_ROLE_KEYFRONTEND_ORIGINSACCESS_INVITE_REDIRECT_URLSMTP_HOSTSMTP_PORTSMTP_USERSMTP_PASSWORDSMTP_FROM_EMAILCONTACT_DESTINATION_EMAILCONTACT_BRAND_NAME
cd frontend
npm run dev
npm run build
npm run lint
npm run test.\.venv\Scripts\Activate.ps1
uvicorn backend.app.main:app --reload --host 0.0.0.0 --port 8000Use these documents depending on what you need to set up:
- Guide.md: full installation guide for ZIP-based setup
- ACCESS_CONTROL_SETUP.md: access-control schema and backfill steps
- DEPLOYMENT_CHECKLIST.md: deployment readiness checklist
- IMPLEMENTATION_DETAILS.md: implementation notes
- PROFILES_SYSTEM_IMPLEMENTATION.md: profile subsystem details
The repository contains working frontend and backend code for the core certificate workflow, but the application is environment-dependent. A fresh machine needs Supabase configuration, environment files, and package installation before the project can run.
Developed by Team ElevateX.
No explicit production license is defined in this repository at the moment. Confirm licensing terms before external distribution or commercial deployment.









