Skip to content

Latest commit

Β 

History

658 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ‡ΏπŸ‡¦ SUMBANDILA

National Youth Growth Ecosystem β€” Republic of South Africa

"Sumbandila" (Venda) β€” "The one who leads the way."

Live Demo Next.js License Security

---

πŸ”— Official Demo

Live Platform: https://landing-five-orcin-61.vercel.app


πŸ“Œ What Is Sumbandila?

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

✨ What's New β€” V5.0 (April 2026)

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

πŸ—ΊοΈ Platform Architecture

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]
Loading

πŸ”„ User Journey Flow

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
Loading

πŸ—οΈ Monorepo Structure

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

πŸ›‘οΈ Verification Colour System

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
Loading
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

🧰 Tech Stack

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
Loading
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

πŸš€ Running Locally

Prerequisites

Tool Minimum Version Check
Node.js 20.x node -v
npm 10.x npm -v
Python 3.11+ python --version
Git Any git --version

1. Clone the repository

git clone https://github.com/Raphasha27/Sumbandila-App.git
cd Sumbandila-App

2. Install JavaScript dependencies

npm install

3. Set up environment variables

# Copy the example env file for the landing app
cp apps/landing/.env.local.example apps/landing/.env.local

Then 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_key

Don't have Supabase? The app works without it β€” verification uses mock data locally.

4. Start the development server

npm run dev

This starts the landing app at β†’ http://localhost:3000

The web app (Vite) will also start if present. Check your terminal for its port.

5. (Optional) Python backend & scripts

# 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 8000

Backend API runs at β†’ http://localhost:8000/docs


πŸ“‘ Available Pages

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

πŸ”’ Security & Compliance

  • 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.json enforced on all installs
  • L5 Sentinel Encryption β€” Transport-layer encryption across all API calls

See SECURITY.md for full vulnerability reporting policy.


🌍 Data Sources

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

🀝 Contributing

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-name

πŸ“œ License

MIT Β© 2026 β€” Sumbandila National Growth Ecosystem Β· Republic of South Africa


πŸ‡ΏπŸ‡¦ Sumbandila β€” Fighting Corruption through Digital Integrity. Built on Ubuntu. Powered by Batho Pele.

Republic of South Africa – Coat of Arms

Contributors

This project is developed and maintained together with the team:

About

Youth development platform for South Africa

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages