A full-stack admin dashboard powering student management, Red Cross certificate syncing, Hovn pipeline ingestion, and automated email-driven verification.
This project is Version 1.0 of the complete system.
- FastAPI (Python 3.11+)
- SQLAlchemy ORM
- PostgreSQL
- Uvicorn ASGI server
- Zoho SMTP (email)
- Internal modules:
redcross.py— ARC certificate scraperhovn_scraper.py— booking/session scrapingnormalize.py— enterprise-grade normalizationdb_pipeline.py— persistence engine
- React + Vite
- TailwindCSS
- React Router
- Airtable-style grid-based admin UI
- View / search all students
- Full editable student profiles
- Update email, name, phone, Hovn ID directly from GUI
- Automatic ARC certificate lookup & DB caching
- Defensive parsing for inconsistent ARC data
- Real-time cert sync button per student
- ARC certificate scraping (real Red Cross backend)
- DB-first caching:
- First lookup → scrape ARC → insert
- Future lookups → read from DB instantly
- Smart expiry handling:
- If no expiry provided → assume 2 years
- If course contains “Eligible for Skills Session within 90 days” → expiry = 90 days
- Cert color states:
-
90 days left → green
- < 90 days left → yellow
- < 90 days expired → red
-
90 days expired → blue
-
- Instructor + provider parsing
- Issuer_org normalization for Foss, n.e. thing training, etc.
- Scrape booking + session
- Normalize entire payload
- Persist to DB
- Automated migration tool for historical students
- Ability to load 1 ref or hundreds from a
.txtfile
- Internal new-student cert sync email
- External certificate lookup workflow:
- Send email → system parses email → auto replies with report
- Safe mode (
store=false) for external checks - Professional HTML formatting
- Internal mode → short/no-frills plaintext
Returns server status.
{ "status": "ok" }
List students (100 max).
Update student fields.
{
"first_name": "New",
"last_name": "Last",
"email": "updated@example.com"
}DB-first certificate lookup.
Safe certificate lookup (never stored).
Zoho inbound email → certificate report workflow.
Returns all stored certificates.
Silent ARC-sync for existing Hovn bookings.
id
first_name
last_name
email
phone_e164
hovn_student_id
cert_id (ARC unique key)
student_id
course_name
course_code
format
issue_date
expiry_date
issuer_org
instructor_name
added_at
Normalized Hovn data.
- Python 3.11+
- PostgreSQL
- Node 20+
pip install -r requirements.txt
uvicorn main:app --reloadcd frontend
npm install
npm run buildDATABASE_URL=postgresql://user:pass@localhost:5432/hovn
SMTP_USER=notifications@nethingtraining.com
SMTP_PASS=yourpassword
SMTP_FROM=noreply@nethingtraining.com
INTERNAL_TO=eli.neirick@gmail.com
Example:
post = invokeurl
[
url: "https://pipeline.nethingtraining.com/api/certs/check-email"
type: POST
parameters: {
"email": target_email,
"store": "false"
}
];
# Health
curl http://127.0.0.1:8000/api/health
# Safe cert check
curl.exe -X POST -H "Content-Type: application/json" -d "{\\"email\\": \\"test@gmail.com\\"}" http://127.0.0.1:8000/api/certs/check-email
- Import endpoints manually or use:
- GET students
- PATCH students/{id}
- POST certs/lookup
- POST certs/check-email
- POST email-webhook/cert-lookup
- GET certs/all
Instructors see only their students + certs.
Ability to produce branded downloadable PDFs.
Email/SMS reminders 30, 60, 90 days.
Auto-ingest Foss rosters + unify with ARC.
CSV/Excel import with validation.
Instant search index.