Skip to content

codingBlade/edulite

 
 

Repository files navigation

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

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!

🛠️ Required Tools

  • Node.js 20+Download
  • npm 9+ (comes with Node.js)
  • Expo App (recommended)
  • GitDownload
  • Prettier extension (mandatory for VS Code users)

⚙️ Setup Instructions

  1. Clone the repository

    git clone https://github.com/QuintonCodes/edulite.git
    cd edulite
  2. Install dependencies

    At the root:

    npm install

    This will install dependencies for all workspaces (mobile + backend).

  3. 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].

📖 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:

npm run lint
npm run format:check
npm run type-check
npm run test

🎨 Prettier Setup (Required)

All developers must install Prettier to keep formatting consistent

  1. Install the Prettier extension in your editor:

  2. Enable Format on Save in your editor settings:

    "editor.formatOnSave": true,
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  3. Run auto-formatting manually when needed:

    npm run format

🌿 Git Workflow (Collaboration Rules)

We follow a branch-based workflow. 👉 Never commit directly to [main].

  1. 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
  2. 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
  3. Push Your Branch

    git push origin feature/authentication-flow
  4. 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.

🧪 Running Tests

Currently, only the mobile app has tests.

npm run test:mobile

CI will also run tests automatically on PRs

📚 Learning Resources

To learn more about developing our project with Expo, look at the following resources:

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 94.4%
  • JavaScript 5.6%