🔬 LabVirtuoso — Kenya Virtual Laboratory Platform A full-stack virtual laboratory platform aligned to the Kenya KNEC/CBC Curriculum (Form 1–4 and University). Built with Flask, MongoDB, Bootstrap 5, and Chart.js.
# 🔬 LabVirtuoso — Kenya Virtual Laboratory Platform
A full-stack virtual laboratory platform aligned to the **Kenya KNEC/CBC Curriculum** (Form 1–4 and University). Built with Flask, MongoDB, Bootstrap 5, and Chart.js.
---
## 🇰🇪 Disciplines & Experiments
| Discipline | Experiments | Level |
|---|---|---|
| ⚛️ **Physics** | Projectile Motion · Simple Pendulum · Ohm's Law · Snell's Law · Photoelectric Effect | Form 1–4 / University |
| 🧪 **Chemistry** | Acid-Base Titration · Electrolysis · Enthalpy of Neutralisation · Rate of Reaction · Molar Mass | Form 1–4 / University |
| 🧬 **Biology** | Osmosis · Photosynthesis · Population Growth · Genetics · Enzyme Activity | Form 1–4 / University |
| 💻 **Computer Science** | Sorting Algorithms · Binary Search · Logic Gates · Network Topology · CPU Scheduling | Form 3–4 / University |
| ⚡ **Electronics** | Diode I-V · RC Circuit · Op-Amp Inverting Amplifier · Rectifier · Transistor Amplifier | Form 4 / University |
---
## 🚀 Quick Start
### 1. Prerequisites
- Python 3.10+
- MongoDB (local: `mongodb://localhost:27017` or MongoDB Atlas)
- MongoDB Compass (optional, for visual DB management)
### 2. Clone & Install
```bash
git clone
cd labvirtuoso
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
pip install -r requirements.txt
```
### 3. Configure Environment
```bash
cp .env.example .env
# Edit .env — set your MONGO_URI and SECRET_KEY
```
`.env` file:
```
FLASK_ENV=development
SECRET_KEY=your-very-secret-key-change-this
MONGO_URI=mongodb://localhost:27017/labvirtuoso
WTF_CSRF_SECRET_KEY=another-csrf-secret
```
### 4. Initialise Database
```bash
python scripts/init_db.py
```
This creates:
- All MongoDB indexes (for fast queries)
- Admin account: `admin@labvirtuoso.ke` / `Admin1234!`
- Demo teacher account: `teacher@labvirtuoso.ke` / `Teacher1234!`
### 5. Run the Application
```bash
python run.py
```
Open: **
http://localhost:5000**
---
## 📁 Project Structure …