Workforce development platform for Africa Skills Connect (Pty) Ltd — learner registration, opportunity matching, and placement tracking across learner/employer/TSP/funder/admin roles.
# ASC Skills Connect
A workforce development platform for Africa Skills Connect (Pty) Ltd — one
journey for every learner: **Register → Verify → Match → Train → Place →
Track Employment**. Five roles (Learner, Employer, TSP, Funder, Admin),
each with their own dashboard and permission set.
The visual design (palette, Poppins/Karla type pairing, the real logo)
is pulled directly from the live africaskillsconnect.co.za
marketing site, so the platform and the public site read as one brand —
see the `// Palette sourced from...` comment at the top of each
`asc_*_live.jsx` file for the exact source values.
Full requirements: `ASC_Skills_Connect_Technical_Spec.docx`.
Build history and the design decisions behind this repo:
`ASC_PROJECT_BRIEF.md`.
Every module below was built and then **re-verified live against a real
PostgreSQL + Node stack** — schema load, seed load, and the actual API
endpoints hit with curl (not just written and assumed correct). Several
real bugs were caught this way and are documented in the relevant
module's README rather than swept under the rug.
## Quick start
The whole thing, one command (Postgres, migrations/seeds, the web app —
API + frontend, served together — and the background worker, all
containerized):
```bash
docker compose up --build
open
localhost # the actual app
```
Or without Docker:
```bash
# 1. Database — rebuilds from scratch and applies every migration + seed
bash verify.sh
# 2. Frontend — build once (skip this to run API-only)
cd frontend
npm install
VITE_API_BASE="" npm run build
# 3. API + background worker (separate terminals)
cd ../employer-api
npm install
cp .env.example .env # optional — zero-config local defaults work out of the box
node server.js # terminal 1 ->
localhost (serves the app + API)
node worker.js # terminal 2 -> background matching job
```
Requires PostgreSQL (17+) and Node.js (18+) on `PATH`. See
`DEPLOYMENT.md` for what it takes to point any …