An 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.
The 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.
- π Educational Impact: Helps students worldwide achieve their study abroad dreams
- π€ AI-Powered: Leverages Groq AI for intelligent test evaluation and feedback
- ποΈ Modern Architecture: Built with TypeScript, Express.js, and PostgreSQL for scalability
- π Real-time Features: Socket.IO integration for live communication and updates
- π Progress Tracking: Comprehensive analytics and leaderboard system
π NEW FEATURE: Complete IELTS Listening Module now available!
- 30-minute authentic tests (25 min audio + 5 min review)
- AI-powered evaluation with official IELTS band scoring
- Comprehensive analytics tracking 6 core listening skills
- 25+ API endpoints for seamless integration
- Advanced Comprehension Tests: 3 passages with 40 questions covering all IELTS reading question types
- Real-time Evaluation: Instant scoring with detailed performance analytics
- Question Type Mastery: True/False/Not Given, Multiple Choice, Matching, and more
- Progress Tracking: Comprehensive analytics and improvement recommendations
- Authentic IELTS Experience: 30-minute tests (25 min audio + 5 min review)
- 4-Section Structure: Social survival contexts + Educational/training contexts
- 10 Question Types: Form completion, Multiple choice, Note completion, Matching, etc.
- AI-Powered Evaluation: Official IELTS band score calculation (0-9 scale)
- Advanced Analytics: 6 core listening skills analysis with personalized feedback
- Audio Security: Non-pausable, non-rewindable playback with integrity controls
- Smart Answer Matching: Flexible answer validation with acceptable alternatives
- Task 1 & Task 2: Academic and General Training essay evaluation
- AI-Powered Feedback: Detailed analysis across 4 IELTS criteria
- Band Score Calculation: Accurate scoring with improvement suggestions
- Template Management: Dynamic task generation and structured guidance
- Audio Response Recording: Professional pronunciation analysis
- Real-time Feedback: Immediate evaluation and scoring
- Fluency Assessment: Comprehensive speaking skills evaluation
- π€ Student Portfolio System: Comprehensive progress tracking and achievement management
- π Leaderboard & Gamification: Motivational ranking system with badges and rewards
- π€ AI Integration: Groq AI-powered evaluation with detailed feedback
- π Test Summarizer: Automated performance summaries and improvement suggestions
- β‘ Real-time Communication: Live features powered by Socket.IO
- π File Management: Support for audio, video, and document uploads
- π Secure Authentication: JWT-based auth with OAuth2 support (Google, Microsoft)
- π Global Test Session Management: Prevents concurrent module tests for better resource management
The platform includes a sophisticated Global Test Session Management System that ensures:
- Single Active Session Rule: Users can only have one active test session across all IELTS modules at any time
- Cross-Module Prevention: Starting a Reading test prevents starting Writing, Listening, or Speaking tests simultaneously
- Session Lifecycle Tracking: Complete management from session creation to completion/abandonment
- Automatic Cleanup: Expired sessions are automatically cleaned up to maintain data integrity
- User-Friendly Feedback: Clear error messages when trying to start multiple tests
- Prevents Resource Conflicts: Users can't accidentally start multiple tests
- Better User Experience: Clear feedback about active sessions across modules
- Data Integrity: Ensures consistent test session state
- Scalable Design: Easily extensible to new IELTS modules
GET /api/v1/test-session/active
- Check current active sessionPOST /api/v1/test-session/abandon
- Abandon current active sessionGET /api/v1/test-session/history
- Get session historyPOST /api/v1/test-session/cleanup-expired
- Admin cleanup of expired sessions
GET /api/v1/reading/test-sets # Get available reading tests
POST /api/v1/reading/start-test # Start reading test session
POST /api/v1/reading/begin-test/:id # Begin test timing
POST /api/v1/reading/submit-answers # Submit answers for evaluation
GET /api/v1/reading/results/:id # Get test results
GET /api/v1/reading/analytics # Get user analytics
# Student Endpoints
GET /api/v1/listening/tests # Get available listening tests
POST /api/v1/listening/start # Start listening test session
GET /api/v1/listening/session/active # Get active session details
PUT /api/v1/listening/session/:id/progress # Update session progress
POST /api/v1/listening/submit # Submit answers for evaluation
GET /api/v1/listening/history # Get test history
GET /api/v1/listening/analytics # Get performance analytics
# Admin Endpoints
POST /api/v1/listening/admin/tests # Create new listening test
POST /api/v1/listening/admin/tests/:id/audio # Upload audio files
GET /api/v1/listening/admin/tests # Manage listening tests
GET /api/v1/listening/admin/tests/:id/statistics # View test statistics
POST /api/v1/ai/writing/start # Start writing test
POST /api/v1/ai/writing/evaluate/task1 # Evaluate Task 1
POST /api/v1/ai/writing/evaluate/task2 # Evaluate Task 2
GET /api/v1/ai/writing/progress # Get writing progress
POST /api/v1/auth/register # User registration
POST /api/v1/auth/login # Email/username login
POST /api/v1/auth/phone-login # Phone-based login
POST /api/v1/auth/verify-otp # OTP verification
POST /api/v1/auth/forgot-password # Password reset request
POST /api/v1/auth/refresh # Refresh JWT tokens
GET /api/v1/test-session/active # Check active session
POST /api/v1/test-session/abandon # Abandon current session
GET /api/v1/test-session/history # Session history
π Complete API Documentation: See
/api-docs/
folder for detailed endpoint documentation
Category | Technology |
---|---|
Backend | Node.js, Express.js, TypeScript |
Database | PostgreSQL with Prisma ORM |
AI/ML | Groq AI for intelligent evaluation |
Real-time | Socket.IO for live features |
Authentication | JWT with OAuth2 (Google, Microsoft) |
File Storage | Multer for local storage |
Logging | Winston with daily rotation |
Validation | Joi for request validation |
Security | bcrypt, rate limiting, CORS |
EdTech/
βββ π api-docs/ # Comprehensive API documentation
β βββ π auth.api.docs.md # Authentication APIs
β βββ π reading-module.api.docs.md # Reading module APIs
β βββ π listening-module.api.docs.md # π Listening module APIs
β βββ π writing-evaluation.api.docs.md # Writing evaluation APIs
β βββ π GLOBAL-TEST-SESSION-SYSTEM.md # Global session management
βββ π src/
β βββ π config/ # Application configuration
β βββ π constants/ # Application constants
β β βββ π listening-config.ts # π Listening module constants
β βββ π db/ # Database utilities
β βββ π interface/ # TypeScript interfaces
β β βββ π listening.interface.ts # π Listening module interfaces
β βββ π services/ # Modular business logic services
β β βββ π Auth/ # Authentication service
β β βββ π AI/ # AI integration service
β β β βββ π config/
β β β βββ π listening-evaluation.config.ts # π AI listening config
β β βββ π Ielts/ # IELTS test services
β β β βββ π services/
β β β β βββ π listening-test.service.ts # π Test management
β β β β βββ π listening-session.service.ts # π Session handling
β β β β βββ π listening-evaluation.service.ts # π AI evaluation
β β β βββ π controller/
β β β β βββ π listening-test.controller.ts # π Admin controllers
β β β β βββ π listening-session.controller.ts # π Student controllers
β β β βββ π routes/
β β β βββ π listening.routes.ts # π Listening API routes
β β βββ π Leaderboard/ # Leaderboard service
β β βββ π Profile/ # User profile service
β βββ π tests/ # Test utilities and integration tests
β βββ π types/ # TypeScript type definitions
β βββ π utils/ # Utility functions
β βββ π server.ts # Server setup
βββ π prisma/ # Modular database schema
β βββ π models/ # Individual model files
β β βββ π listening-module.prisma # π Listening database models
β βββ π enums/ # Enum definitions
β βββ π scripts/ # Schema build scripts
β βββ π schema.prisma # Generated main schema
βββ π logs/ # Application logs
βββ π public/ # Static files
βββ π package.json # Dependencies and scripts
βββ π tsconfig.json # TypeScript configuration
βββ π index.ts # Application entry point
Make sure you have the following installed:
- Node.js (v18.0.0 or higher) - Download here
- pnpm (v8.0.0 or higher) - Install guide
- PostgreSQL (v13 or higher) - Download here
- Groq AI API Key - Get your key
-
Clone the repository
git clone https://github.com/yourusername/ielts-edtech-platform.git cd ielts-edtech-platform
-
Install dependencies
pnpm install
-
Environment configuration
cp .env.sample .env
-
Configure environment variables
# Server Configuration NODE_ENV=development PORT=3000 API_VERSION=v1 # Database Configuration DATABASE_URL="postgresql://username:password@localhost:5432/ielts_edtech_db" # JWT Configuration JWT_SECRET=your-super-secure-jwt-secret-key-here JWT_EXPIRES_IN=7d # AI Configuration (Groq) GROQ_API_KEY=your-groq-api-key-here GROQ_MODEL=mixtral-8x7b-32768 # OAuth Configuration GOOGLE_CLIENT_ID=your-google-client-id GOOGLE_CLIENT_SECRET=your-google-client-secret
-
Database setup
# Create database createdb ielts_edtech_db # Build schema and generate client pnpm run db:build-schema pnpm run db:generate pnpm run db:migrate # (Optional) Seed with test data pnpm run db:seed
-
Start the application
# Development mode pnpm run dev # Production mode pnpm run build && pnpm start
Visit http://localhost:3000
to access the application!
Documentation | Description |
---|---|
API Documentation | Complete API reference and examples |
Authentication Guide | Authentication and authorization |
Writing Evaluation API | AI-powered writing assessment |
Global Test Session System | Global session management documentation |
Contributing Guide | How to contribute to the project |
Code of Conduct | Community guidelines |
GET /api/v1/reading/test-sets
- Get all reading test setsGET /api/v1/reading/test-sets/:id
- Get specific test set detailsPOST /api/v1/reading/start-test/:testSetId
- Start a reading test sessionPOST /api/v1/reading/submit-answers
- Submit reading test answersGET /api/v1/reading/session/:sessionId
- Get test session detailsPOST /api/v1/reading/session/:sessionId/abandon
- Abandon test session
GET /api/v1/test-session/active
- Check current active sessionPOST /api/v1/test-session/abandon
- Abandon current active sessionGET /api/v1/test-session/history
- Get session historyPOST /api/v1/test-session/cleanup-expired
- Admin cleanup of expired sessions
We welcome contributions from the community! Here's how you can help:
- π Bug Reports: Found an issue? Create a bug report
- π‘ Feature Requests: Have an idea? Suggest a feature
- π Documentation: Improve our docs or write tutorials
- π§ Code Contributions: Fix bugs or implement new features
- π§ͺ Testing: Help us improve test coverage
- π Translation: Help us support more languages
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Commit your changes:
git commit -m 'Add some amazing feature'
- Push to the branch:
git push origin feature/amazing-feature
- Open a Pull Request
- Follow the existing code style and conventions
- Write tests for new features
- Update documentation for any API changes
- Ensure all tests pass before submitting
- Use descriptive commit messages
Security is a top priority. This platform includes:
- JWT-based authentication with refresh tokens
- OAuth 2.0 integration (Google, Microsoft)
- Rate limiting to prevent abuse
- Input validation using Joi
- CORS protection and security headers
- Password hashing with bcrypt
- Two-factor authentication (SMS)
- Audit logging for sensitive operations
- Winston logging with daily rotation
- Request/Response logging for debugging
- Error tracking and performance monitoring
- User analytics and learning insights
- Test performance metrics
- Scalable architecture with modular services
- Database optimization with Prisma ORM
- Real-time features with Socket.IO
- File upload optimization with Multer
- Caching strategies for improved performance
- Discord: Join our community
- GitHub Discussions: Ask questions and share ideas
- Twitter: @harshxdev
This project is licensed under the MIT License - see the LICENSE file for details.
- Thanks to all contributors who have helped shape this project
- Groq AI for providing powerful AI capabilities
- The open-source community for inspiration and support
- IELTS test-takers worldwide who inspired this project
β If you find this project helpful, please give it a star! β
Made with β€οΈ by the IELTS EdTech Platform team
This project uses Cloudinary for media storage (images, audio, video). The integration provides:
- Secure storage and delivery of media assets
- Automatic optimization and transformation of images
- Responsive image handling
- Support for various media types
- Create a free Cloudinary account at cloudinary.com
- Configure your environment variables:
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret
CLOUDINARY_SECURE=true
The platform provides a reusable service for media uploads:
import { CloudinaryUploader } from '../services/common/cloudinary-uploader.service';
// Get singleton instance
const uploader = CloudinaryUploader.getInstance();
// Upload a file
const result = await uploader.uploadFile(file, {
folder: 'my-folder',
tags: ['tag1', 'tag2'],
// other Cloudinary options
});
// Access the Cloudinary URL
const imageUrl = result.data.secure_url;
For API endpoints that accept file uploads, use the multer middleware:
import { createUploadMiddleware } from '../common/multer-upload.middleware';
const imageUpload = createUploadMiddleware('image', {
allowedMimeTypes: ['image/jpeg', 'image/png'],
limits: { fileSize: 5 * 1024 * 1024 } // 5MB
});
router.post('/upload', imageUpload, controller.uploadHandler);