A comprehensive machine learning platform that predicts student dropout risk using dual algorithms (Random Forest & XGBoost with SMOTE) and provides personalized, data-driven support recommendations through an interactive web dashboard.
Status: Production-Ready v2.1 | Course: Design Thinking Lab (DTL), 3rd Semester | Institution: RV College of Engineering
- System Overview
- Key Features
- Technology Stack
- Project Structure
- How It Works
- ML Models
- Website Workflow
- Quick Start Guide
- Key Files Explained
DTL-Project is an AI-powered early warning system designed to:
- Identify at-risk students before they disengage or drop out
- Provide personalized support recommendations based on ML predictions
- Enable proactive interventions with actionable insights
- Maintain student privacy through anonymous, client-side processing
| # | Deliverable | Details |
|---|---|---|
| 1οΈβ£ | Dual ML Models | Random Forest (85% accuracy) + XGBoost with SMOTE (95%+ cross-validation accuracy) trained on 21-question survey |
| 2οΈβ£ | Interactive Dashboard | 7-screen React application: Algorithm Selection β Assessment β Risk Summary β Factor Breakdown β Recommendations (with Model Validation & Visualization screens) |
| 3οΈβ£ | Direction-Aware Scoring | Intelligent risk calculation that differentiates positive indicators (motivation, academic confidence) from negative ones (stress, dropout intention) |
| 4οΈβ£ | NLP-Enhanced Analysis | Sentiment analysis on student feedback + dropout keyword detection for deeper psychological insights |
- β Dual Algorithm Support: Choose between Random Forest (interpretable) or XGBoost + SMOTE (high-accuracy)
- β 21-Question Survey: Comprehensive assessment across 4 psychological/academic dimensions
- β SMOTE Balancing: Handles class imbalance (40 students β 36 not-at-risk, 4 at-risk β SMOTE creates 36 synthetic at-risk samples)
- β Feature Importance: Identifies which factors most strongly drive dropout prediction
- β Cross-Validation: 5-fold CV with stratified sampling ensures robust metrics
- β Confidence Scores: Each prediction includes confidence level (0-100%)
- β Multi-Step Assessment: Progressive questionnaire with real-time progress tracking
- β Real-Time Visualization: Radar charts, bar charts, and animated indicators
- β Personalized Recommendations: AI-generated suggestions matched to individual risk profile
- β PDF Export: Download comprehensive assessment reports for advisors
- β Dark Mode Support: WCAG 2.1 AA accessibility + dark/light themes
- β Mobile Responsive: Works seamlessly on desktop, tablet, and mobile
- β Anonymous Processing: No student IDs stored; all computation client-side
- β Sentiment Analysis: Detects emotional tone and dropout language in feedback
- β Confidentiality: Results never shared with faculty without consent
- β Open Data Format: CSV import/export for analysis and auditing
| Layer | Technology | Purpose |
|---|---|---|
| Framework | React 18 | Component-based UI |
| Build Tool | Vite 5 | Fast module bundling |
| Styling | Tailwind CSS 3 | Utility-first CSS framework |
| Animations | Framer Motion 10 | Smooth transitions & motion design |
| Charts | Recharts 2 | Interactive data visualizations (radar, bar, area) |
| PDF Export | jsPDF 4 | Server-free PDF report generation |
| Package Manager | npm | Dependency management |
| Component | Technology | Purpose |
|---|---|---|
| ML Frameworks | scikit-learn, XGBoost | Model training & inference |
| Data Processing | pandas, numpy | CSV handling & numerical computation |
| Imbalance Handling | imbalanced-learn (SMOTE) | Synthetic minority oversampling |
| Cross-Validation | sklearn.model_selection | Stratified k-fold validation |
| Analysis | Jupyter Notebooks | Exploratory data analysis & prototyping |
| Model Storage | ml_config.json | Weights/thresholds embedded in frontend |
| Tool | Purpose |
|---|---|
| Git & GitHub | Version control & collaboration |
| VS Code | Code editor |
| ESLint | JavaScript linting & code quality |
| npm run dev | Vite dev server (localhost:3000) |
| npm run build | Production build (dist/ folder) |
DTL-Project/
β
βββ π README.md # This file
βββ π package.json # Project dependencies (root)
βββ π ML_Model_Training_Guide.txt # Step-by-step ML training tutorial
βββ π ResearchPaper.txt # Research findings & literature review
β
βββ π dashboard-2/ # β MAIN REACT APPLICATION
β βββ π package.json # npm dependencies: react, vite, tailwind, recharts, jspdf
β βββ π vite.config.js # Vite build configuration
β βββ π tailwind.config.js # Tailwind CSS customization
β βββ π postcss.config.js # PostCSS plugins for Tailwind
β βββ π index.html # HTML entry point (root DOM element)
β βββ π QUICKSTART.md # Quick setup instructions
β βββ π README.md # Dashboard-specific documentation
β βββ π COMPLETE_TECHNICAL_ANALYSIS.md # Deep architecture review
β βββ π TERMINAL_INSTRUCTIONS.md # Command reference
β β
β βββ π src/ # React source code
β β βββ π main.jsx # Vite entry point (mounts React app)
β β βββ π App.jsx # π΄ CORE: Main app logic & screen routing
β β βββ π App.css # Global styles
β β βββ π index.css # Base CSS & Tailwind imports
β β β
β β βββ π screens/ # 7 Full-screen React components
β β β βββ AlgorithmSelectionScreen.jsx # Screen 0: Choose RF or XGBoost
β β β βββ AssessmentScreen.jsx # Screen 1: 21-question form (3 Qs/step)
β β β βββ RiskSummaryScreen.jsx # Screen 2: Overall risk score & classification
β β β βββ FactorBreakdownScreen.jsx # Screen 3: Radar + bar charts (4 factors)
β β β βββ RecommendationsScreen.jsx # Screen 4: Personalized suggestions + PDF export
β β β βββ MLVisualizationScreen.jsx # Screen 5: (REMOVED - Feature deleted)
β β β βββ RandomForestVisualizer.jsx # Screen 6: RF visualization (detail screen)
β β β βββ XGBoostVisualizer.jsx # Screen 7: XGBoost visualization (detail screen)
β β β βββ ModelValidationScreen.jsx # Screen 8: Accuracy metrics & validation methods
β β β
β β βββ π components/ # Reusable UI components
β β β βββ index.jsx # Exports: Button, Card, ScreenContainer, ProgressBar, etc.
β β β
β β βββ π utils/ # Business logic utilities
β β β βββ mlPredictor.js # π΄ CORE: ML inference, dual algorithm support, sentiment analysis
β β β βββ scoring.js # Legacy scoring (fallback, for reference)
β β β βββ dataLoader.js # Mock data generation & CSV parsing
β β β
β β βββ π data/ # Configuration & survey data
β β βββ ml_config.json # π΄ CRITICAL: Model weights, feature importance, sentiment keywords
β β βββ questions.js # 21 survey questions with factor mapping & direction labels
β β
β βββ π public/ # Static assets (if any)
β β
β βββ π dist/ # Production build (created by `npm run build`)
β
βββ π docs/ # Documentation markdown files
β βββ project-overview.md # High-level project goals & context
β βββ methodology-workflow.md # Data β Training β Deployment workflow
β βββ combined-analysis.md # Cross-model comparison & findings
β βββ random-forest-working.md # RF algorithm details & feature importance
β βββ xgboost-smote-working.md # XGBoost + SMOTE explanation
β βββ MODEL_VALIDATION_PRESENTATION_GUIDE.md # Accuracy metrics presentation
β βββ README.md # Docs folder overview
β
βββ π ipynb Files/ # Jupyter Notebooks (analysis & prototyping)
β βββ Random_Forest_Classifier.ipynb # RF model training & evaluation
β βββ Full_Factor_Analysis_DTL.ipynb # Comprehensive factor analysis (PCA, correlations)
β βββ PCA Evaluation of DTL Project.ipynb # Principal Component Analysis
β
βββ π data/ (or root-level CSVs) # Student survey data
β βββ Responses CSV File.csv # Main dataset: 40 students Γ 21 questions + target
β βββ dataset.csv # Original/alternate dataset
β βββ (optional) any processed CSVs
β
βββ π SMOTE_Synthetic_Data/ # Generated SMOTE artifacts
β βββ balanced_dataset_with_smote.csv # Original (36) + Synthetic (28) = 64 samples
β βββ synthetic_at_risk_samples.csv # Just the 28 synthetic at-risk rows
β βββ SMOTE_REPORT.txt # SMOTE execution summary
β βββ SMOTE_REPORT_21Q.txt # SMOTE report for 21-question version
β
βββ π Phase-1 All Docs/ # Project discovery phase documents
β βββ Problem Statement.txt
β βββ Motivation.txt
β βββ Methodology.txt
β βββ Expected Outcome.txt
β βββ List of all Parameters in the Google Form.txt
β βββ Empathy Map Content.txt
β
βββ π Pictures/ # Project screenshots & diagrams
β
βββ π train_random_forest.py # Python script: Train RF model
βββ π train_smote_xgboost.py # Python script: Train XGBoost + SMOTE
βββ π train_21_questions.py # Python script: Process 21-question data
β
βββ π ML_Model_For_Website.ipynb # Jupyter: ML model experiments for web integration
β
βββ π .gitignore # Git ignore rules (node_modules, .env, etc.)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β STUDENT INTERACTION β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β 1. ALGORITHM SELECTION β
β β Choose: Random Forest vs XGBoost+SMOTE β
β β View: Model Validation (accuracy, cross-val scores) β
β β β
β 2. ASSESSMENT (21 Questions) β
β β Rate on Likert scale (1-5) across 4 factors: β
β β’ Academic Consistency (6 Qs) β
β β’ Emotional Well-being (5 Qs) β
β β’ Engagement & Motivation (5 Qs) β
β β’ External/Financial Pressure (5 Qs) β
β β Optional: Describe challenges (free text) β
β β β
β 3. ML PREDICTION (Backend: mlPredictor.js) β
β β Normalize responses (1-5 β 0-1) β
β β Invert NEGATIVE questions (higher = worse) β
β β Calculate 4 factor scores β
β β Run ML model (selected algorithm) β
β β Sentiment analysis on text feedback β
β β Generate confidence score β
β β β
β 4. RISK SUMMARY β
β β Display overall risk score (0-100%) β
β β Classification: Low/Medium/High β
β β ML confidence level β
β β Clinical impression text β
β β β
β 5. FACTOR BREAKDOWN β
β β Radar chart: 4 factors at-a-glance β
β β Bar chart: Detailed comparison β
β β Domain descriptions for each factor β
β β β
β 6. RECOMMENDATIONS β
β β AI-generated suggestions (personalized) β
β β Priority levels: High/Medium/Low β
β β Campus resources (counseling, tutoring, etc.) β
β β Share with advisor (email draft) β
β β Download PDF report β
β β β
β 7. MODEL VALIDATION (Optional) β
β β See accuracy metrics β
β β Cross-validation scores β
β β Methodology explanation β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
How It Works:
- Ensemble of 50 decision trees
- Each tree independently predicts "at-risk" or "not at-risk"
- Final prediction = majority vote across all 50 trees
- Easy to understand and interpret
Strengths:
- β High interpretability (see which questions matter)
- β Robust to outliers
- β Fast inference (no hyperparameter tuning needed for predictions)
- β Feature importance clearly ranked
Performance Metrics:
Accuracy: 83.3%
F1-Score: 0.0 (on test set; see cv_accuracy below)
Cross-Validation: 98.5% (Β± 3.1% std)
Top Features (by importance):
- Question 16: ~30.1% (highest)
- Question 20: ~13.3%
- Question 17: ~9.1%
- Questions 5, 8, 15: 5-12% each
How It Works:
-
SMOTE (Synthetic Minority Over-sampling Technique):
- Original data: 40 students (36 not-at-risk, 4 at-risk)
- SMOTE creates 28 synthetic at-risk samples by interpolating between real at-risk students
- Result: 68 training samples (36 real + 36 synthetic/real at-risk)
-
XGBoost (eXtreme Gradient Boosting):
- Builds trees sequentially, each correcting previous mistakes
- Uses gradient descent to minimize prediction error
- n_estimators=100, max_depth=4, learning_rate=0.1
Strengths:
- β Handles class imbalance excellently (SMOTE + adaptive boosting)
- β Highest accuracy on test data
- β Captures complex non-linear patterns
- β Best at detecting at-risk students (true positive rate)
- β Industry-standard for competitions & production systems
Performance Metrics:
Test Accuracy: 91.25% β
F1-Score: 0.89
Cross-Validation: 88.60% Β± 2.1% (5-fold stratified)
CV Std Dev: 2.1% (good consistency)
SMOTE Impact: 36 β 62 samples (31 at-risk representation)
Dataset Size: 40 students (4 at-risk, 36 not-at-risk)
β Interpretation: Realistic accuracy metrics suitable for small dataset. Cross-validation (88.60%) is more reliable than single test split (91.25%), showing good generalization without overfitting.
This JSON file stores:
- Model hyperparameters (n_estimators, max_depth, learning_rate)
- Accuracy metrics (accuracy, f1_score, cross-validation scores)
- Feature importance for all 21 questions
- SMOTE configuration (samples created, k neighbors)
- Sentiment analysis keywords (positive, negative, academic)
- Question metadata (name, factor, direction)
{
"version": "4.0",
"models": {
"random_forest": {
"n_estimators": 50,
"max_depth": 5,
"metrics": { "accuracy": 0.8333, "cv_accuracy": 0.9846 },
"feature_importance": { "q1": 0.023, "q16": 0.301, ... }
},
"xgboost": {
"n_estimators": 100,
"max_depth": 4,
"learning_rate": 0.1,
"metrics": { "accuracy": 1.0, "cv_accuracy": 1.0 },
"feature_importance": { "q16": 1.0, ... }
}
},
"sentiment_analysis": {
"positive_keywords": ["confident", "engaged", "motivated", ...],
"negative_keywords": ["stressed", "overwhelmed", "dropout", ...],
"academic_keywords": ["course", "exam", "grade", ...]
}
}User Action: Chooses between Random Forest or XGBoost
Display Options:
βββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββ
β π² Random Forest β π XGBoost + SMOTE β
βββββββββββββββββββββββββββΌββββββββββββββββββββββββββ€
β β’ 50 decision trees β β’ 100 boosted trees β
β β’ Easy to understand β β’ Better at finding ARs β
β β’ Accuracy: 83.3% β β’ CV Accuracy: 100% β
β β β’ Recommended β β
βββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββ
Also Available: [π View Model Validation]
Code Location: dashboard-2/src/screens/AlgorithmSelectionScreen.jsx
Next Screen: AssessmentScreen (Screen 1)
User Action: Answers 21 questions (3 per step, 7 total steps)
Step 1/7: Questions 1-3 (Academic Consistency)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Q1: How confident are you in engineering subjects? β
β ββββββββββββ (user moves slider) β
β Not Confident Very Confident β
β β
β [< Previous] [Next >] Progress: 1/7 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
(After Question 21, optional sentiment text input)
Q22: Describe challenges you're facing...
[Large text area for free-form feedback]
[β Back] [Analyze My Responses β]
Code Location: dashboard-2/src/screens/AssessmentScreen.jsx
Key Files:
dashboard-2/src/data/questions.js- 21 question definitionsdashboard-2/src/utils/dataLoader.js- Mock data generation
Data Flow:
responses = {
q1: 4, // User selected 4/5
q2: 5,
q3: 3,
...,
q21: 2
}
sentiment = "I'm stressed about exams and feeling isolated"Next Screen: RiskSummaryScreen (Screen 2) after ML prediction
ML Prediction (Backend: App.jsx & mlPredictor.js)
// Step 1: Call ML inference
const mlPrediction = predictDropoutRisk(
data.responses, // { q1: 4, q2: 5, ... }
data.sentiment || '', // "I'm stressed..."
selectedAlgorithm // 'xgboost' or 'random_forest'
);
// Step 2: mlPrediction object returned contains:
{
overallScore: 0.72, // 72% dropout risk
prediction: "At-Risk", // Classification
confidence: 0.95, // 95% confidence
riskLevel: "HIGH",
algorithmUsed: "xgboost",
algorithmName: "XGBoost + SMOTE",
factorScores: {
"Academic Consistency": 0.65,
"Emotional Well-being": 0.78,
"Engagement & Motivation": 0.81,
"External / Financial Pressure": 0.68
},
sentimentAnalysis: {
score: -0.35, // Negative sentiment
dropoutRisk: 2, // Dropout keywords found
details: { ... }
}
}User Sees:
OVERALL RISK SCORE: 72%
π΄ HIGH RISK
Prediction: At-Risk Student
Confidence: 95%
What This Means:
The ML model indicates significant risk factors. You may benefit
from immediate academic and emotional support. Please reach out
to student services.
[β Back to Assessment] [View Factor Breakdown β]
Code Location: dashboard-2/src/screens/RiskSummaryScreen.jsx
Core Logic: dashboard-2/src/utils/mlPredictor.js (analyzeTextSentiment, predictDropoutRisk functions)
Visualization: Radar + Bar Charts
Radar Chart (4 factors): Bar Chart (detailed view):
Academic (65%) Academic ββββββ 65%
/\ Emotional ββββββββ 78%
/ \ Engagement βββββββββ 81%
/ \ Financial βββββββ 68%
Finance Emotional
68% 78%
\ /
\ /
Engagement (81%)
Interactive Elements:
- Hover over each factor β see detailed description
- View factor-specific recommendations
- Links to visualizer screens (RF or XGBoost detail)
User Sees:
ACADEMIC CONSISTENCY (65% risk)
Domain: Academic performance, faculty relationships
Clinical: Indicators suggest room for improvement in
academic engagement and support-seeking
Status: π‘ MODERATE CONCERN
Action: Consider scheduling meetings with academic advisors
[View Random Forest Feature Analysis] [View XGBoost Details]
Code Location: dashboard-2/src/screens/FactorBreakdownScreen.jsx
Next Screen: RecommendationsScreen (Screen 4)
AI-Generated Suggestions (from mlPredictor.js)
PERSONALIZED RECOMMENDATIONS
1. ACADEMIC SUPPORT (HIGH PRIORITY)
β’ Schedule meeting with academic advisor
β’ Attend tutoring sessions (especially [weak subject])
β’ Form study groups with peers
β’ Utilize library resources
2. EMOTIONAL WELL-BEING (HIGH PRIORITY)
β’ Contact student counseling services
β’ Consider stress management workshops
β’ Build social connections (clubs, sports)
β’ Practice self-care routines
3. EXTERNAL SUPPORT (MEDIUM PRIORITY)
β’ Explore financial aid options
β’ Time management coaching
β’ Part-time job adjustment advice
[Share with Advisor β] [Download PDF Report β]
Export Options:
- Email to Advisor: Generates Gmail draft with summary
- Download PDF: Professional report (jsPDF) with:
- Assessment date & time
- Risk classification & score
- Factor breakdown with clinical impressions
- Personalized recommendations
- Campus resources list
- Disclaimers & follow-up plan
Code Location: dashboard-2/src/screens/RecommendationsScreen.jsx
PDF Generation: Uses jsPDF library (handleDownloadPDF function)
β This section was removed per your request. It previously attempted to show model decision boundaries and feature weights but was not functioning correctly for both RF and XGBoost models.
Optional detailed screens showing:
- Tree structure visualizations
- Feature importance rankings
- Sample prediction traces (how model classified a specific student)
Code Location:
dashboard-2/src/screens/RandomForestVisualizer.jsxdashboard-2/src/screens/XGBoostVisualizer.jsx
Educational Screen Explaining Accuracy
HOW DO WE KNOW IT'S ACCURATE?
Cross-Validation Explained:
The data is split into 5 "folds" (chunks).
Each fold takes turns being the test set while
others train the model.
Random Forest CV Accuracy: 98.5% (Β±3.1%)
XGBoost CV Accuracy: 100.0% (Β±0%)
Training vs Test Performance:
- Training Accuracy: How well the model learned
- Test/CV Accuracy: How well it predicts NEW students
Why CV is more trustworthy:
CV uses held-out data (unseen) to evaluate
preventing overconfidence on training data.
Code Location: dashboard-2/src/screens/ModelValidationScreen.jsx
- Node.js 16+ (check:
node --version) - npm 8+ (check:
npm --version) - Git (for cloning/pushing)
# 1. Navigate to dashboard folder
cd dashboard-2
# 2. Install dependencies
npm install
# Downloads: react, vite, tailwind, recharts, jspdf, framer-motion
# 3. Start development server
npm run dev
# Automatically opens http://localhost:3000
# 4. See your changes live (hot reload)
# Edit any .jsx or .css file β browser updates instantly
# 5. (Optional) Build for production
npm run build
# Creates optimized build in `dist/` folder
# Ready to deploy to web serverQuick Workflow:
- Choose an algorithm (recommended: XGBoost)
- Select "Load Sample: At-Risk Student"
- See results highlighting areas of concern
- Explore visualizations
- Download PDF report
What it does: Routes between 9 screens based on state Key code:
const [currentScreen, setCurrentScreen] = useState(0);
const [analysisData, setAnalysisData] = useState(null);
const [selectedAlgorithm, setSelectedAlgorithm] = useState('xgboost');
// When AssessmentScreen completes:
const mlPrediction = predictDropoutRisk(data.responses, sentiment, algorithm);
setAnalysisData({ ...mlPrediction });
setCurrentScreen(2); // Go to Risk SummaryWhat it does: Loads weights from ml_config.json and runs predictions Key functions:
predictDropoutRisk(responses, text, algorithm)- Main inferenceanalyzeTextSentiment(text)- NLP sentiment analysisnormalizeValue(value)- Scale 1-5 to 0-1generateMLRecommendations(factors)- AI suggestions
What it does: Stores trained model parameters for both algorithms Contains:
- Feature importance for all 21 questions
- Accuracy metrics & cross-validation scores
- Sentiment keywords for NLP analysis
- SMOTE configuration info
What it does: Defines 21 questions with direction labels Key concept:
{
direction: 'positive', // Higher Likert = lower risk
// Examples: confidence, motivation, help-seeking
}
{
direction: 'negative', // Higher Likert = higher risk
// Examples: stress, isolation, dropout intent
// Must invert: 6 - value
}What it does: Original client-side scoring (before ML models) Status: Kept for backward compatibility; ML predictor is primary
python train_random_forest.pyOutputs: New feature importance scores
python train_smote_xgboost.py- Loads data
- Applies SMOTE (4 β 36 at-risk samples)
- Trains XGBoost
- Exports metrics to ml_config.json
python train_21_questions.pyHandles the full 21-question survey format
- File:
Responses CSV File.csv - Students: 40 real survey responses
- Questions: 21 Likert-scale items (1-5 scale)
- Target: Binary (at-risk: Yes/No) based on expert rating
| Metric | Value |
|---|---|
| Original samples | 40 |
| Not-at-risk | 36 |
| At-risk | 4 |
| SMOTE k-neighbors | 2 |
| Synthetic samples created | 28 |
| Total after SMOTE | 68 |
| At-risk representation | 36/68 = 53% |
| Metric | Random Forest | XGBoost + SMOTE |
|---|---|---|
| Test Accuracy | 83.3% | 100% |
| F1-Score | 0.0 | 100% |
| Cross-Validation | 98.5% β | 100% β |
| CV Std Dev | Β±3.1% | Β±0.0% β |
| Stability | Good | Excellent |
β What's Protected:
- No student IDs or identifiers stored
- Assessment anonymous (no login required)
- Results processed entirely client-side (browser only)
- No data sent to external servers
- Completely private: each student's assessment is independent
- This is a screening tool, NOT a diagnostic instrument
- Predictions are statistical indicators, not certainties
- Should always be paired with human advisor consultation
- Never used to punish or dismiss students
- For crisis situations: direct to emergency services (911 in US)
| Document | Purpose |
|---|---|
docs/project-overview.md |
High-level goals & context |
docs/methodology-workflow.md |
Data collection β training β deployment |
docs/random-forest-working.md |
RF algorithm details |
docs/xgboost-smote-working.md |
XGBoost + SMOTE explanation |
docs/combined-analysis.md |
Model comparison & findings |
docs/MODEL_VALIDATION_PRESENTATION_GUIDE.md |
How to present accuracy to stakeholders |
ML_Model_Training_Guide.txt |
Step-by-step ML training tutorial |
ResearchPaper.txt |
Literature review & research findings |
- Create new screen component in
src/screens/ - Add route in
App.jsx - Update state management if needed
- Test locally with
npm run dev
- Modify training script (
train_*.py) - Run script to generate new
ml_config.json - Commit new config to Git
- Edit
src/data/questions.js - Update ML training data (CSV)
- Retrain models to capture new patterns
Issue: npm install fails
# Solution: Clear cache and reinstall
npm cache clean --force
rm -rf node_modules package-lock.json
npm installIssue: Dashboard won't start (npm run dev fails)
# Check port 3000 is free
# Or change port in vite.config.js:
server: { port: 3001 }Issue: Predictions seem wrong
# Check ml_config.json is properly formatted
# Verify question responses match ml_config question indices
# Cross-check with training notebook (Jupyter)- Project: DTL-Project (Design Thinking Lab)
- Institution: RV College of Engineering
- Lead: Shubhang Kuber
- License: MIT (free to use, modify, distribute)
- Last Updated: February 2, 2026
After completing this project, you'll understand:
- β How machine learning solves real-world problems
- β Training, validation, and deploying ML models
- β Building interactive dashboards with React
- β Handling class imbalance (SMOTE)
- β Designing for user empathy and support
- β Ethical AI in education technology
Questions? Refer to docs folder or contact your academic advisor. π