"Sumbandila" (Venda) β "The one who leads the way."
Live Platform: https://landing-five-orcin-61.vercel.app
Sumbandila is an official national digital infrastructure platform built to connect South African citizens β especially youth β to verified opportunities, government services, skills training, and institutional accreditation. It replaces scattered, hard-to-find government portals with a single, trusted, beautiful interface.
Who it helps:
- π Students β Find NSFAS funding, verified TVET colleges, and bursaries
- πΌ Job seekers β Discover verified employment opportunities across 9 provinces
- π΄ Elderly citizens β Access SASSA grants and food relief programme guidance
- π₯ The public β Verify doctors, lawyers, institutions before trusting them
- ποΈ Government β A unified youth growth registry powered by real DHET/CHE/HPCSA data
| Feature | Description |
|---|---|
| ποΈ People of SA Section | Photo-driven community section: youth, elderly food relief, diverse conversations |
| ποΈ Landmark Slideshow (Footer) | Auto-rotating Nelson Mandela Bridge β Union Buildings imagery |
| β‘ Citizen Quick Services | One-click access to NSFAS, SASSA, Clinic Finder, Skills Hub |
| π€ Sipho AI Floating Assistant | Context-aware AI guide available on every page |
| π 5-Language Nav | EN / isiZulu / Xhosa / Afrikaans / Sepedi language toggle |
| π Live Registry Pulse | Real-time stats: 1.2M+ youth, 4,208 institutions, 12,450 opportunities |
| π‘οΈ National Verification Engine | Verify institutions, practitioners, and credentials instantly |
| π¨ Ndebele Design System | SA flag colour-band motifs, Batho Pele branding throughout |
graph TD
subgraph "π Frontend β Next.js 16 (Turbopack)"
A[Landing App<br/>apps/landing] --> B[Public Homepage]
A --> C[Verify Portal]
A --> D[Apply: NSFAS / SASSA]
A --> E[Skills Hub]
A --> F[Opportunities]
A --> G[Admin Portal]
A --> H[Sipho AI Page]
W[Web App<br/>apps/web] --> I[Dashboard]
W --> J[Registry Search]
end
subgraph "βοΈ Backend Services"
K[FastAPI Core<br/>services/core] --> L[(PostgreSQL DB)]
K --> M[(Redis Cache)]
K --> N[AI Trust Engine]
end
subgraph "π Python Scripts"
O[dhet_collector.py<br/>pdfplumber] --> L
P[live_scraper_service.py<br/>Playwright] --> L
Q[sentinel_heartbeat.py] --> R[Alert System]
end
A -->|REST API| K
W -->|REST API| K
N --> S[Fraud Score 0β100%]
N --> T[SHA-256 Credential Hash]
flowchart LR
Start([π§ Citizen visits\nlanding-five-orcin-61.vercel.app]) --> Home[Homepage\nHero + Services]
Home --> Choice{What do\nyou need?}
Choice -->|Student| NSFAS[Apply for NSFAS\n/apply/nsfas]
Choice -->|Grant| SASSA[Apply for SASSA\n/apply/sassa]
Choice -->|Job| Opp[Browse Opportunities\n/opportunities]
Choice -->|Learning| Skills[Skills Hub\n/skills]
Choice -->|Health| Clinic[Find a Clinic\n/services/clinics]
Choice -->|Check legitimacy| Verify[Verify Institution\n/verify]
Verify --> Engine[National Verification\nEngine]
Engine --> Result{Result}
Result -->|β
GREEN| Safe[Verified β Safe to Enrol]
Result -->|π‘ YELLOW| Caution[Caution β Check Accreditation]
Result -->|π΄ RED| Danger[Danger β Fraudulent Entity]
NSFAS --> Dashboard[User Dashboard\n/dashboard]
SASSA --> Dashboard
Opp --> Dashboard
Skills --> Dashboard
sumbandila/
βββ apps/
β βββ landing/ β π Main Next.js 16 public-facing app
β β βββ app/
β β β βββ page.jsx β Homepage (Hero, Services, Community)
β β β βββ verify/ β National Verification Engine
β β β βββ apply/
β β β β βββ nsfas/ β NSFAS application portal
β β β β βββ sassa/ β SASSA grants portal
β β β βββ opportunities/ β Jobs & opportunities browser
β β β βββ skills/ β TVET & certified courses
β β β βββ webinars/ β Live learning sessions
β β β βββ membership/ β Youth membership onboarding
β β β βββ leadership/ β Mentorship & governance
β β β βββ collaborations/ β NGO & partner hub
β β β βββ admin/ β Secured admin portal
β β β βββ sipho-ai/ β Sipho AI assistant page
β β βββ components/
β β β βββ SiteNav.jsx β Sticky nav with ticker + language toggle
β β β βββ SiteFooter.jsx β Footer with landmark slideshow
β β β βββ SiphoFloatingAssistant.jsx
β β βββ public/ β Static assets (committed to Git)
β β βββ sa-logo.png β Official Coat of Arms
β β βββ mandela-bridge.pngβ Nelson Mandela Bridge (JHB)
β β βββ union-buildings.pngβ Union Buildings (PTA)
β β βββ sa-youth.png β Diverse SA youth photo
β β βββ elderly-food-parcels.png β Community relief photo
β β βββ diverse-community.png β Unity/ubuntu photo
β βββ web/ β React + Vite secondary app
β βββ mobile/ β Expo Go mobile app (React Native)
β
βββ services/
β βββ core/ β FastAPI V4 backend (Python 3.11)
β βββ main.py
β βββ requirements.txt
β
βββ scripts/ β Python data pipeline & automation
β βββ dhet_collector.py β PDF scraper (pdfplumber)
β βββ live_scraper_service.py β Live portal scraper (Playwright)
β βββ sentinel_heartbeat.py β Daily portal health monitor
β βββ local_security_audit.py β Dependency vulnerability audit
β
βββ data/ β 50,000+ mock registry records
βββ packages/ β Shared types and utilities
βββ infra/ β Docker & CI/CD configs
βββ pyproject.toml β Python linting config (Pyright)
βββ vercel.json β Vercel deployment config
βββ package.json β NPM workspaces root
graph LR
Search([π Search\nInstitution / Practitioner]) --> Check{Registry\nCheck}
Check -->|Registered + Accredited| Green["β
GREEN\nSafe to Enrol / Trust"]
Check -->|Registered but Unaccredited| Yellow["π‘ YELLOW\nVerify Course Scope"]
Check -->|Cancelled / Suspended| Red["π΄ RED\nDo NOT Proceed"]
Check -->|Not Found| Grey["β¬ UNKNOWN\nReport to Sumbandila"]
style Green fill:#007749,color:#fff
style Yellow fill:#FFB81C,color:#000
style Red fill:#E03C31,color:#fff
style Grey fill:#64748b,color:#fff
| Colour | Meaning | Action |
|---|---|---|
| β GREEN | Registered + Accredited | Safe to enrol / engage |
| π‘ YELLOW | Registered, unaccredited course | Verify specific programme scope |
| π΄ RED | Cancelled, suspended, or on fraud list | Do NOT proceed β report |
| β¬ UNKNOWN | Not found in any registry | Submit a tip via Feedback |
graph LR
subgraph Frontend
NX[Next.js 16 + Turbopack]
RC[React 19]
TW[Tailwind CSS]
LC[Lucide React Icons]
end
subgraph Backend
FA[FastAPI v4]
PY[Python 3.11]
PG[PostgreSQL]
RD[Redis]
end
subgraph Data Pipeline
PB[pdfplumber β PDF parsing]
PL[Playwright β Live scraping]
SC[sentinel_heartbeat.py]
end
subgraph Deployment
VC[Vercel β Frontend]
DK[Docker β Backend]
GH[GitHub Actions β CI/CD]
end
NX --> FA
FA --> PG
FA --> RD
PB --> PG
PL --> PG
NX --> VC
FA --> DK
| Layer | Technology |
|---|---|
| Landing App | Next.js 16, React 19, Tailwind CSS, Turbopack |
| Web App | React 19, Vite, Framer Motion |
| Mobile | Expo Go, React Native |
| Backend | FastAPI v4, Python 3.11, Uvicorn |
| Database | PostgreSQL, Redis |
| AI Engine | RandomForestClassifier (Trust Scoring), Sipho AI |
| Data Scripts | pdfplumber, Playwright |
| Deployment | Vercel (frontend), Docker + K8s (backend) |
| Security | SHA-256 credential hashing, POPIA-compliant |
| Tool | Minimum Version | Check |
|---|---|---|
| Node.js | 20.x | node -v |
| npm | 10.x | npm -v |
| Python | 3.11+ | python --version |
| Git | Any | git --version |
git clone https://github.com/Raphasha27/Sumbandila-App.git
cd Sumbandila-Appnpm install# Copy the example env file for the landing app
cp apps/landing/.env.local.example apps/landing/.env.localThen open apps/landing/.env.local and fill in your Supabase credentials:
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_keyDon't have Supabase? The app works without it β verification uses mock data locally.
npm run devThis starts the landing app at β http://localhost:3000
The web app (Vite) will also start if present. Check your terminal for its port.
# Install Python dependencies for the API backend
pip install -r services/core/requirements.txt
# Install script dependencies (data pipeline)
pip install pdfplumber playwright
playwright install chromium
# Start FastAPI backend
cd services/core
uvicorn main:app --reload --port 8000Backend API runs at β http://localhost:8000/docs
| Route | Description |
|---|---|
/ |
Homepage β Hero, Services, Community Photos, Footer |
/verify |
National Verification Engine |
/apply/nsfas |
NSFAS Student Financial Aid Application |
/apply/sassa |
SASSA Grants & Social Relief |
/opportunities |
Verified job & opportunity listings |
/skills |
TVET & certified skills courses |
/webinars |
Live & recorded webinars |
/membership |
Youth membership onboarding |
/leadership |
Mentorship & governance programmes |
/collaborations |
NGO & partner collaboration hub |
/sipho-ai |
Sipho AI intelligent assistant |
/feedback |
Public complaints & feedback portal |
/admin |
Secured admin dashboard |
- POPIA Compliant β Zero-persistence policy for sensitive personal data
- SHA-256 Hashing β Tamper-proof fingerprint on every verified credential
- Dependabot β Automated vulnerability patching via GitHub
- Pinned Dependencies β
package-lock.jsonenforced on all installs - L5 Sentinel Encryption β Transport-layer encryption across all API calls
See SECURITY.md for full vulnerability reporting policy.
| Sector | Source | Method | Update Frequency |
|---|---|---|---|
| TVET Colleges | DHET Register (Section B) | PDF β pdfplumber | Monthly |
| Universities & HEIs | DHET Private HEI Register | PDF Parsing | Monthly |
| Schools (K-12) | DBE LURITS Masterlist | EMIS Number Validation | Quarterly |
| Doctors | HPCSA iRegister | Playwright live scraper | Real-time |
| Lawyers | LPC Search Portal | Playwright live scraper | Real-time |
| Nurses | SANC eRegister | SANC Ref + ID required | Real-time |
We welcome contributions! Please read CONTRIBUTING.md and CODE_OF_CONDUCT.md before opening a pull request.
# Create a feature branch
git checkout -b feat/your-feature-name
# Make your changes, then commit
git add .
git commit -m "feat: describe your change"
# Push and open a PR
git push origin feat/your-feature-nameMIT Β© 2026 β Sumbandila National Growth Ecosystem Β· Republic of South Africa
πΏπ¦ Sumbandila β Fighting Corruption through Digital Integrity. Built on Ubuntu. Powered by Batho Pele.
This project is developed and maintained together with the team:
- Raphasha27 β Project lead & maintainer
- raphashakoketso99 β Contributor