From 4bbe31594546425e594ebf5a4430205117a821ca Mon Sep 17 00:00:00 2001 From: Neharor Date: Wed, 2 Apr 2025 19:00:34 -0700 Subject: [PATCH 1/7] Quiz module updates Quiz module updates --- frontend/src/Quiz/Quiz.js | 40 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/frontend/src/Quiz/Quiz.js b/frontend/src/Quiz/Quiz.js index 0762f81..57e3a0d 100644 --- a/frontend/src/Quiz/Quiz.js +++ b/frontend/src/Quiz/Quiz.js @@ -15,14 +15,14 @@ const Quiz = () => { const location = useLocation(); - // Reset quiz when user navigates to the Quiz page useEffect(() => { setIsQuizStarted(false); setIsQuizCompleted(false); setShowSubjectSelection(true); - setQuizQuestions([]); // Ensure fresh state + setQuizQuestions([]); setUserAnswers([]); - }, [location.pathname]); // This will reset on every navigation + setError(""); + }, [location.pathname]); useEffect(() => { if (isQuizStarted) { @@ -32,6 +32,8 @@ const Quiz = () => { const fetchQuizQuestions = async () => { setLoading(true); + setError(""); + try { const response = await fetch(`http://localhost:5000/quiz?subject=${subject}`); const data = await response.json(); @@ -39,7 +41,7 @@ const Quiz = () => { if (data.success) { setQuizQuestions(data.quiz); setUserAnswers(new Array(data.quiz.length).fill("")); - setError(""); + setShowSubjectSelection(false); // Hide subject selection once quiz starts } else { setError("Failed to load quiz questions."); } @@ -64,6 +66,8 @@ const Quiz = () => { } setLoading(true); + setError(""); + try { const response = await fetch("http://localhost:5000/quiz/submit", { method: "POST", @@ -74,9 +78,8 @@ const Quiz = () => { const data = await response.json(); if (data.success) { - setScore(data.score); // Correctly use score here + setScore(data.score); setIsQuizCompleted(true); - setShowSubjectSelection(false); } else { setError(data.message || "Error submitting quiz."); } @@ -88,29 +91,25 @@ const Quiz = () => { } }; - const startNewQuiz = () => { - // Reset quiz state to show fresh start - setIsQuizStarted(false); - setIsQuizCompleted(false); - setShowSubjectSelection(true); - setQuizQuestions([]); // Clear previous questions - setUserAnswers([]); // Clear previous answers + const startQuiz = () => { + setIsQuizStarted(true); + setShowSubjectSelection(false); // Ensure subject selection is hidden }; - const goBackToSubjects = () => { - // Reset quiz state to show fresh start + const startNewQuiz = () => { setIsQuizStarted(false); setIsQuizCompleted(false); setShowSubjectSelection(true); - setQuizQuestions([]); // Clear previous questions - setUserAnswers([]); // Clear previous answers + setQuizQuestions([]); + setUserAnswers([]); + setError(""); }; return (

Test Your Knowledge

- {showSubjectSelection && ( + {showSubjectSelection && !isQuizStarted && (
-
@@ -164,9 +163,6 @@ const Quiz = () => { -
)} From d6d8b19e77aa8ebe746587a4f0178b11b827c5b1 Mon Sep 17 00:00:00 2001 From: Neharor Date: Wed, 2 Apr 2025 19:17:37 -0700 Subject: [PATCH 2/7] Quiz changes Quiz changes --- frontend/src/Quiz/Quiz.css | 219 +++++++++++++++++++------------------ frontend/src/Quiz/Quiz.js | 6 +- 2 files changed, 114 insertions(+), 111 deletions(-) diff --git a/frontend/src/Quiz/Quiz.css b/frontend/src/Quiz/Quiz.css index 46965e3..b5b341e 100644 --- a/frontend/src/Quiz/Quiz.css +++ b/frontend/src/Quiz/Quiz.css @@ -1,61 +1,63 @@ /* Overall container styling */ .quiz-container { padding: 30px; - background-color: #fdfdfd; + background-color: #1a3c5b; /* Dark Blue */ border-radius: 12px; - box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2); width: 60%; max-width: 800px; margin: 40px auto; font-family: 'Roboto', sans-serif; - } - - /* Header styling */ - .quiz-container h1 { + color: #eceff1; /* Light Gray text for better readability */ +} + +/* Header styling */ +.quiz-container h1 { text-align: center; font-size: 2.5rem; font-weight: 600; - color: #333; + color: #f4e36b; /* Soft Yellow for a warm highlight */ margin-bottom: 30px; letter-spacing: 0.5px; - } - - /* Subject selection container */ - .subject-selection { +} + +/* Subject selection container */ +.subject-selection { display: flex; flex-direction: column; align-items: center; margin-bottom: 25px; - } - - .subject-selection label { - font-size: 1.2rem; +} + +.subject-selection label { + font-size: 1.3rem; font-weight: 500; - color: #444; + color: #f4e36b; /* Soft Yellow */ margin-bottom: 10px; - } - - .subject-selection select { +} + +.subject-selection select { padding: 12px 20px; font-size: 1.1rem; border-radius: 8px; - border: 1px solid #ddd; + border: 1px solid #f4e36b; width: 70%; - background-color: #fff; - color: #333; + background-color: #2c4a73; /* Muted Dark Blue */ + color: #eceff1; /* Light Gray text */ font-weight: 500; transition: border-color 0.3s ease; - } - - .subject-selection select:focus { - border-color: #4CAF50; +} + +.subject-selection select:focus { + border-color: #f4e36b; outline: none; - } - - .start-button { +} + +/* Start Quiz Button */ +.start-button { padding: 12px 30px; - background-color: #4CAF50; - color: white; + background-color: #f57c00; /* Muted Orange */ + color: #ffffff; border: none; border-radius: 8px; cursor: pointer; @@ -63,68 +65,69 @@ font-weight: 600; transition: background-color 0.3s ease; margin-top: 15px; - } - - .start-button:hover { - background-color: #45a049; - } - - /* Loading and error message */ - .loading { +} + +.start-button:hover { + background-color: #f57c00; +} + +/* Loading and error message */ +.loading { text-align: center; font-size: 1.2rem; - color: #007BFF; - } - - .error { + color: #64b5f6; /* Light Blue */ +} + +.error { text-align: center; font-size: 1.1rem; - color: #FF5733; - } - - /* Quiz form styles */ - .quiz-form { - background-color: #fff; + color: #ff5252; /* Error Red */ +} + +/* Quiz form styles */ +.quiz-form { + background-color: #2c4a73; /* Muted Dark Blue */ padding: 25px; border-radius: 10px; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); - } - - .question-block { + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); +} + +.question-block { margin-bottom: 25px; - } - - .question-block h3 { +} + +.question-block h3 { font-size: 1.4rem; - color: #333; + color: #f4e36b; /* Soft Yellow */ font-weight: 500; - } - - .option { +} + +.option { display: flex; align-items: center; padding: 12px; border-radius: 8px; - background-color: #f7f7f7; + background-color: #2c4a73; /* Muted Dark Blue */ margin-bottom: 12px; cursor: pointer; transition: background-color 0.3s ease; - } - - .option input[type="radio"] { +} + +.option input[type="radio"] { margin-right: 12px; - accent-color: #4CAF50; - } - - .option:hover { - background-color: #f1f1f1; - } - - .submit-button { + accent-color: #f4e36b; /* Soft Yellow */ +} + +.option:hover { + background-color: #4c6a90; /* Lighter Muted Blue */ +} + +/* Submit Button */ +.submit-button { display: block; width: 100%; padding: 15px; - background-color: #007BFF; + background-color: #f57c00; /* Muted Orange */ color: white; border: none; border-radius: 8px; @@ -132,25 +135,25 @@ cursor: pointer; transition: background-color 0.3s ease; margin-top: 30px; - } - - .submit-button:hover { - background-color: #0056b3; - } - - /* Quiz completion styles */ - .quiz-completed { +} + +.submit-button:hover { + background-color: #f57c00; +} + +/* Quiz completion styles */ +.quiz-completed { text-align: center; font-size: 1.5rem; - color: #333; + color: #eceff1; /* Light Gray */ font-weight: 600; margin-top: 20px; - } - - .retry-button, - .back-button { +} + +.retry-button, +.back-button { padding: 14px 30px; - background-color: #FF5733; + background-color: #83c785; /* Green */ color: white; border: none; border-radius: 8px; @@ -158,36 +161,36 @@ font-size: 1.1rem; margin-top: 25px; transition: background-color 0.3s ease; - } - - .retry-button:hover, - .back-button:hover { - background-color: #e04e33; - } - - .result { +} + +.retry-button:hover, +.back-button:hover { + background-color: #83c785; +} + +/* Quiz Result */ +.result { font-size: 1.4rem; - color: #333; + color: #f4e36b; /* Soft Yellow */ margin-top: 20px; font-weight: 500; - } - - /* Responsive Design for Mobile */ - @media screen and (max-width: 768px) { +} + +/* Responsive Design for Mobile */ +@media screen and (max-width: 768px) { .quiz-container { - width: 90%; - padding: 20px; + width: 90%; + padding: 20px; } - + .subject-selection select { - width: 80%; + width: 80%; } - + .start-button, .submit-button, .retry-button, .back-button { - width: 100%; + width: 100%; } - } - \ No newline at end of file +} diff --git a/frontend/src/Quiz/Quiz.js b/frontend/src/Quiz/Quiz.js index 57e3a0d..b0f7141 100644 --- a/frontend/src/Quiz/Quiz.js +++ b/frontend/src/Quiz/Quiz.js @@ -38,7 +38,7 @@ const Quiz = () => { const response = await fetch(`http://localhost:5000/quiz?subject=${subject}`); const data = await response.json(); - if (data.success) { + if (data.success && Array.isArray(data.quiz) && data.quiz.length > 0) { setQuizQuestions(data.quiz); setUserAnswers(new Array(data.quiz.length).fill("")); setShowSubjectSelection(false); // Hide subject selection once quiz starts @@ -60,7 +60,7 @@ const Quiz = () => { }; const submitQuiz = async () => { - if (userAnswers.includes("")) { + if (userAnswers.includes("") || userAnswers.length !== quizQuestions.length) { setError("Please answer all questions before submitting."); return; } @@ -93,7 +93,7 @@ const Quiz = () => { const startQuiz = () => { setIsQuizStarted(true); - setShowSubjectSelection(false); // Ensure subject selection is hidden + setShowSubjectSelection(false); }; const startNewQuiz = () => { From 73e6e44e893e120d88e533d2df4bf12a3ae66c61 Mon Sep 17 00:00:00 2001 From: Neharor Date: Wed, 2 Apr 2025 19:53:03 -0700 Subject: [PATCH 3/7] quiz changes quiz changes --- backend/services/quiz_service.py | 1 + frontend/src/Quiz/Quiz.js | 47 +++++++++++++++++++------------- 2 files changed, 29 insertions(+), 19 deletions(-) diff --git a/backend/services/quiz_service.py b/backend/services/quiz_service.py index 7dacb0d..806831a 100644 --- a/backend/services/quiz_service.py +++ b/backend/services/quiz_service.py @@ -149,3 +149,4 @@ def calculate_score(answers, correct_answers, quiz_data): score += 1 # Increment score for each correct answer return score + diff --git a/frontend/src/Quiz/Quiz.js b/frontend/src/Quiz/Quiz.js index b0f7141..50c9439 100644 --- a/frontend/src/Quiz/Quiz.js +++ b/frontend/src/Quiz/Quiz.js @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from "react"; +import React, { useState, useEffect, useCallback } from "react"; import { useLocation } from "react-router-dom"; import "./Quiz.css"; @@ -15,22 +15,8 @@ const Quiz = () => { const location = useLocation(); - useEffect(() => { - setIsQuizStarted(false); - setIsQuizCompleted(false); - setShowSubjectSelection(true); - setQuizQuestions([]); - setUserAnswers([]); - setError(""); - }, [location.pathname]); - - useEffect(() => { - if (isQuizStarted) { - fetchQuizQuestions(); - } - }, [subject, isQuizStarted]); - - const fetchQuizQuestions = async () => { + // Use useCallback to ensure that fetchQuizQuestions is stable + const fetchQuizQuestions = useCallback(async () => { setLoading(true); setError(""); @@ -51,7 +37,22 @@ const Quiz = () => { } finally { setLoading(false); } - }; + }, [subject]); // Dependency on 'subject' so it updates when subject changes + + useEffect(() => { + setIsQuizStarted(false); + setIsQuizCompleted(false); + setShowSubjectSelection(true); + setQuizQuestions([]); + setUserAnswers([]); + setError(""); + }, [location.pathname]); + + useEffect(() => { + if (isQuizStarted) { + fetchQuizQuestions(); + } + }, [isQuizStarted, fetchQuizQuestions]); // Add 'fetchQuizQuestions' as a dependency const handleAnswerChange = (index, answer) => { const updatedAnswers = [...userAnswers]; @@ -112,7 +113,15 @@ const Quiz = () => { {showSubjectSelection && !isQuizStarted && (
- { + setSubject(e.target.value); // Ensure subject change triggers state updates + setIsQuizStarted(false); // Reset the quiz start state + setQuizQuestions([]); // Reset the quiz questions + setUserAnswers([]); // Reset the user's answers + }} + > From 7b8319de32e88281871c5224034bd15f6c5b0557 Mon Sep 17 00:00:00 2001 From: Megha <35684661+MeghaN28@users.noreply.github.com> Date: Wed, 2 Apr 2025 21:18:06 -0700 Subject: [PATCH 4/7] Create README.md --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..94994c3 --- /dev/null +++ b/README.md @@ -0,0 +1,10 @@ +# AI-Tutor +AI-Tutor for Seattle DataAI Project + + +## Contributors + +[@ahumblefool](https://github.com/ahumblefool) +[@utopianvision](https://github.com/utopianvision) + [@MeghaN28](https://github.com/MeghaN28) + [@Neharor](https://github.com/Neharor) From 6aad363e2ed83c4ce154e9741536118758074952 Mon Sep 17 00:00:00 2001 From: MeghaN28 Date: Wed, 2 Apr 2025 22:26:02 -0700 Subject: [PATCH 5/7] changes --- backend/app.py | 36 +++++---- backend/services/student_card_service.py | 63 +++++++++++++++ frontend/public/images/aitutor.jpg | Bin 0 -> 146052 bytes frontend/src/App.js | 19 ++++- frontend/src/Home/Home.css | 64 +++++++++++++++ frontend/src/Home/Home.js | 19 +++++ frontend/src/Instructor/Instructor.css | 38 +++++++++ frontend/src/Instructor/Instructor.js | 26 +++++++ frontend/src/StudentCard/StudentCard.css | 69 +++++++++++++++++ frontend/src/StudentCard/StudentCard.js | 86 +++++++++++++++++++++ frontend/src/TutorSession/TutorSession.css | 7 +- 11 files changed, 407 insertions(+), 20 deletions(-) create mode 100644 frontend/public/images/aitutor.jpg diff --git a/backend/app.py b/backend/app.py index 3057347..cc74f83 100644 --- a/backend/app.py +++ b/backend/app.py @@ -2,8 +2,9 @@ from flask_cors import CORS import os from dotenv import load_dotenv -from services import tutor_session_service # Import the tutor session service module -from services import quiz_service # Import the quiz service module +from services import tutor_session_service # AI Tutoring +from services import quiz_service # Quiz System +from services import student_card_service # Import Student Card Service # Load API key from .env file load_dotenv() @@ -14,7 +15,7 @@ app = Flask(__name__) CORS(app) # Allow frontend access -# Routes for Tutor Session +# === Tutor Session Routes === @app.route("/upload", methods=["POST"]) def upload(): return tutor_session_service.upload_file(request) @@ -31,45 +32,54 @@ def stream(): def index(): return jsonify({"message": "Tutoring system is running"}) -# Routes for Quiz +# === Student Card Routes === +@app.route("/student/", methods=["GET"]) +def get_student(student_id): # Fixed missing parameter + return student_card_service.get_student(student_id) # Pass it correctly + +@app.route("/student//feedback", methods=["POST"]) +def add_feedback(student_id): # Fixed missing parameter + return student_card_service.add_feedback(student_id, request) + +@app.route("/student//progress", methods=["GET"]) +def get_student_progress(): # Renamed to avoid conflict + return student_card_service.get_progress(request) + +@app.route("/api/student-insights", methods=["POST"]) +def student_insights(): + return student_card_service.get_student_insights(request) + +# === Quiz Routes === @app.route("/quiz/subjects", methods=["GET"]) def get_subjects(): - """Returns a list of available quiz subjects.""" return quiz_service.get_subjects() @app.route("/quiz", methods=["GET"]) def generate_quiz(): - """Generates 5 quiz questions for the selected subject.""" return quiz_service.generate_quiz(request) @app.route("/quiz/submit", methods=["POST"]) def submit_quiz(): - """Validates a user's answer and updates their score.""" return quiz_service.submit_quiz(request) @app.route("/quiz/stream_feedback", methods=["POST"]) def stream_feedback(): - """Streams AI-generated detailed feedback on the answer.""" return quiz_service.stream_feedback(request) @app.route("/quiz/progress", methods=["GET"]) -def get_progress(): - """Returns the user's quiz progress, including score and number of quizzes attempted.""" +def get_quiz_progress(): # Renamed to avoid conflict return quiz_service.get_progress() @app.route("/quiz/leaderboard", methods=["GET"]) def get_leaderboard(): - """Returns the leaderboard of top players.""" return quiz_service.get_leaderboard() @app.route("/quiz/badges", methods=["GET"]) def get_badges(): - """Returns the badges earned by the user based on their quiz progress.""" return quiz_service.get_badges() @app.route("/quiz/retry", methods=["POST"]) def retry_quiz(): - """Allows the user to retry the quiz for a selected subject.""" return quiz_service.retry_quiz(request) if __name__ == "__main__": diff --git a/backend/services/student_card_service.py b/backend/services/student_card_service.py index e69de29..5520cbf 100644 --- a/backend/services/student_card_service.py +++ b/backend/services/student_card_service.py @@ -0,0 +1,63 @@ +from flask import request, jsonify + +# Dummy student database (In production, use a real database) +students = { + "123": { + "name": "Alice", + "subjects": {"math": 80, "science": 75, "history": 85}, + "feedback": [] + }, + "456": { + "name": "Bob", + "subjects": {"math": 65, "science": 70, "history": 78}, + "feedback": [] + } +} + +def get_student(student_id): + """Fetch student details.""" + student = students.get(student_id) + if student: + return jsonify(student) + return jsonify({"error": "Student not found"}), 404 + +def add_feedback(student_id, request): + """Add feedback for a student.""" + student = students.get(student_id) + if not student: + return jsonify({"error": "Student not found"}), 404 + + feedback = request.json.get("feedback", "") + if not feedback: + return jsonify({"error": "Feedback cannot be empty"}), 400 + + student["feedback"].append(feedback) + + return jsonify({"success": True, "message": "Feedback added"}) + +def get_progress(student_id): + """Retrieve a student's academic progress.""" + student = students.get(student_id) + if not student: + return jsonify({"error": "Student not found"}), 404 + + return jsonify({"name": student["name"], "progress": student["subjects"]}) + +def get_student_insights(request): + """Fetch student insights based on the provided data.""" + data = request.get_json() + + # Extract subject and recent activity + subject = data.get('subject') + recent_activity = data.get('recentActivity') + + # For demo purposes, generate some dummy insights based on the subject + insights = f"Insights for {subject} based on the activity: {recent_activity}" + + # Simulate interdisciplinary suggestions + interdisciplinary_suggestions = "Suggested interdisciplinary connections: Math + Physics, Science + Chemistry." + + return jsonify({ + "insights": insights, + "interdisciplinarySuggestions": interdisciplinary_suggestions + }) diff --git a/frontend/public/images/aitutor.jpg b/frontend/public/images/aitutor.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cf322371ad256872a7f15b17cfdaf0e7836c8cf6 GIT binary patch literal 146052 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

ag!VtG;zk?f7R3&%Si}_GcKINCA%3 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%0D%z!fQ>P$#hd}<^A-dEgXJE#kCUD*#T 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 literal 0 HcmV?d00001 diff --git a/frontend/src/App.js b/frontend/src/App.js index 34221e8..2723f2f 100755 --- a/frontend/src/App.js +++ b/frontend/src/App.js @@ -2,19 +2,30 @@ import React from "react"; import { BrowserRouter as Router, Route, Routes } from "react-router-dom"; import NavBar from "./NavBar"; import TutorSession from "./TutorSession/TutorSession"; +import StudentCard from "./StudentCard/StudentCard"; import Quiz from "./Quiz/Quiz"; +import Home from "./Home/Home"; +import Instructor from "./Instructor/Instructor"; function App() { + // Dummy student data + const studentData = { + name: "Alice", + subject: "math", + progress: 80, + recentActivity: "Completed chapter on Algebra", + }; + return ( - Home Page} /> - Instructor Page} /> + } /> + } /> Peer Learning Page} /> - {/* Use key based on the current location */} + {/* Pass studentData as a prop to StudentCard */} + } /> } /> - Student Card Page} /> } /> diff --git a/frontend/src/Home/Home.css b/frontend/src/Home/Home.css index e69de29..5f951aa 100644 --- a/frontend/src/Home/Home.css +++ b/frontend/src/Home/Home.css @@ -0,0 +1,64 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: 'Arial', sans-serif; + } + + .home-container { + display: flex; + justify-content: space-between; + align-items: center; + padding: 20px; + background-color: white; + border-radius: 10px; + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); + width: 80%; + max-width: 1000px; + margin: 0 auto; + } + + .welcome-message { + flex: 1; + padding-right: 20px; + } + + .welcome-message h1 { + font-size: 36px; + color: #2a2a2a; + margin-bottom: 20px; + } + + .welcome-message p { + font-size: 18px; + color: #555; + margin-bottom: 20px; + } + + .start-btn { + display: inline-block; + background-color: #4CAF50; + color: white; + padding: 15px 30px; + font-size: 18px; + text-decoration: none; + border-radius: 5px; + transition: background-color 0.3s ease; + } + + .start-btn:hover { + background-color: #45a049; + } + + .image-container { + flex: 1; + display: flex; + justify-content: center; + } + + .tutor-image { + max-width: 100%; + border-radius: 10px; + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); + } + \ No newline at end of file diff --git a/frontend/src/Home/Home.js b/frontend/src/Home/Home.js index e69de29..f344a26 100644 --- a/frontend/src/Home/Home.js +++ b/frontend/src/Home/Home.js @@ -0,0 +1,19 @@ +import React from 'react'; +import './Home.css'; + +const Home = () => { + return ( +

+
+

Welcome to the AI-powered Tutor System

+

Your personalized learning assistant, ready to help you in Math, Science, History, and more!

+ Start Learning +
+
+ AI Tutor +
+
+ ); +}; + +export default Home; diff --git a/frontend/src/Instructor/Instructor.css b/frontend/src/Instructor/Instructor.css index e69de29..4d9b4c8 100644 --- a/frontend/src/Instructor/Instructor.css +++ b/frontend/src/Instructor/Instructor.css @@ -0,0 +1,38 @@ +.instructor-container { + text-align: center; + padding: 20px; + font-family: Arial, sans-serif; + } + + h1 { + font-size: 2rem; + color: #333; + margin-bottom: 20px; + } + + .instructor-list { + list-style: none; + padding: 0; + max-width: 400px; + margin: 0 auto; + } + + .instructor-item { + background: #f4f4f4; + padding: 15px; + margin: 10px 0; + border-radius: 8px; + box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.1); + } + + h2 { + margin: 0; + color: #007bff; + } + + p { + margin: 5px 0 0; + font-size: 1.2rem; + color: #555; + } + \ No newline at end of file diff --git a/frontend/src/Instructor/Instructor.js b/frontend/src/Instructor/Instructor.js index e69de29..b84e1ee 100644 --- a/frontend/src/Instructor/Instructor.js +++ b/frontend/src/Instructor/Instructor.js @@ -0,0 +1,26 @@ +import React from 'react'; +import './Instructor.css'; + +const instructors = [ + { subject: "Math", name: "Dr. Alan Turing" }, + { subject: "Science", name: "Dr. Marie Curie" }, + { subject: "History", name: "Prof. Yuval Noah Harari" } +]; + +const Instructor = () => { + return ( +
+

Meet Our Instructors

+
    + {instructors.map((instructor, index) => ( +
  • +

    {instructor.subject}

    +

    {instructor.name}

    +
  • + ))} +
+
+ ); +}; + +export default Instructor; diff --git a/frontend/src/StudentCard/StudentCard.css b/frontend/src/StudentCard/StudentCard.css index e69de29..10ce2c2 100644 --- a/frontend/src/StudentCard/StudentCard.css +++ b/frontend/src/StudentCard/StudentCard.css @@ -0,0 +1,69 @@ +.student-card { + width: 100%; + max-width: 400px; + background: #1a3c5b; + border-radius: 12px; + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); + padding: 20px; + margin: 20px auto; + text-align: center; + transition: transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out; +} + +.student-card:hover { + transform: translateY(-5px); + box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15); +} + +.student-card h2 { + font-size: 1.5rem; + color: #f4e36b; + margin-bottom: 10px; +} + +.student-card p { + font-size: 1rem; + color: #f4e36b; + margin: 5px 0; +} + +.student-progress { + width: 100%; + background: #f3f3f3; + border-radius: 6px; + overflow: hidden; + margin-top: 10px; +} + +.progress-bar { + height: 10px; + background: linear-gradient(90deg, #4CAF50, #2196F3); + border-radius: 6px; + transition: width 0.5s ease-in-out; +} + +.badge { + display: inline-block; + background: #ff9800; + color: white; + padding: 5px 10px; + font-size: 0.85rem; + border-radius: 15px; + margin-top: 10px; +} + +.student-card button { + background: #007bff; + color: white; + border: none; + padding: 10px 15px; + font-size: 1rem; + border-radius: 6px; + cursor: pointer; + margin-top: 10px; + transition: background 0.3s; +} + +.student-card button:hover { + background: #0056b3; +} diff --git a/frontend/src/StudentCard/StudentCard.js b/frontend/src/StudentCard/StudentCard.js index e69de29..f7ad043 100644 --- a/frontend/src/StudentCard/StudentCard.js +++ b/frontend/src/StudentCard/StudentCard.js @@ -0,0 +1,86 @@ +import React, { useState, useEffect } from "react"; +import axios from "axios"; +import "./StudentCard.css"; // Import styles + +const StudentCard = ({ student }) => { + const [subject, setSubject] = useState(student.subject || "math"); + const [progress, setProgress] = useState(student.progress || 0); + const [insights, setInsights] = useState(""); + const [interdisciplinarySuggestions, setInterdisciplinarySuggestions] = useState(""); + const [streaming, setStreaming] = useState(false); + + useEffect(() => { + fetchInsights(student.subject, student.recentActivity); // Fetch insights on initial render + }, [student]); + + const fetchInsights = async (subject, recentActivity) => { + try { + setStreaming(true); // Set streaming state to true while processing + const response = await axios.post("http://127.0.0.1:5000/api/student-insights", { + subject, + recentActivity, // Send recent activity as message to AI + }); + + setInsights(response.data.insights || "No insights available"); + setInterdisciplinarySuggestions(response.data.interdisciplinarySuggestions || "No suggestions available"); + setStreaming(false); // Set streaming state to false once done + } catch (error) { + console.error("Error fetching insights:", error); + setInsights("Error fetching insights."); + setStreaming(false); // Reset streaming state if there's an error + } + }; + + return ( +
+

{student.name}

+ + {/* Subject Selection */} + + + + {/* Progress */} +
+
+
+

Progress: {progress}%

+ + {/* Insights and Interdisciplinary Suggestions */} +
+

AI Insights:

+

{insights}

+

Interdisciplinary Suggestions:

+

{interdisciplinarySuggestions}

+
+ + {/* Refresh Insights Button */} + + + {/* Streaming Response */} + {streaming && ( +
+

Streaming response...

+
+ )} +
+ ); +}; + +export default StudentCard; diff --git a/frontend/src/TutorSession/TutorSession.css b/frontend/src/TutorSession/TutorSession.css index e869687..7ebf8d4 100644 --- a/frontend/src/TutorSession/TutorSession.css +++ b/frontend/src/TutorSession/TutorSession.css @@ -2,7 +2,7 @@ max-width: 600px; margin: 40px auto; padding: 20px; - background: linear-gradient(135deg, #1e3c72, #2a5298); + background: linear-gradient(135deg, #1a3c5b, #1a3c5b); border-radius: 12px; box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.2); text-align: center; @@ -13,6 +13,7 @@ font-size: 1.8rem; font-weight: bold; margin-bottom: 15px; + color: #f4e36b; } .label { @@ -33,7 +34,7 @@ } .question-input { - width: 100%; + width: 80%; height: 80px; padding: 10px; border-radius: 6px; @@ -41,7 +42,7 @@ font-size: 1rem; resize: none; background: white; - color: black; + color: #f4e36b; margin-bottom: 15px; } From 6d9ad641f4f1f3c4eebf574df3b17686fbf9987f Mon Sep 17 00:00:00 2001 From: MeghaN28 Date: Wed, 2 Apr 2025 22:39:20 -0700 Subject: [PATCH 6/7] changes to peer learning --- backend/app.py | 72 ++++++++++++++-- backend/services/peer_learning_service.py | 64 +++++++++++++++ frontend/src/App.js | 3 +- frontend/src/PeerLearning/PeerLearning.css | 36 ++++++++ frontend/src/PeerLearning/PeerLearning.js | 96 ++++++++++++++++++++++ frontend/src/TutorSession/TutorSession.css | 3 +- 6 files changed, 265 insertions(+), 9 deletions(-) diff --git a/backend/app.py b/backend/app.py index cc74f83..fe6fa79 100644 --- a/backend/app.py +++ b/backend/app.py @@ -4,17 +4,23 @@ from dotenv import load_dotenv from services import tutor_session_service # AI Tutoring from services import quiz_service # Quiz System -from services import student_card_service # Import Student Card Service +from services import student_card_service # Student Card Service +import google.generativeai as genai # Load API key from .env file load_dotenv() -import google.generativeai as genai genai.configure(api_key=os.getenv("GOOGLE_API_KEY")) # Initialize Flask app app = Flask(__name__) CORS(app) # Allow frontend access +# === AI Model for Answer Validation === +AI_VALIDATOR = genai.GenerativeModel('gemini-1.5-flash') + +# In-memory storage for Peer Learning (Replace with a database in production) +peer_questions = [] + # === Tutor Session Routes === @app.route("/upload", methods=["POST"]) def upload(): @@ -34,15 +40,15 @@ def index(): # === Student Card Routes === @app.route("/student/", methods=["GET"]) -def get_student(student_id): # Fixed missing parameter - return student_card_service.get_student(student_id) # Pass it correctly +def get_student(student_id): + return student_card_service.get_student(student_id) @app.route("/student//feedback", methods=["POST"]) -def add_feedback(student_id): # Fixed missing parameter +def add_feedback(student_id): return student_card_service.add_feedback(student_id, request) @app.route("/student//progress", methods=["GET"]) -def get_student_progress(): # Renamed to avoid conflict +def get_student_progress(): return student_card_service.get_progress(request) @app.route("/api/student-insights", methods=["POST"]) @@ -67,7 +73,7 @@ def stream_feedback(): return quiz_service.stream_feedback(request) @app.route("/quiz/progress", methods=["GET"]) -def get_quiz_progress(): # Renamed to avoid conflict +def get_quiz_progress(): return quiz_service.get_progress() @app.route("/quiz/leaderboard", methods=["GET"]) @@ -82,5 +88,57 @@ def get_badges(): def retry_quiz(): return quiz_service.retry_quiz(request) +# === Peer Learning Routes === +@app.route('/ask_question', methods=['POST']) +def ask_question(): + """Students can post questions""" + data = request.json + question = data.get("question", "").strip() + student_name = data.get("student_name", "Anonymous") + + if not question: + return jsonify(success=False, message="Question cannot be empty") + + question_entry = { + "question": question, + "student": student_name, + "answers": [] + } + + peer_questions.append(question_entry) + return jsonify(success=True, message="Question posted successfully") + +@app.route('/answer_question', methods=['POST']) +def answer_question(): + """Students can answer posted questions""" + data = request.json + question_text = data.get("question", "").strip() + answer = data.get("answer", "").strip() + student_name = data.get("student_name", "Anonymous") + + if not question_text or not answer: + return jsonify(success=False, message="Both question and answer are required") + + for question_entry in peer_questions: + if question_entry["question"] == question_text: + # AI validation of the answer + ai_feedback = AI_VALIDATOR.generate_content( + f"Validate Provide your answer: {answer}" + ) + validated_answer = { + "student": student_name, + "answer": answer, + "ai_feedback": ai_feedback.text + } + question_entry["answers"].append(validated_answer) + return jsonify(success=True, message="Answer submitted successfully with AI feedback") + + return jsonify(success=False, message="Question not found") + +@app.route('/get_questions', methods=['GET']) +def get_questions(): + """Fetch all posted questions with answers""" + return jsonify(success=True, questions=peer_questions) + if __name__ == "__main__": app.run(debug=True) diff --git a/backend/services/peer_learning_service.py b/backend/services/peer_learning_service.py index e69de29..a203491 100644 --- a/backend/services/peer_learning_service.py +++ b/backend/services/peer_learning_service.py @@ -0,0 +1,64 @@ +from flask import Flask, request, jsonify +import google.generativeai as genai + +app = Flask(__name__) + +# AI Model for Validation +AI_VALIDATOR = genai.GenerativeModel('gemini-1.5-flash') + +# In-memory storage (Replace with a database in production) +peer_questions = [] + +@app.route('/ask_question', methods=['POST']) +def ask_question(): + """Students can post questions""" + data = request.json + question = data.get("question", "").strip() + student_name = data.get("student_name", "Anonymous") + + if not question: + return jsonify(success=False, message="Question cannot be empty") + + question_entry = { + "question": question, + "student": student_name, + "answers": [] + } + + peer_questions.append(question_entry) + return jsonify(success=True, message="Question posted successfully") + +@app.route('/answer_question', methods=['POST']) +def answer_question(): + """Students can answer posted questions""" + data = request.json + question_text = data.get("question", "").strip() + answer = data.get("answer", "").strip() + student_name = data.get("student_name", "Anonymous") + + if not question_text or not answer: + return jsonify(success=False, message="Both question and answer are required") + + for question_entry in peer_questions: + if question_entry["question"] == question_text: + # AI validation of the answer + ai_feedback = AI_VALIDATOR.generate_content( + f"Validate the following answer and provide improvement suggestions: {answer}" + ) + validated_answer = { + "student": student_name, + "answer": answer, + "ai_feedback": ai_feedback.text + } + question_entry["answers"].append(validated_answer) + return jsonify(success=True, message="Answer submitted successfully with AI feedback") + + return jsonify(success=False, message="Question not found") + +@app.route('/get_questions', methods=['GET']) +def get_questions(): + """Fetch all posted questions with answers""" + return jsonify(success=True, questions=peer_questions) + +if __name__ == '__main__': + app.run(debug=True) diff --git a/frontend/src/App.js b/frontend/src/App.js index 2723f2f..c41d7dd 100755 --- a/frontend/src/App.js +++ b/frontend/src/App.js @@ -4,6 +4,7 @@ import NavBar from "./NavBar"; import TutorSession from "./TutorSession/TutorSession"; import StudentCard from "./StudentCard/StudentCard"; import Quiz from "./Quiz/Quiz"; +import PeerLearning from "./PeerLearning/PeerLearning"; import Home from "./Home/Home"; import Instructor from "./Instructor/Instructor"; @@ -22,7 +23,7 @@ function App() { } /> } /> - Peer Learning Page} /> + } /> {/* Pass studentData as a prop to StudentCard */} } /> } /> diff --git a/frontend/src/PeerLearning/PeerLearning.css b/frontend/src/PeerLearning/PeerLearning.css index e69de29..cbe205f 100644 --- a/frontend/src/PeerLearning/PeerLearning.css +++ b/frontend/src/PeerLearning/PeerLearning.css @@ -0,0 +1,36 @@ +.peer-learning-container { + max-width: 800px; + margin: auto; + text-align: center; + } + + .ask-section input, + .questions-section input { + width: 70%; + padding: 10px; + margin-right: 10px; + } + + .ask-section button, + .questions-section button { + padding: 10px; + background-color: #007bff; + color: white; + border: none; + cursor: pointer; + } + + .question-card { + background: #f9f9f9; + padding: 15px; + margin: 10px 0; + border-radius: 5px; + } + + .answer { + background: #e3f2fd; + padding: 10px; + margin-top: 5px; + border-radius: 5px; + } + \ No newline at end of file diff --git a/frontend/src/PeerLearning/PeerLearning.js b/frontend/src/PeerLearning/PeerLearning.js index e69de29..8503fc3 100644 --- a/frontend/src/PeerLearning/PeerLearning.js +++ b/frontend/src/PeerLearning/PeerLearning.js @@ -0,0 +1,96 @@ +import React, { useEffect, useState } from "react"; +import "./PeerLearning.css"; + +const PeerLearning = () => { + const [questions, setQuestions] = useState([]); + const [newQuestion, setNewQuestion] = useState(""); + const [newAnswer, setNewAnswer] = useState({ question: "", answer: "" }); + + // Fetch questions from backend + const fetchQuestions = () => { + fetch("http://localhost:5000/get_questions") + .then((res) => res.json()) + .then((data) => { + if (data.success) setQuestions(data.questions); + }); + }; + + useEffect(() => { + fetchQuestions(); + }, []); + + // Post a new question + const askQuestion = () => { + fetch("http://localhost:5000/ask_question", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ question: newQuestion, student_name: "Student1" }), + }) + .then((res) => res.json()) + .then(() => { + setNewQuestion(""); + fetchQuestions(); + }); + }; + + // Answer an existing question + const answerQuestion = (questionText) => { + fetch("http://localhost:5000/answer_question", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + question: questionText, + answer: newAnswer.answer, + student_name: "Student2" + }), + }) + .then((res) => res.json()) + .then(() => { + setNewAnswer({ question: "", answer: "" }); + fetchQuestions(); + }); + }; + + return ( +
+

Peer Learning

+ + {/* Ask a Question Section */} +
+ setNewQuestion(e.target.value)} + /> + +
+ + {/* List of Questions */} +
+ {questions.map((q, index) => ( +
+

{q.student} asked: {q.question}

+
+ {q.answers.map((a, i) => ( +
+

{a.student} answered: {a.answer}

+

AI Feedback: {a.ai_feedback}

+
+ ))} +
+ setNewAnswer({ question: q.question, answer: e.target.value })} + /> + +
+ ))} +
+
+ ); +}; + +export default PeerLearning; diff --git a/frontend/src/TutorSession/TutorSession.css b/frontend/src/TutorSession/TutorSession.css index 7ebf8d4..15c0aa9 100644 --- a/frontend/src/TutorSession/TutorSession.css +++ b/frontend/src/TutorSession/TutorSession.css @@ -42,7 +42,7 @@ font-size: 1rem; resize: none; background: white; - color: #f4e36b; + color: black; margin-bottom: 15px; } @@ -85,5 +85,6 @@ .response-text { font-size: 1rem; word-wrap: break-word; + color:black } \ No newline at end of file From 6c6c9d7baf9cbe4e3a72c64b2dcc94b397ec04fb Mon Sep 17 00:00:00 2001 From: MeghaN28 Date: Thu, 3 Apr 2025 10:37:24 -0700 Subject: [PATCH 7/7] student card --- backend/services/student_card_service.py | 84 +++++++++++++++++++----- frontend/src/StudentCard/StudentCard.js | 38 +++++++---- 2 files changed, 92 insertions(+), 30 deletions(-) diff --git a/backend/services/student_card_service.py b/backend/services/student_card_service.py index 5520cbf..68fc0b2 100644 --- a/backend/services/student_card_service.py +++ b/backend/services/student_card_service.py @@ -1,19 +1,37 @@ from flask import request, jsonify +import google.generativeai as genai +import os -# Dummy student database (In production, use a real database) +# Dummy student database (Replace with a real database in production) students = { "123": { + "studentId": "123", "name": "Alice", - "subjects": {"math": 80, "science": 75, "history": 85}, - "feedback": [] - }, - "456": { - "name": "Bob", - "subjects": {"math": 65, "science": 70, "history": 78}, - "feedback": [] + "subjects": { + "math": 80, + "science": 75, + "history": 85 + }, + "feedback": [ + { + "subject": "math", + "comment": "Great progress in algebra!", + "timestamp": "2025-04-01T10:00:00Z" + }, + { + "subject": "science", + "comment": "Needs more practice with experiments.", + "timestamp": "2025-04-02T14:00:00Z" + } + ], + "recentActivity": "Completed algebra problems", + "lastUpdated": "2025-04-03T09:00:00Z" } } +# Configure Gemini AI +AI_MODEL = genai.GenerativeModel('gemini-1.5-flash') + def get_student(student_id): """Fetch student details.""" student = students.get(student_id) @@ -32,7 +50,6 @@ def add_feedback(student_id, request): return jsonify({"error": "Feedback cannot be empty"}), 400 student["feedback"].append(feedback) - return jsonify({"success": True, "message": "Feedback added"}) def get_progress(student_id): @@ -43,21 +60,54 @@ def get_progress(student_id): return jsonify({"name": student["name"], "progress": student["subjects"]}) +def get_gemini_feedback(student, subject, recent_activity): + """Generate AI feedback based on student performance and activity.""" + prompt = f""" + The student {student['name']} has been learning {subject}. + Their recent activity: {recent_activity}. + Current scores: {student['subjects']} in subjects. + Provide personalized feedback and improvement suggestions. + """ + try: + response = AI_MODEL.generate_content(prompt) + return response.text if response else "No AI feedback available." + except Exception as e: + return f"Error fetching feedback: {str(e)}" + +def get_interdisciplinary_suggestions(subject, recent_activity): + """Generate interdisciplinary suggestions dynamically using Gemini AI.""" + prompt = f""" + The student is learning {subject} and recently engaged in {recent_activity}. + Suggest relevant interdisciplinary connections to enhance their learning. + """ + try: + response = AI_MODEL.generate_content(prompt) + return response.text if response else "No interdisciplinary insights available." + except Exception as e: + return f"Error fetching suggestions: {str(e)}" + def get_student_insights(request): - """Fetch student insights based on the provided data.""" + """Fetch AI-generated student insights, feedback, and interdisciplinary suggestions.""" data = request.get_json() - # Extract subject and recent activity + print("Received Data:", data) # Debugging + + student_id = str(data.get('studentId')) subject = data.get('subject') recent_activity = data.get('recentActivity') - # For demo purposes, generate some dummy insights based on the subject - insights = f"Insights for {subject} based on the activity: {recent_activity}" - - # Simulate interdisciplinary suggestions - interdisciplinary_suggestions = "Suggested interdisciplinary connections: Math + Physics, Science + Chemistry." + if not student_id or not subject or not recent_activity: + return jsonify({"error": "Student ID, subject, and recent activity are required"}), 400 + + student = students.get(student_id) + if not student: + return jsonify({"error": "Student not found"}), 404 + + # Get AI-generated feedback and interdisciplinary suggestions + ai_feedback = get_gemini_feedback(student, subject, recent_activity) + interdisciplinary_suggestions = get_interdisciplinary_suggestions(subject, recent_activity) return jsonify({ - "insights": insights, + "aiFeedback": ai_feedback, "interdisciplinarySuggestions": interdisciplinary_suggestions }) diff --git a/frontend/src/StudentCard/StudentCard.js b/frontend/src/StudentCard/StudentCard.js index f7ad043..cf29e4c 100644 --- a/frontend/src/StudentCard/StudentCard.js +++ b/frontend/src/StudentCard/StudentCard.js @@ -2,7 +2,16 @@ import React, { useState, useEffect } from "react"; import axios from "axios"; import "./StudentCard.css"; // Import styles -const StudentCard = ({ student }) => { +const StudentCard = () => { + // Dummy student data (this would normally come from the backend) + const student = { + id: "123", + name: "Alice", + subject: "math", + progress: 80, + recentActivity: "Completed chapter on Algebra and History is still pending, Science is in progress" + }; + const [subject, setSubject] = useState(student.subject || "math"); const [progress, setProgress] = useState(student.progress || 0); const [insights, setInsights] = useState(""); @@ -10,24 +19,27 @@ const StudentCard = ({ student }) => { const [streaming, setStreaming] = useState(false); useEffect(() => { - fetchInsights(student.subject, student.recentActivity); // Fetch insights on initial render + if (student.recentActivity) { + //fetchInsights(subject, student.recentActivity); + } }, [student]); const fetchInsights = async (subject, recentActivity) => { try { - setStreaming(true); // Set streaming state to true while processing + setStreaming(true); const response = await axios.post("http://127.0.0.1:5000/api/student-insights", { - subject, - recentActivity, // Send recent activity as message to AI + studentId: student.id, + subject, // The selected subject + recentActivity, // The recent activity }); - setInsights(response.data.insights || "No insights available"); + setInsights(response.data.aiFeedback || "No insights available"); setInterdisciplinarySuggestions(response.data.interdisciplinarySuggestions || "No suggestions available"); - setStreaming(false); // Set streaming state to false once done + setStreaming(false); } catch (error) { console.error("Error fetching insights:", error); setInsights("Error fetching insights."); - setStreaming(false); // Reset streaming state if there's an error + setStreaming(false); } }; @@ -42,12 +54,12 @@ const StudentCard = ({ student }) => { value={subject} onChange={(e) => { setSubject(e.target.value); - fetchInsights(e.target.value, student.recentActivity); // Fetch new insights on subject change + fetchInsights(e.target.value, student.recentActivity); // Fetch insights with selected subject }} > - - - + + + {/* Progress */} @@ -58,7 +70,7 @@ const StudentCard = ({ student }) => { {/* Insights and Interdisciplinary Suggestions */}
-

AI Insights:

+

AI Feedback:

{insights}

Interdisciplinary Suggestions:

{interdisciplinarySuggestions}