A monorepo containing the QuestEdu educational platform and its related packages, managed with pnpm workspaces.
QuestEdu is an educational platform built with React Native and Expo, featuring course management, user profiles, and Firebase integration.
- Node.js (version 18 or higher)
- pnpm (version 8 or higher)
- Expo CLI
-
Install pnpm globally if you haven't already:
npm install -g pnpm
-
Clone the repository and install dependencies:
git clone <repository-url> cd questedu pnpm install
-
Set up environment variables:
cd apps/questedu cp .env.example .env # Edit .env with your Firebase configuration
-
Start the development server:
pnpm dev
├── apps/
│ └── questedu/ # Main QuestEdu React Native/Expo app
├── packages/ # Shared packages (future use)
├── package.json # Root package.json with workspace configuration
├── pnpm-workspace.yaml # PNPM workspace configuration
└── Documentation files # Setup guides and migration docs
All commands are run from the root and automatically target the appropriate workspace:
pnpm dev- Start the QuestEdu app in development modepnpm start- Start the Expo development serverpnpm android- Start on Android device/emulatorpnpm ios- Start on iOS device/simulatorpnpm web- Start web version
pnpm build- Build the QuestEdu app for productionpnpm lint- Run linting
pnpm reset-project- Reset the project (run setup scripts)
The main educational platform app built with:
- React Native & Expo - Cross-platform mobile development
- React Native Paper - Material Design UI components
- React Navigation - Navigation and routing
- Firebase - Backend services (Firestore, Auth)
- TypeScript - Type safety
FIREBASE_SETUP.md- Firebase project setup guideDATABASE_INIT_GUIDE.md- Database initializationFIRESTORE_SECURITY_RULES.md- Security rules setupMIGRATION_SUMMARY.md- Migration notes
Add a package to a specific workspace:
pnpm --filter questedu add <package-name>Add a dev dependency:
pnpm --filter questedu add -D <package-name>Run commands in a specific workspace:
pnpm --filter questedu <command>To add a new shared package:
- Create a new directory in
packages/ - Add a
package.jsonwith appropriate name and dependencies - The package will automatically be included in the workspace
- Make sure to run
pnpm installat the root level - Follow the existing code style and conventions
- Test your changes with
pnpm lintandpnpm build - Update documentation as needed