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:
` β¦