This will be used for hosting all services in skillyme africa
# Skillyme Africa LMS — Cohort 2: Build Track
A full-stack cohort management platform for the Skillyme Africa startup accelerator. Manage participants, teams, milestones, calendar events, announcements, and real-time notifications.
---
## Tech Stack
| Layer | Technology |
|---|---|
| Frontend | React 18 + TypeScript + Vite + Tailwind CSS + shadcn/ui |
| Backend | Node.js + Express + TypeScript |
| ORM | Prisma |
| Database | PostgreSQL 15 (via Docker) |
| Auth | JWT (access + refresh tokens) + bcrypt |
| Realtime | Server-Sent Events (SSE) |
| Email | Nodemailer |
| Jobs | node-cron |
---
## Prerequisites
- **Node.js** 18 or later
- **Docker Desktop** (for PostgreSQL)
- **npm** or **pnpm**
---
## Setup (5 steps)
### 1. Clone and install
```bash
git clone
cd "SKILLYME AFRICA LMS"
# Install root dependencies (Prisma CLI, concurrently)
npm install
# Install server dependencies
cd server && npm install && cd ..
# Install client dependencies
cd client && npm install && cd ..
```
### 2. Configure environment
```bash
cp .env.example .env
```
Open `.env` and fill in:
| Variable | Description |
|---|---|
| `DATABASE_URL` | PostgreSQL connection string (matches docker-compose) |
| `JWT_ACCESS_SECRET` | 64-byte random hex — generate with `node -e "console.log(require('crypto').randomBytes(64).toString('hex'))"` |
| `JWT_REFRESH_SECRET` | Different 64-byte random hex |
| `SMTP_HOST / SMTP_USER / SMTP_PASS` | Gmail SMTP (or leave blank — emails log to console) |
| `FRONTEND_URL` | `
localhost` |
| `PORT` | `4000` |
| `PROGRAM_NAME` | Displayed in the UI and emails |
### 3. Start the database
```bash
docker compose up -d
```
Verify: `docker ps` should show `skillyme-db` running.
### 4. Run database migrations and seed
```bash
# Generate Prisma client + run migrations
npm run db:generate
npm run db:migrate
# Seed with sample data
npx prisma db seed
```
### 5. Start the dev server
```bash
npm run dev
```
This starts both:
- **Backend** at http: …