ExamPilot is an AI-powered adaptive learning platform designed to revolutionize how students prepare for exams. It creates personalized study plans, helps students calibrate their confidence, and uses spaced repetition to ensure long-term retention of knowledge.
- 🤖 Adaptive Study Planning: Generates a dynamic, personalized study schedule based on your specific needs and learning pace.
- 🧐 Confidence Calibration: Helps you identify and bridge the gap between what you think you know and what you actually know.
- 🗓️ Spaced Repetition: Schedules reviews at optimal intervals for long-term memory retention.
- 📝 AI Note Summarization: Automatically summarizes your study notes to highlight key concepts.
- 🍅 Pomodoro Timer & Focus Coach: Integrated tools to enhance focus and productivity during study sessions.
- 🏆 Gamification: Stay motivated with achievement badges, streak counters, and a skill tree.
- 🤝 Study Groups: Collaborate with peers in focused study groups.
- 🌐 Browser Extension: Import course materials and notes directly from your browser.
| Category | Technology |
|---|---|
| Frontend | React, TypeScript, Vite, Tailwind CSS, shadcn/ui |
| Backend | Firebase Cloud Functions (Node.js, Express) |
| Database | Cloud Firestore |
| Auth | Firebase Authentication |
| AI | Google Gemini |
| Deployment | Firebase Hosting |
Follow these instructions to get the project running on your local machine.
- Node.js (v18 or later)
- Firebase CLI
git clone <your-repository-url>
cd ExamPilotThis project uses NPM workspaces. Install all dependencies from the root directory.
npm installThe client application (client/) requires Firebase credentials to connect to your project.
-
Navigate to the
clientdirectory:cd client -
Copy the example environment file:
cp .env.example .env.local
-
Open the new
.env.localfile and fill in your actual Firebase project configuration values. You can find these in your Firebase project settings.
The backend Firebase Functions require a service account to interact with Firebase services.
-
Go to your Firebase project settings, then the "Service accounts" tab.
-
Click "Generate new private key" and save the JSON file.
-
Set the
GOOGLE_APPLICATION_CREDENTIALSenvironment variable to the absolute path of this downloaded JSON file. For example:export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"
-
Start the Firebase Emulators: This will start local emulators for Auth, Firestore, and Functions.
firebase emulators:start
-
Start the Frontend Development Server: In a new terminal, navigate to the
clientdirectory and run the dev script.cd client npm run dev
The application should now be running on http://localhost:5173, connected to the local Firebase emulators.
A brief overview of the key directories in this project:
ExamPilot/
├── client/ # React frontend application (Vite)
├── functions/ # Firebase Cloud Functions for the backend API
├── common/ # Shared TypeScript types and code
├── extension/ # Chrome extension for content scraping
├── infra/ # Infrastructure config (Firebase rules, indexes)
├── docs/ # Project documentation
└── .github/ # CI/CD workflows
The project is configured for easy deployment to Firebase.
-
Build all packages:
npm run build
-
Deploy to Firebase:
This command will deploy Firebase Hosting, Firestore rules, and Cloud Functions.
firebase deploy
The backend API is served from a single Firebase Function (api) using an Express app. Key routes include:
GET /healthPOST /importPOST /plan/generatePOST /quiz/generatePOST /chat/messageGET /analytics/progress
See functions/src/index.ts for the full list of routes.