A comprehensive web-based platform designed to support the Philippine Alternative Learning System (ALS) by providing teachers with tools to manage students, track progress, and predict A&E (Accreditation and Equivalency) test readiness using machine learning.
e-ALS is a fullstack application that assists ALS teachers in monitoring student performance across six learning strands and predicting their readiness for the A&E test. The system uses a machine learning model trained on historical ALS data to provide personalized learning recommendations and identify at-risk students.
- Student Management System: Track student information, demographics, and academic records
- Assessment Tracking: Monitor performance across all Learning Strands (LS1-LS6)
- A&E Readiness Prediction: ML-powered prediction model to assess student readiness for A&E tests
- Mock Test Module: Practice A&E tests with immediate scoring and performance analytics
- Progress Visualization: Charts and graphs showing student performance trends
- Learning Material Repository: Upload and organize study materials by learning strand
- Personalized Recommendations: Automatically suggest learning materials based on weak areas
- Teacher Activity Logs: Track all administrative actions for accountability
- Multi-user Authentication: Separate dashboards for Admin, Teachers, and Students
- React (with Vite) - Modern UI library
- React Router - Client-side routing
- Chart.js & Recharts - Data visualization
- Tailwind CSS & Material-UI - Styling and components
- Axios - HTTP client
- Node.js & Express - REST API server
- Flask (Python) - Machine learning API server
- MySQL - Relational database
- Bcrypt - Password hashing
- Multer - File upload handling
- Scikit-learn - ML model training and prediction
- Pandas & NumPy - Data processing
- Joblib - Model serialization
ealsfinal-main/
├── frontend/ # React frontend application
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── assets/ # Images and static files
│ │ ├── App.jsx # Main application component
│ │ └── apiService.js # API integration layer
│ └── package.json
│
├── backend/ # Node.js & Flask backend
│ ├── server.js # Main Express server
│ ├── app.py # Flask ML prediction server
│ ├── db.js # MySQL connection (Node.js)
│ ├── db_config.py # MySQL connection (Python)
│ ├── StudentManagementServer.js # Student API routes
│ ├── als_model_training.py # ML model training script
│ ├── data/
│ │ ├── als_model.pkl # Trained ML model
│ │ ├── als_scaler.pkl # Feature scaler
│ │ └── eals-dataset-for-training.csv
│ └── uploads/ # User-uploaded learning materials
│
└── README.md
- Node.js (v16 or higher)
- Python (v3.8 or higher)
- MySQL Server (v8.0 or higher)
- npm or yarn package manager
- pip for Python packages
-
Clone the repository
git clone https://github.com/yourusername/ealsfinal-main.git cd ealsfinal-main -
Set up the database
- Install MySQL Workbench or MySQL Server
- Create a new database named
eals - Import the database schema (see Database Setup section)
-
Configure environment variables
Create a
.envfile in thebackenddirectory:cd backend cp .env.example .envEdit
.envwith your configuration:DB_HOST=localhost DB_USER=root DB_PASSWORD=your_password DB_NAME=eals PORT=3000 FLASK_PORT=5000 FRONTEND_URL=http://localhost:5173 BCRYPT_SALT_ROUNDS=10
-
Install Node.js dependencies
# In backend directory npm install # In frontend directory cd ../frontend npm install
-
Install Python dependencies
cd ../backend pip install -r requirements.txt -
Start the development servers
Open three separate terminal windows:
Terminal 1 - Node.js Backend:
cd backend node server.jsTerminal 2 - Flask ML Server:
cd backend python app.pyTerminal 3 - React Frontend:
cd frontend npm run dev -
Access the application
- Frontend: http://localhost:5173
- Node.js API: http://localhost:3000
- Flask API: http://localhost:5000
The application requires the following MySQL tables:
students- Student information and demographicsteachers- Teacher accounts and credentialsadmin- Administrator accountsroles- User role definitionsassessment_scores- Student test scores across learning strandsaemock_results- A&E mock test resultsquestions- Test questions banklearning_materials- Uploaded study materialslearning_strands- Learning strand definitions (LS1-LS6)teacher_activity_log- Audit trail for teacher actions
The ALS curriculum is organized into six learning strands:
- LS1 - Communication Skills (English & Filipino)
- LS2 - Scientific Literacy and Critical Thinking (SLCT)
- LS3 - Mathematical and Problem Solving Skills (MPSS)
- LS4 - Life and Career Skills (LCS)
- LS5 - Understanding the Self and Society (USS)
- LS6 - Digital Citizenship (DC)
Note: For detailed database schema, see
DATABASE_SCHEMA.md
The A&E readiness prediction model uses the following features:
- PIS Score - Personal Information Sheet assessment
- FLT Score - Functional Literacy Test overall score
- Learning Strand Scores (LS1-LS6) - Performance in each subject area
Model Details:
- Algorithm: Random Forest Classifier / Logistic Regression
- Training Data: Historical ALS student performance data
- Output: Binary classification (Ready/Not Ready for A&E test)
- Additional Output: Personalized learning material recommendations
cd backend
python als_model_training.pyThis will generate:
data/als_model.pkl- Trained modeldata/als_scaler.pkl- Feature scaler- Performance metrics and visualizations in
models/directory
✅ Implemented:
- Environment variables for sensitive configuration
- Bcrypt password hashing for new registrations
- CORS configuration
- SQL prepared statements in most endpoints
- File upload validation
- Login endpoints compare plain text passwords (legacy student/teacher accounts)
- No JWT/session token implementation
- Some SQL queries use string interpolation
- No rate limiting on authentication endpoints
- File uploads not scanned for malware
- No input sanitization on some endpoints
- Implement JWT authentication for session management
- Hash all existing passwords and update login logic
- Add input validation using libraries like Joi or express-validator
- Implement rate limiting with express-rate-limit
- Add HTTPS in production
- Use parameterized queries throughout
- Implement role-based access control (RBAC)
- Add request logging and monitoring
- Sanitize file uploads and validate MIME types
- Enable SQL strict mode and use ORM like Sequelize
This project has a solid foundation but there are several areas identified for enhancement:
- JWT Authentication - Replace plain text password comparison with token-based auth
- Password Migration - Hash all existing passwords in the database
- SQL Injection Prevention - Convert all string interpolation queries to parameterized statements
- Input Validation - Implement comprehensive validation using Joi or express-validator
- Rate Limiting - Add rate limiting to prevent brute force attacks
- Role-Based Access Control - Implement granular permissions system
- Request Logging - Add Winston or Morgan for request/error logging
- File Security - Scan uploaded files for malware and validate MIME types properly
- HTTPS Support - Add SSL/TLS configuration for production
- API Documentation - Generate Swagger/OpenAPI documentation
- Unit Tests - Add Jest/Mocha tests for critical functions
- Error Handling - Standardize error responses across all endpoints
- Email Notifications - Send assessment reminders and results via email
- Real-time Updates - WebSocket support for live dashboard updates
- Export Features - Generate PDF reports for student progress
- Mobile App - React Native companion app for students
- Data Analytics - Advanced visualizations and predictive insights
- Multi-language Support - Internationalization for English and Filipino
- Offline Mode - Progressive Web App features for areas with poor connectivity
- Model Retraining Pipeline - Automate model updates with new data
- Feature Engineering - Add more predictive features (attendance, demographics)
- Model Monitoring - Track prediction accuracy over time
- A/B Testing - Compare different ML algorithms
- Explainable AI - Provide explanations for predictions to teachers
- Login with teacher credentials
- View Dashboard - See overview of all students, ready count, at-risk count
- Manage Students - Add, edit, or remove student records
- Track Progress - View individual student performance across learning strands
- Upload Materials - Add learning resources organized by strand
- Monitor At-Risk Students - Identify students who need additional support
- Login with student credentials
- Take Assessments - Complete learning strand tests
- View Predictions - Check A&E readiness status
- Access Materials - Download recommended study materials
- Practice Tests - Take A&E mock exams
- Track Progress - View performance history
- Manage Teachers - Add, edit, remove teacher accounts
- View Activity Logs - Monitor all teacher actions
- System Overview - View total students and teachers
- Audit Trail - Track changes and maintain accountability
Note: Add screenshots of your application here to showcase the UI:
- Login page
- Teacher dashboard
- Student management
- Progress charts
- A&E prediction results
- Mock test interface
This is an academic project. If you'd like to suggest improvements:
- Fork the repository
- Create a feature branch (
git checkout -b feature/improvement) - Commit your changes (
git commit -m 'Add improvement') - Push to the branch (
git push origin feature/improvement) - Open a Pull Request
This project is developed for educational purposes as part of an academic requirement.
- Your Name - Initial work and development
- Department of Education Philippines - Alternative Learning System program
- ALS teachers and coordinators who provided insights
- Historical ALS student data for model training
- [Add any other acknowledgments]
For questions or feedback about this project:
- Email: your.email@example.com
- GitHub: @yourusername
- LinkedIn: Your Name
.env file before running the application.