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.
edulite/
│── apps/
│ ├── mobile/ # Expo React Native app
│ └── backend/ # Next.js API backend (no frontend)
│── .github/ # GitHub workflows (CI/CD)
│── package.json # Root workspace configuration
│── README.md # You're here!
- Node.js 20+ → Download
- npm 9+ (comes with Node.js)
- Expo App (recommended)
- Git → Download
- Prettier extension (mandatory for VS Code users)
- 
Clone the repository git clone https://github.com/QuintonCodes/edulite.git cd edulite
- 
Install dependencies At the root: npm install This will install dependencies for all workspaces (mobile + backend). 
- 
Running the apps Mobile (Expo): npm run start:mobile or 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): npm run dev:backend or cd apps/backend npm run dev- Starts the API-only server on [http://localhost:4000].
 
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:
npm run lint
npm run format:check
npm run type-check
npm run testAll developers must install Prettier to keep formatting consistent
- 
Install the Prettier extension in your editor: 
- 
Enable Format on Save in your editor settings: "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode" 
- 
Run auto-formatting manually when needed: npm run format 
We follow a branch-based workflow. 👉 Never commit directly to [main].
- 
Create your branch for your task: - [feature/] -> for new features
- [fix/] -> for bug fixes
- [chore/] -> for maintenance tasks (configs, cleanup)
- [docs/] -> for documentation updates
 Example: git checkout -b feature/authentication-flow 
- 
Commit Messages Follow Conventional Commits: - [feat:] -> for new features
- [fix:] -> for bug fixes
- [chore:] -> for tooling/config updates
- [docs:] -> for docs only changes Example:
 feat(auth): add JWT authentication middleware fix(api): resolve 500 error on login route 
- 
Push Your Branch git push origin feature/authentication-flow 
- 
Create a Pull Request (PR) - Go to GitHub -> Open a Pull Request into [main]
- Fill out PR description:
- Summary of changes
- Related issue/task
- Screenshots (if UI-related)
- Checklist (lint, tests passing)
 
 The CI pipeline will: - Run lint
- Check formatting
- Run type-checks
- Execute tests
 ✅ Only merge when all checks pass. 
Currently, only the mobile app has tests.
npm run test:mobileCI will also run tests automatically on PRs
To learn more about developing our project with Expo, look at the following resources: