---
# π EZTutor β AI-Powered Teacher Productivity Suite
<div align="center">
[](https://opensource.org/licenses/MIT)
[]()
[](https://nodejs.org/)
[](https://react.dev/)
_Empower teachers with AI-driven lesson planning, quiz generation, and resource organization._
</div>
---
EZTutor is a lightweight full-stack MVP built to help teachers save preparation time by generating structured lesson plans and quizzes and organizing teaching resources.
- π Smart Lesson Planner β AI-generated or custom-built lesson plans with objectives, key points, activities, and differentiation strategies
- π Quiz & Worksheet Generator β AI-generated or custom quizzes with MCQs, short answers, and essay prompts with answer keys
- π Content Library β Save, organize, and edit all your custom and AI-generated lesson plans and quizzes
- βοΈ Google Drive Integration β Export lesson plans and quizzes to Google Drive (Phase 1 launching soon)
- π Resource Organizer β Upload, auto-tag, and search teaching materials
Keep the product lean, fast, and immediately useful while providing a solid foundation for future features (collaboration, analytics, grading).
| Feature | Details |
|---|---|
| AI Generation | Input subject & topic β auto-generate lesson plan in seconds |
| Custom Creation | Build lessons from scratch with full control over objectives, activities, materials |
| Editing | Modify any generated or custom lesson plan after creation |
| Output | Objectives, key points, activities, assessments, materials, differentiation |
| Storage | Save unlimited lesson plans to personal library |
| Export | Coming soon: Export to Google Drive, PDF, Word |
| Feature | Details |
|---|---|
| AI Generation | Auto-generate quizzes with customizable difficulty and question types |
| Custom Creation | Build quizzes from scratchβadd MCQs, short answers, essays individually |
| Editing | Modify any generated or custom quiz, add/remove questions |
| Output | Multiple choice (with explanations), short-answer (with sample answers), essay (with rubric guidance) |
| Quality Presets | Balanced, MCQ-heavy, writing-heavy question distribution presets |
| Storage | Save unlimited quizzes to personal library |
| Export | Coming soon: Export to Google Drive, PDF, Word |
| Feature | Details |
|---|---|
| Upload | PDFs, images, docs |
| Auto-tagging | Smart categorization by subject/topic |
| Search | Full-text and tag-based search |
| Layer | Technology |
|---|---|
| Frontend | React 19, TailwindCSS, Axios |
| Backend | Node.js, Express 5 |
| AI Engine | Groq SDK (llama-3.1 family) |
| Database | PostgreSQL (lesson plans, quizzes, user accounts) |
| Cloud Storage | Google Drive (Phase 1), Cloudinary / Firebase (planned) |
| Auth | JWT + bcrypt password hashing |
| Infrastructure | Render.com (deployment-ready) |
EZTutor/
βββ client/ # React frontend
βββ server/ # Express backend
βββ docs/ # architecture, api-schema, deployment, security
βββ CODE_REVIEW.md
βββ REFACTORING_ROADMAP.md
βββ README.md
See FOLDER_STRUCTURE_GUIDE.md for a full breakdown.
- Node.js 18+ and npm
- PostgreSQL 12+ (or hosted DB)
- Groq API key (see https://console.groq.com)
git clone https://github.com/refatwashere/EZTutor.git
cd EZTutor
npm install
# Start backend
cd server
npm install
cp .env.example .env
# edit .env, then:
npm start
# Start frontend (in another terminal)
cd ../client
npm install
npm startFrontend runs at http://localhost:3000, API at http://localhost:5000.
To export lessons and quizzes to Google Drive:
- Follow GOOGLE_CLOUD_SETUP.md to create a Google Cloud project
- Add
GOOGLE_CLIENT_IDandGOOGLE_CLIENT_SECRETtoserver/.env - Generate and add
ENCRYPTION_KEYtoserver/.env - Restart the server
See Quick Reference for a condensed checklist and Integration Checklist for detailed verification steps.
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/signup |
Create account |
| POST | /api/auth/login |
Login & receive JWT |
| GET | /api/auth/me |
Get current user (auth) |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/generate-lesson |
Generate lesson plan (subject, topic) |
| POST | /api/generate-quiz |
Generate quiz (topic, difficulty, grade) |
| POST | /api/support |
Submit support request |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/recents |
List user's recents (auth) |
| POST | /api/recents |
Add a recent item (auth) |
| DELETE | /api/recents |
Clear recents (auth) |
Health endpoints: GET /health, GET /health/groq
Full schema: docs/api-schema.md.
-
Note: the repository's committed
.envfile was removed during a security cleanup. If you previously committed secrets, rotate them now. -
Input validation (express-validator or custom checks)
-
Rate limiting: 100 requests / 15 minutes per IP
-
JWT auth for protected endpoints
-
bcrypt password hashing
-
Parameterized DB queries (pg) to prevent SQL injection
-
Optional API key gating (
EZTUTOR_API_KEY)
See docs/SECURITY.md for details.
Lesson plan example and quiz schema are in docs/api-schema.md.
Backend
cd server
# runs Node's built-in test runner (node --test). Tests set NODE_ENV=test automatically
npm testNotes:
- Server tests set
process.env.NODE_ENV = 'test'inside individual test files to ensure background pollers (export queue) are disabled during runs. - If you need to force-disable the export queue in other environments, set
DISABLE_EXPORT_QUEUE=truein your environment.
Frontend
cd client
npm install
npm start # run dev server (http://localhost:3000)
# or run tests
npm testTips for CI and local dev:
- Ensure
NODE_ENV=testis set for server-side unit tests (the project tests already set this in test files). - The export worker attempts DB connections when enabled; CI environments without a DB should either run tests in
NODE_ENV=testor setDISABLE_EXPORT_QUEUE=trueto avoid connection attempts.
- Architecture Overview β System design & component relationships
- API Schema β Full API endpoint reference
- Deployment Guide β Deploy to production (Render, Vercel, etc.)
- Security Guide β Security best practices & token management
- Google Cloud Setup Guide β Complete step-by-step guide for creating Google Cloud project, enabling APIs, and configuring OAuth
- Quick Reference β Checklist, credentials template, common commands, troubleshooting
- Integration Checklist β Detailed verification checklist, architecture diagrams, file locations
- Technical Integration β Token management, retry queue, error handling details
π Start here: If you want to enable Google Drive exports, read GOOGLE_CLOUD_SETUP.md first.
- Fork the repo
- Create a feature branch:
git checkout -b feature/your-feature - Run tests and add coverage
- Open a PR describing your changes
Please follow commit hygiene and include tests for new features.
MIT β see LICENSE file for details.
If you want, I can also:
- apply the
FOLDER_STRUCTURE_GUIDE.mdchanges, - add
server/constants.jsandclient/src/services/api.js, - or create the
.env.examplefile.