{"id":29351859,"url":"https://github.com/harsh-kumar-jha/ed-tech","last_synced_at":"2026-05-05T00:32:22.528Z","repository":{"id":302345915,"uuid":"1010818803","full_name":"Harsh-kumar-jha/Ed-Tech","owner":"Harsh-kumar-jha","description":"An intelligent, scalable, and modular Node.js + TypeScript platform for IELTS test prep. Features include AI-evaluated tests, student progress tracking, real-time interactions, and comprehensive support for all four IELTS sections.","archived":false,"fork":false,"pushed_at":"2025-07-08T21:48:39.000Z","size":392,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-08T22:34:39.284Z","etag":null,"topics":["ai-integration","authentication","edtech","expressjs","groq-ai","ielts","joi","multer","nodejs","oauth2","postgressql","prisma","real-time","socket-io","typescript","winston"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Harsh-kumar-jha.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-29T21:29:58.000Z","updated_at":"2025-07-08T21:48:43.000Z","dependencies_parsed_at":"2025-07-01T22:37:27.318Z","dependency_job_id":null,"html_url":"https://github.com/Harsh-kumar-jha/Ed-Tech","commit_stats":null,"previous_names":["harsh-kumar-jha/ed-tech"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Harsh-kumar-jha/Ed-Tech","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Harsh-kumar-jha%2FEd-Tech","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Harsh-kumar-jha%2FEd-Tech/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Harsh-kumar-jha%2FEd-Tech/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Harsh-kumar-jha%2FEd-Tech/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Harsh-kumar-jha","download_url":"https://codeload.github.com/Harsh-kumar-jha/Ed-Tech/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Harsh-kumar-jha%2FEd-Tech/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264369429,"owners_count":23597393,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-integration","authentication","edtech","expressjs","groq-ai","ielts","joi","multer","nodejs","oauth2","postgressql","prisma","real-time","socket-io","typescript","winston"],"created_at":"2025-07-09T00:23:04.642Z","updated_at":"2026-05-05T00:32:22.505Z","avatar_url":"https://github.com/Harsh-kumar-jha.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IELTS EdTech Platform\r\n\r\n\u003cdiv align=\"center\"\u003e\r\n  \u003cimg src=\"https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge\u0026logo=typescript\u0026logoColor=white\" alt=\"TypeScript\"\u003e\r\n  \u003cimg src=\"https://img.shields.io/badge/Node.js-43853D?style=for-the-badge\u0026logo=node.js\u0026logoColor=white\" alt=\"Node.js\"\u003e\r\n  \u003cimg src=\"https://img.shields.io/badge/Express.js-404D59?style=for-the-badge\u0026logo=express\u0026logoColor=white\" alt=\"Express.js\"\u003e\r\n  \u003cimg src=\"https://img.shields.io/badge/PostgreSQL-316192?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white\" alt=\"PostgreSQL\"\u003e\r\n  \u003cimg src=\"https://img.shields.io/badge/Prisma-3982CE?style=for-the-badge\u0026logo=Prisma\u0026logoColor=white\" alt=\"Prisma\"\u003e\r\n  \u003cimg src=\"https://img.shields.io/badge/Socket.io-black?style=for-the-badge\u0026logo=socket.io\u0026badgeColor=010101\" alt=\"Socket.io\"\u003e\r\n  \r\n  \u003cbr\u003e\r\n  \r\n  \u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" alt=\"License: MIT\"\u003e\r\n  \u003cimg src=\"https://img.shields.io/badge/PRs-welcome-brightgreen.svg\" alt=\"PRs Welcome\"\u003e\r\n  \u003cimg src=\"https://img.shields.io/badge/version-1.0.0-blue.svg\" alt=\"Version\"\u003e\r\n\u003c/div\u003e\r\n\r\n\u003cdiv align=\"center\"\u003e\r\n  \u003ch3\u003e🎯 Comprehensive IELTS Test Preparation Platform\u003c/h3\u003e\r\n  \u003cp\u003eAn AI-powered EdTech platform built with Node.js, Express.js, and TypeScript to help students prepare for IELTS exams and achieve their study abroad goals.\u003c/p\u003e\r\n\u003c/div\u003e\r\n\r\n---\r\n\r\n## 🌟 Overview\r\n\r\nThe IELTS EdTech Platform is a comprehensive, open-source solution designed to revolutionize IELTS test preparation. Built with modern technologies and powered by AI, it provides students with personalized learning experiences, real-time feedback, and progress tracking to maximize their success in IELTS examinations.\r\n\r\n### Why This Project?\r\n\r\n- **🎓 Educational Impact**: Helps students worldwide achieve their study abroad dreams\r\n- **🤖 AI-Powered**: Leverages Groq AI for intelligent test evaluation and feedback\r\n- **🏗️ Modern Architecture**: Built with TypeScript, Express.js, and PostgreSQL for scalability\r\n- **🔄 Real-time Features**: Socket.IO integration for live communication and updates\r\n- **📊 Progress Tracking**: Comprehensive analytics and leaderboard system\r\n\r\n## 🆕 **Latest Release: Listening Module**\r\n\r\n\u003e **🎉 NEW FEATURE**: Complete IELTS Listening Module now available!\r\n\u003e - **30-minute authentic tests** (25 min audio + 5 min review)\r\n\u003e - **AI-powered evaluation** with official IELTS band scoring\r\n\u003e - **Comprehensive analytics** tracking 6 core listening skills\r\n\u003e - **25+ API endpoints** for seamless integration\r\n\u003e \r\n\u003e 📚 [**View Listening API Documentation →**](./api-docs/listening-module.api.docs.md)\r\n\r\n---\r\n\r\n## ✨ Key Features\r\n\r\n### 📚 Core IELTS Modules\r\n\r\n#### 📖 Reading Module\r\n- **Advanced Comprehension Tests**: 3 passages with 40 questions covering all IELTS reading question types\r\n- **Real-time Evaluation**: Instant scoring with detailed performance analytics\r\n- **Question Type Mastery**: True/False/Not Given, Multiple Choice, Matching, and more\r\n- **Progress Tracking**: Comprehensive analytics and improvement recommendations\r\n\r\n#### 🎧 Listening Module ⭐ **NEW**\r\n- **Authentic IELTS Experience**: 30-minute tests (25 min audio + 5 min review)\r\n- **4-Section Structure**: Social survival contexts + Educational/training contexts\r\n- **10 Question Types**: Form completion, Multiple choice, Note completion, Matching, etc.\r\n- **AI-Powered Evaluation**: Official IELTS band score calculation (0-9 scale)\r\n- **Advanced Analytics**: 6 core listening skills analysis with personalized feedback\r\n- **Audio Security**: Non-pausable, non-rewindable playback with integrity controls\r\n- **Smart Answer Matching**: Flexible answer validation with acceptable alternatives\r\n\r\n#### ✍️ Writing Module\r\n- **Task 1 \u0026 Task 2**: Academic and General Training essay evaluation\r\n- **AI-Powered Feedback**: Detailed analysis across 4 IELTS criteria\r\n- **Band Score Calculation**: Accurate scoring with improvement suggestions\r\n- **Template Management**: Dynamic task generation and structured guidance\r\n\r\n#### 🗣️ Speaking Module\r\n- **Audio Response Recording**: Professional pronunciation analysis\r\n- **Real-time Feedback**: Immediate evaluation and scoring\r\n- **Fluency Assessment**: Comprehensive speaking skills evaluation\r\n\r\n### 🚀 Platform Capabilities\r\n- **👤 Student Portfolio System**: Comprehensive progress tracking and achievement management\r\n- **🏆 Leaderboard \u0026 Gamification**: Motivational ranking system with badges and rewards\r\n- **🤖 AI Integration**: Groq AI-powered evaluation with detailed feedback\r\n- **📋 Test Summarizer**: Automated performance summaries and improvement suggestions\r\n- **⚡ Real-time Communication**: Live features powered by Socket.IO\r\n- **📁 File Management**: Support for audio, video, and document uploads\r\n- **🔐 Secure Authentication**: JWT-based auth with OAuth2 support (Google, Microsoft)\r\n- **🔒 Global Test Session Management**: Prevents concurrent module tests for better resource management\r\n\r\n### 🎯 Global Test Session Management\r\n\r\nThe platform includes a sophisticated **Global Test Session Management System** that ensures:\r\n\r\n- **Single Active Session Rule**: Users can only have one active test session across all IELTS modules at any time\r\n- **Cross-Module Prevention**: Starting a Reading test prevents starting Writing, Listening, or Speaking tests simultaneously\r\n- **Session Lifecycle Tracking**: Complete management from session creation to completion/abandonment\r\n- **Automatic Cleanup**: Expired sessions are automatically cleaned up to maintain data integrity\r\n- **User-Friendly Feedback**: Clear error messages when trying to start multiple tests\r\n\r\n#### Key Benefits:\r\n- **Prevents Resource Conflicts**: Users can't accidentally start multiple tests\r\n- **Better User Experience**: Clear feedback about active sessions across modules\r\n- **Data Integrity**: Ensures consistent test session state\r\n- **Scalable Design**: Easily extensible to new IELTS modules\r\n\r\n#### Global Session API:\r\n- `GET /api/v1/test-session/active` - Check current active session\r\n- `POST /api/v1/test-session/abandon` - Abandon current active session\r\n- `GET /api/v1/test-session/history` - Get session history\r\n- `POST /api/v1/test-session/cleanup-expired` - Admin cleanup of expired sessions\r\n\r\n---\r\n\r\n## 🔌 **API Endpoints Overview**\r\n\r\n### 📖 **Reading Module**\r\n```\r\nGET    /api/v1/reading/test-sets          # Get available reading tests\r\nPOST   /api/v1/reading/start-test         # Start reading test session\r\nPOST   /api/v1/reading/begin-test/:id     # Begin test timing\r\nPOST   /api/v1/reading/submit-answers     # Submit answers for evaluation\r\nGET    /api/v1/reading/results/:id        # Get test results\r\nGET    /api/v1/reading/analytics          # Get user analytics\r\n```\r\n\r\n### 🎧 **Listening Module** ⭐ **NEW**\r\n```\r\n# Student Endpoints\r\nGET    /api/v1/listening/tests             # Get available listening tests\r\nPOST   /api/v1/listening/start             # Start listening test session\r\nGET    /api/v1/listening/session/active    # Get active session details\r\nPUT    /api/v1/listening/session/:id/progress  # Update session progress\r\nPOST   /api/v1/listening/submit            # Submit answers for evaluation\r\nGET    /api/v1/listening/history           # Get test history\r\nGET    /api/v1/listening/analytics         # Get performance analytics\r\n\r\n# Admin Endpoints\r\nPOST   /api/v1/listening/admin/tests       # Create new listening test\r\nPOST   /api/v1/listening/admin/tests/:id/audio  # Upload audio files\r\nGET    /api/v1/listening/admin/tests       # Manage listening tests\r\nGET    /api/v1/listening/admin/tests/:id/statistics  # View test statistics\r\n```\r\n\r\n### ✍️ **Writing Module**\r\n```\r\nPOST   /api/v1/ai/writing/start            # Start writing test\r\nPOST   /api/v1/ai/writing/evaluate/task1   # Evaluate Task 1\r\nPOST   /api/v1/ai/writing/evaluate/task2   # Evaluate Task 2\r\nGET    /api/v1/ai/writing/progress         # Get writing progress\r\n```\r\n\r\n### 🔐 **Authentication**\r\n```\r\nPOST   /api/v1/auth/register               # User registration\r\nPOST   /api/v1/auth/login                  # Email/username login\r\nPOST   /api/v1/auth/phone-login            # Phone-based login\r\nPOST   /api/v1/auth/verify-otp             # OTP verification\r\nPOST   /api/v1/auth/forgot-password        # Password reset request\r\nPOST   /api/v1/auth/refresh                # Refresh JWT tokens\r\n```\r\n\r\n### 🎯 **Global Test Sessions**\r\n```\r\nGET    /api/v1/test-session/active         # Check active session\r\nPOST   /api/v1/test-session/abandon        # Abandon current session\r\nGET    /api/v1/test-session/history        # Session history\r\n```\r\n\r\n\u003e 📚 **Complete API Documentation**: See `/api-docs/` folder for detailed endpoint documentation\r\n\r\n---\r\n\r\n## 🏗️ Technical Architecture\r\n\r\n### Technology Stack\r\n\r\n| Category | Technology |\r\n|----------|------------|\r\n| **Backend** | Node.js, Express.js, TypeScript |\r\n| **Database** | PostgreSQL with Prisma ORM |\r\n| **AI/ML** | Groq AI for intelligent evaluation |\r\n| **Real-time** | Socket.IO for live features |\r\n| **Authentication** | JWT with OAuth2 (Google, Microsoft) |\r\n| **File Storage** | Multer for local storage |\r\n| **Logging** | Winston with daily rotation |\r\n| **Validation** | Joi for request validation |\r\n| **Security** | bcrypt, rate limiting, CORS |\r\n\r\n### 📁 Project Structure\r\n\r\n```\r\nEdTech/\r\n├── 📁 api-docs/            # Comprehensive API documentation\r\n│   ├── 📄 auth.api.docs.md            # Authentication APIs\r\n│   ├── 📄 reading-module.api.docs.md  # Reading module APIs\r\n│   ├── 📄 listening-module.api.docs.md # 🆕 Listening module APIs\r\n│   ├── 📄 writing-evaluation.api.docs.md # Writing evaluation APIs\r\n│   └── 📄 GLOBAL-TEST-SESSION-SYSTEM.md # Global session management\r\n├── 📁 src/\r\n│   ├── 📁 config/           # Application configuration\r\n│   ├── 📁 constants/        # Application constants\r\n│   │   └── 📄 listening-config.ts # 🆕 Listening module constants\r\n│   ├── 📁 db/              # Database utilities\r\n│   ├── 📁 interface/       # TypeScript interfaces\r\n│   │   └── 📄 listening.interface.ts # 🆕 Listening module interfaces\r\n│   ├── 📁 services/        # Modular business logic services\r\n│   │   ├── 📁 Auth/        # Authentication service\r\n│   │   ├── 📁 AI/          # AI integration service\r\n│   │   │   └── 📁 config/  \r\n│   │   │       └── 📄 listening-evaluation.config.ts # 🆕 AI listening config\r\n│   │   ├── 📁 Ielts/       # IELTS test services\r\n│   │   │   ├── 📁 services/\r\n│   │   │   │   ├── 📄 listening-test.service.ts # 🆕 Test management\r\n│   │   │   │   ├── 📄 listening-session.service.ts # 🆕 Session handling\r\n│   │   │   │   └── 📄 listening-evaluation.service.ts # 🆕 AI evaluation\r\n│   │   │   ├── 📁 controller/\r\n│   │   │   │   ├── 📄 listening-test.controller.ts # 🆕 Admin controllers\r\n│   │   │   │   └── 📄 listening-session.controller.ts # 🆕 Student controllers\r\n│   │   │   └── 📁 routes/\r\n│   │   │       └── 📄 listening.routes.ts # 🆕 Listening API routes\r\n│   │   ├── 📁 Leaderboard/ # Leaderboard service\r\n│   │   └── 📁 Profile/     # User profile service\r\n│   ├── 📁 tests/           # Test utilities and integration tests\r\n│   ├── 📁 types/           # TypeScript type definitions\r\n│   ├── 📁 utils/           # Utility functions\r\n│   └── 📄 server.ts        # Server setup\r\n├── 📁 prisma/              # Modular database schema\r\n│   ├── 📁 models/          # Individual model files\r\n│   │   └── 📄 listening-module.prisma # 🆕 Listening database models\r\n│   ├── 📁 enums/           # Enum definitions\r\n│   ├── 📁 scripts/         # Schema build scripts\r\n│   └── 📄 schema.prisma    # Generated main schema\r\n├── 📁 logs/                # Application logs\r\n├── 📁 public/             # Static files\r\n├── 📄 package.json        # Dependencies and scripts\r\n├── 📄 tsconfig.json       # TypeScript configuration\r\n└── 📄 index.ts           # Application entry point\r\n```\r\n\r\n## 🚀 Quick Start\r\n\r\n### Prerequisites\r\n\r\nMake sure you have the following installed:\r\n\r\n- **Node.js** (v18.0.0 or higher) - [Download here](https://nodejs.org/)\r\n- **pnpm** (v8.0.0 or higher) - [Install guide](https://pnpm.io/installation)\r\n- **PostgreSQL** (v13 or higher) - [Download here](https://www.postgresql.org/download/)\r\n- **Groq AI API Key** - [Get your key](https://console.groq.com/)\r\n\r\n### Installation\r\n\r\n1. **Clone the repository**\r\n   ```bash\r\n   git clone https://github.com/yourusername/ielts-edtech-platform.git\r\n   cd ielts-edtech-platform\r\n   ```\r\n\r\n2. **Install dependencies**\r\n   ```bash\r\n   pnpm install\r\n   ```\r\n\r\n3. **Environment configuration**\r\n   ```bash\r\n   cp .env.sample .env\r\n   ```\r\n\r\n4. **Configure environment variables**\r\n   ```env\r\n   # Server Configuration\r\n   NODE_ENV=development\r\n   PORT=3000\r\n   API_VERSION=v1\r\n\r\n   # Database Configuration\r\n   DATABASE_URL=\"postgresql://username:password@localhost:5432/ielts_edtech_db\"\r\n\r\n   # JWT Configuration\r\n   JWT_SECRET=your-super-secure-jwt-secret-key-here\r\n   JWT_EXPIRES_IN=7d\r\n\r\n   # AI Configuration (Groq)\r\n   GROQ_API_KEY=your-groq-api-key-here\r\n   GROQ_MODEL=mixtral-8x7b-32768\r\n\r\n   # OAuth Configuration\r\n   GOOGLE_CLIENT_ID=your-google-client-id\r\n   GOOGLE_CLIENT_SECRET=your-google-client-secret\r\n   ```\r\n\r\n5. **Database setup**\r\n   ```bash\r\n   # Create database\r\n   createdb ielts_edtech_db\r\n\r\n   # Build schema and generate client\r\n   pnpm run db:build-schema\r\n   pnpm run db:generate\r\n   pnpm run db:migrate\r\n\r\n   # (Optional) Seed with test data\r\n   pnpm run db:seed\r\n   ```\r\n\r\n6. **Start the application**\r\n   ```bash\r\n   # Development mode\r\n   pnpm run dev\r\n\r\n   # Production mode\r\n   pnpm run build \u0026\u0026 pnpm start\r\n   ```\r\n\r\nVisit `http://localhost:3000` to access the application!\r\n\r\n## 📚 Documentation\r\n\r\n| Documentation | Description |\r\n|---------------|-------------|\r\n| [API Documentation](./api-docs/) | Complete API reference and examples |\r\n| [Authentication Guide](./api-docs/auth.api.docs.md) | Authentication and authorization |\r\n| [Writing Evaluation API](./api-docs/writing-evaluation.api.docs.md) | AI-powered writing assessment |\r\n| [Global Test Session System](./GLOBAL-TEST-SESSION-SYSTEM.md) | Global session management documentation |\r\n| [Contributing Guide](./CONTRIBUTING.md) | How to contribute to the project |\r\n| [Code of Conduct](./CODE_OF_CONDUCT.md) | Community guidelines |\r\n\r\n### 🔗 Key API Endpoints\r\n\r\n#### Reading Module\r\n- `GET /api/v1/reading/test-sets` - Get all reading test sets\r\n- `GET /api/v1/reading/test-sets/:id` - Get specific test set details\r\n- `POST /api/v1/reading/start-test/:testSetId` - Start a reading test session\r\n- `POST /api/v1/reading/submit-answers` - Submit reading test answers\r\n- `GET /api/v1/reading/session/:sessionId` - Get test session details\r\n- `POST /api/v1/reading/session/:sessionId/abandon` - Abandon test session\r\n\r\n#### Global Test Session Management\r\n- `GET /api/v1/test-session/active` - Check current active session\r\n- `POST /api/v1/test-session/abandon` - Abandon current active session\r\n- `GET /api/v1/test-session/history` - Get session history\r\n- `POST /api/v1/test-session/cleanup-expired` - Admin cleanup of expired sessions\r\n\r\n## 🤝 Contributing\r\n\r\nWe welcome contributions from the community! Here's how you can help:\r\n\r\n### Ways to Contribute\r\n\r\n- 🐛 **Bug Reports**: Found an issue? [Create a bug report](https://github.com/yourusername/ielts-edtech-platform/issues/new?template=bug_report.md)\r\n- 💡 **Feature Requests**: Have an idea? [Suggest a feature](https://github.com/yourusername/ielts-edtech-platform/issues/new?template=feature_request.md)\r\n- 📝 **Documentation**: Improve our docs or write tutorials\r\n- 🔧 **Code Contributions**: Fix bugs or implement new features\r\n- 🧪 **Testing**: Help us improve test coverage\r\n- 🌐 **Translation**: Help us support more languages\r\n\r\n### Development Workflow\r\n\r\n1. **Fork** the repository\r\n2. **Create** a feature branch: `git checkout -b feature/amazing-feature`\r\n3. **Commit** your changes: `git commit -m 'Add some amazing feature'`\r\n4. **Push** to the branch: `git push origin feature/amazing-feature`\r\n5. **Open** a Pull Request\r\n\r\n### Development Guidelines\r\n\r\n- Follow the existing code style and conventions\r\n- Write tests for new features\r\n- Update documentation for any API changes\r\n- Ensure all tests pass before submitting\r\n- Use descriptive commit messages\r\n\r\n## 🔒 Security\r\n\r\nSecurity is a top priority. This platform includes:\r\n\r\n- **JWT-based authentication** with refresh tokens\r\n- **OAuth 2.0 integration** (Google, Microsoft)\r\n- **Rate limiting** to prevent abuse\r\n- **Input validation** using Joi\r\n- **CORS protection** and security headers\r\n- **Password hashing** with bcrypt\r\n- **Two-factor authentication** (SMS)\r\n- **Audit logging** for sensitive operations\r\n\r\n## 📊 Monitoring \u0026 Analytics\r\n\r\n- **Winston logging** with daily rotation\r\n- **Request/Response logging** for debugging\r\n- **Error tracking** and performance monitoring\r\n- **User analytics** and learning insights\r\n- **Test performance metrics**\r\n\r\n## 📈 Performance\r\n\r\n- **Scalable architecture** with modular services\r\n- **Database optimization** with Prisma ORM\r\n- **Real-time features** with Socket.IO\r\n- **File upload optimization** with Multer\r\n- **Caching strategies** for improved performance\r\n\r\n## 🌐 Community\r\n\r\n- **Discord**: [Join our community](#)\r\n- **GitHub Discussions**: [Ask questions and share ideas](#)\r\n- **Twitter**: [@harshxdev](https://x.com/harshxdev)\r\n\r\n## 📄 License\r\n\r\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\r\n\r\n## 🙏 Acknowledgments\r\n\r\n- Thanks to all contributors who have helped shape this project\r\n- Groq AI for providing powerful AI capabilities\r\n- The open-source community for inspiration and support\r\n- IELTS test-takers worldwide who inspired this project\r\n\r\n---\r\n\r\n\u003cdiv align=\"center\"\u003e\r\n  \u003cp\u003e⭐ If you find this project helpful, please give it a star! ⭐\u003c/p\u003e\r\n  \u003cp\u003eMade with ❤️ by the IELTS EdTech Platform team\u003c/p\u003e\r\n\u003c/div\u003e\r\n\r\n## Cloudinary Integration\r\n\r\nThis project uses Cloudinary for media storage (images, audio, video). The integration provides:\r\n\r\n- Secure storage and delivery of media assets\r\n- Automatic optimization and transformation of images\r\n- Responsive image handling\r\n- Support for various media types\r\n\r\n### Setup\r\n\r\n1. Create a free Cloudinary account at [cloudinary.com](https://cloudinary.com/)\r\n2. Configure your environment variables:\r\n\r\n```\r\nCLOUDINARY_CLOUD_NAME=your_cloud_name\r\nCLOUDINARY_API_KEY=your_api_key\r\nCLOUDINARY_API_SECRET=your_api_secret\r\nCLOUDINARY_SECURE=true\r\n```\r\n\r\n### Usage\r\n\r\nThe platform provides a reusable service for media uploads:\r\n\r\n```typescript\r\nimport { CloudinaryUploader } from '../services/common/cloudinary-uploader.service';\r\n\r\n// Get singleton instance\r\nconst uploader = CloudinaryUploader.getInstance();\r\n\r\n// Upload a file\r\nconst result = await uploader.uploadFile(file, {\r\n  folder: 'my-folder',\r\n  tags: ['tag1', 'tag2'],\r\n  // other Cloudinary options\r\n});\r\n\r\n// Access the Cloudinary URL\r\nconst imageUrl = result.data.secure_url;\r\n```\r\n\r\nFor API endpoints that accept file uploads, use the multer middleware:\r\n\r\n```typescript\r\nimport { createUploadMiddleware } from '../common/multer-upload.middleware';\r\n\r\nconst imageUpload = createUploadMiddleware('image', {\r\n  allowedMimeTypes: ['image/jpeg', 'image/png'],\r\n  limits: { fileSize: 5 * 1024 * 1024 } // 5MB\r\n});\r\n\r\nrouter.post('/upload', imageUpload, controller.uploadHandler);\r\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharsh-kumar-jha%2Fed-tech","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fharsh-kumar-jha%2Fed-tech","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharsh-kumar-jha%2Fed-tech/lists"}