EduLite is a mobile e-learning application designed to enhance digital education accessibility in rural South African schools, where internet connectivity is often limited or unstable.
# Edulite Monorepo 🚀
Welcome to the **Edulite Project**!
This repository is organized as a **monorepo** using **npm workspaces**, with separate applications for **mobile (Expo/React Native)** and **backend (Next.js API-only)**.
The goal of this README is to ensure every team member can set up the project locally, collaborate effectively, and follow best practices for consistent development.
## 📦 Project Structure
```arduino
edulite/
│── .github # GitHub workflows (CI/CD)
│── .vscode
│── apps/
│ ├── mobile/ # Expo React Native app
│ └── backend/ # Next.js API backend (no frontend)
│── .gitignore
│── .prettierignore
│── .prettierrc.json
│── package-lock.json
│── package.json # Root workspace configuration
│── README.md # You're here!
```
## 🛠️ Required Tools
- **Node.js 20+** → Download
- **npm 9+** (comes with Node.js)
- **Expo App** (recommended)
- **Git** → Download
- **Prettier extension** (mandatory for VS Code users)
## ⚙️ Setup Instructions
1. Clone the repository
```bash
git clone
github.com
cd edulite
```
2. Install dependencies
At the root:
```bash
npm install
```
This will install dependencies for all workspaces (mobile + backend).
3. Running the apps
**Mobile (Expo)**:
```bash
npm run start:mobile
```
or
```bash
cd apps/mobile
npm run start
```
- Opens Expo CLI for development builds
- You can test on:
- **Android Emulator**
- **iOS simulator**
- **Expo Go** app on your device
**Backend (Next.js API)**:
```bash
npm run dev:backend
```
or
```bash
cd apps/backend
npm run dev
```
- Starts the API-only server on [
localhost].
## 📖 Development Workflow
We use the following tools to ensure consistency:
- **ESLint** for code linting and enforcing coding standards
- **Jest** for running unit tests
- **Prettier** for automatic code formatting
- **TypeScript** for static type checking
- **GitHub Actions** for CI pipelines (lint, format, type-check and tests)
Before pushing code, always run:
` …