| ---
|
| title: TalimBot
|
| emoji: π
|
| colorFrom: blue
|
| colorTo: indigo
|
| sdk: docker
|
| pinned: false
|
| license: mit
|
| ---
|
|
|
| # TalimBot - AI-Powered Student Grouping System
|
|
|
| An intelligent educational platform that uses advanced psychology principles and AI to create optimal learning groups for adolescent students (ages 15-16).
|
|
|
| ## Overview
|
|
|
| TalimBot is a comprehensive web-based system designed to help teachers form balanced, effective study groups by analyzing student personalities, learning styles, academic motivation, and cooperative skills. The system uses OpenAI's GPT-4o to create groups that maximize learning potential through Zone of Proximal Development (ZPD) theory and complementary personality matching.
|
|
|
| ## Key Features
|
|
|
| ### For Teachers
|
| - **AI-Powered Grouping**: Automated group formation using educational psychology principles
|
| - **Multi-Factor Analysis**: Considers 7 key criteria with weighted priorities:
|
| - ZPD Optimization (30%) - Grade-based peer tutoring scaffolding
|
| - MBTI Complementarity (25%) - Personality type balance
|
| - VARK Diversity (20%) - Learning style variety
|
| - Academic Motivation (15%) - AMS score distribution
|
| - Cooperative Skills (10%) - Teamwork ability balance
|
| - Course-Specific Requirements
|
| - Student Preferences (5%)
|
| - **Real-time Dashboard**: Monitor student profile completion and grouping status
|
| - **Data Management**: Import/export student data via JSON, fill test data
|
| - **Result Control**: Show/hide grouping results to students
|
| - **Flexible Reset Options**:
|
| - Reset grouping only (preserve student data)
|
| - Reset all data (complete system reset)
|
|
|
| ### For Students
|
| - **Profile Management**: Complete personality and learning assessments
|
| - **Integrated Tests**:
|
| - MBTI personality test (16 types)
|
| - VARK learning style questionnaire (Visual, Aural, Read/Write, Kinesthetic)
|
| - AMS academic motivation scale (28 questions, 0-196 score)
|
| - Cooperative learning skills assessment (25 questions, 0-125 score)
|
| - **Peer Preferences**: Select up to 4 preferred groupmates
|
| - **Group View**: See assigned group members and AI reasoning (when visible)
|
| - **Progress Tracking**: Monitor test completion status
|
|
|
| ## Technical Architecture
|
|
|
| ### Backend
|
| - **Framework**: FastAPI (Python)
|
| - **Database**: JSON file-based storage (students.json)
|
| - **AI Integration**: OpenRouter API with GPT-4o model
|
| - **Authentication**: Password-based teacher authentication, national code verification for students
|
|
|
| ### Frontend
|
| - **UI Framework**: Tailwind CSS
|
| - **Language Support**: Persian (RTL layout) with Vazirmatn font
|
| - **Pages**:
|
| - Login page (student/teacher authentication)
|
| - Student dashboard (profile management, tests)
|
| - Teacher dashboard (grouping management, analytics)
|
| - Group view (display assigned groups)
|
| - AMS questionnaire (academic motivation assessment)
|
| - Cooperative questionnaire (teamwork skills assessment)
|
|
|
| ### Deployment
|
| - **Platform**: Railway.app
|
| - **Server**: Uvicorn ASGI server
|
| - **Static Files**: Served via FastAPI StaticFiles
|
| - **Environment Variables**: OPENROUTER_API_KEY
|
|
|
| ## Project Structure
|
|
|
| ```
|
| talimbot/
|
| βββ backend/
|
| β βββ main.py # FastAPI application and API endpoints
|
| β βββ grouping_logic.py # AI grouping algorithm
|
| β βββ data/
|
| β β βββ students.json # Student data (gitignored)
|
| β β βββ students.json.backup # Clean backup template
|
| β βββ static/
|
| β βββ pages/ # HTML pages
|
| β β βββ login.html
|
| β β βββ student-dashboard.html
|
| β β βββ teacher-dashboard.html
|
| β β βββ group-view.html
|
| β β βββ ams-questionnaire.html
|
| β β βββ cooperative-questionnaire.html
|
| β β βββ student-data.html
|
| β βββ assets/
|
| β β βββ js/
|
| β β β βββ data.js # API client functions
|
| β β β βββ grouping.js # Grouping utilities
|
| β β βββ css/
|
| β β βββ styles.css # Custom styles
|
| β βββ index.html # Landing page
|
| βββ resources_references/ # Documentation and reference files
|
| β βββ RAILWAY_DEPLOYMENT.md # Deployment guide
|
| β βββ TEST_RESULTS_AND_SOLUTION.md
|
| β βββ angizesh_tahsili.txt # AMS questionnaire source
|
| β βββ cooperative.txt # Cooperative questionnaire source
|
| β βββ students_class_notebook.txt # Original student data
|
| β βββ sample-student-data.json # JSON import example
|
| βββ requirements.txt # Python dependencies
|
| βββ runtime.txt # Python version for Railway
|
| βββ Procfile # Railway start command
|
| βββ .gitignore # Git ignore rules
|
|
|
| ```
|
|
|
| ## Installation and Setup
|
|
|
| ### Prerequisites
|
| - Python 3.11+
|
| - OpenRouter API key (get from https://openrouter.ai/keys)
|
|
|
| ### Local Development
|
|
|
| 1. Clone the repository:
|
| ```bash
|
| git clone https://github.com/talimbot/talimbot.git
|
| cd talimbot
|
| ```
|
|
|
| 2. Install dependencies:
|
| ```bash
|
| pip install -r requirements.txt
|
| ```
|
|
|
| 3. Set environment variable:
|
| ```bash
|
| # Windows PowerShell
|
| $env:OPENROUTER_API_KEY="your-api-key-here"
|
|
|
| # Linux/Mac
|
| export OPENROUTER_API_KEY="your-api-key-here"
|
| ```
|
|
|
| 4. Run the server:
|
| ```bash
|
| cd backend
|
| uvicorn main:app --reload --host 0.0.0.0 --port 8000
|
| ```
|
|
|
| 5. Access the application:
|
| ```
|
| http://localhost:8000
|
| ```
|
|
|
| ### Railway Deployment
|
|
|
| 1. Fork this repository to your GitHub account
|
|
|
| 2. Create a new project on Railway.app
|
|
|
| 3. Connect your GitHub repository
|
|
|
| 4. Add environment variable in Railway dashboard:
|
| - Key: `OPENROUTER_API_KEY`
|
| - Value: Your OpenRouter API key
|
|
|
| 5. Railway will auto-deploy using the Procfile
|
|
|
| ## Usage Guide
|
|
|
| ### Teacher Workflow
|
|
|
| 1. **Login**: Access teacher dashboard with password (default: teacher123)
|
|
|
| 2. **Monitor Students**: View student profile completion status
|
|
|
| 3. **Fill Test Data** (Optional): Use the test data generator to fill 10 sample students for testing
|
|
|
| 4. **Import Data** (Optional): Upload JSON file with student information
|
|
|
| 5. **Perform Grouping**:
|
| - Enter course name
|
| - Click "Start Grouping" button
|
| - Wait for AI processing (30-60 seconds)
|
| - Review generated groups with detailed reasoning
|
|
|
| 6. **Show Results**: Toggle result visibility to allow students to view their groups
|
|
|
| 7. **Reset Options**:
|
| - Reset Grouping: Clear groups, keep student data
|
| - Reset All Data: Complete system wipe
|
|
|
| ### Student Workflow
|
|
|
| 1. **Login**: Enter student number (S001-S030) and national code
|
|
|
| 2. **Complete Profile**:
|
| - Take MBTI personality test (external link)
|
| - Complete VARK learning style questionnaire
|
| - Fill AMS academic motivation scale (28 questions)
|
| - Complete cooperative skills assessment (25 questions)
|
| - Select up to 4 preferred groupmates (optional)
|
|
|
| 3. **Save Information**: Click "Save All Information" button
|
|
|
| 4. **View Group**: Access group view page to see assigned group (when teacher makes it visible)
|
|
|
| ## Grouping Algorithm
|
|
|
| The AI grouping system follows a sophisticated 7-tier priority framework:
|
|
|
| 1. **ZPD Optimization (30%)**: Mixes high and medium performers for peer tutoring
|
| 2. **MBTI Complementarity (25%)**: Pairs complementary personality types (e.g., ENFP+INTJ)
|
| 3. **VARK Diversity (20%)**: Ensures multiple learning styles in each group
|
| 4. **Academic Motivation (15%)**: Distributes high-motivation students across groups
|
| 5. **Cooperative Skills (10%)**: Balances teamwork abilities
|
| 6. **Course-Specific Requirements**: Adapts to subject matter needs
|
| 7. **Student Preferences (5%)**: Honors preferences when they don't compromise other criteria
|
|
|
| Groups are typically 5 students each, with some groups of 4 to avoid very small groups.
|
|
|
| ## Data Structure
|
|
|
| ### Student Object
|
| ```json
|
| {
|
| "studentNumber": "S001",
|
| "name": "Student Name",
|
| "nationalCode": "1234567890",
|
| "mbti": "INTJ",
|
| "learningStyle": "Visual",
|
| "ams": "150",
|
| "cooperative": "95",
|
| "grade": 18.5,
|
| "preferredStudents": ["S002", "S003"],
|
| "group": 1
|
| }
|
| ```
|
|
|
| ## API Endpoints
|
|
|
| - `GET /api/students` - Get all students
|
| - `GET /api/student/{student_number}` - Get specific student
|
| - `PUT /api/student/{student_number}` - Update student data
|
| - `POST /api/grouping/perform` - Execute AI grouping
|
| - `GET /api/grouping/status` - Get grouping statistics
|
| - `POST /api/grouping/reset` - Reset grouping only
|
| - `POST /api/data/reset-all` - Reset all data
|
| - `POST /api/grouping/toggle-visibility` - Show/hide results
|
| - `POST /api/auth/teacher` - Verify teacher password
|
| - `POST /api/auth/student` - Authenticate student
|
| - `GET /api/student/{student_number}/group` - Get student's group
|
|
|
| ## Security Notes
|
|
|
| - Student data stored in students.json (excluded from version control)
|
| - Teacher password: "teacher123" (change in production)
|
| - National codes used for student authentication
|
| - API key required for AI grouping functionality
|
|
|
| ## Educational Foundation
|
|
|
| This system is based on:
|
| - **Vygotsky's Zone of Proximal Development (ZPD)**: Optimal learning occurs when students work slightly above their current level with peer support
|
| - **MBTI Complementarity Research**: Diverse personality types enhance team creativity and problem-solving
|
| - **VARK Learning Theory**: Multiple learning styles improve knowledge retention
|
| - **Academic Motivation Scale (AMS)**: Measures intrinsic and extrinsic motivation factors
|
| - **Cooperative Learning Principles**: Teamwork skills are essential for collaborative success
|
|
|
| ## License
|
|
|
| This project is for educational purposes.
|
|
|
| ## Contributors
|
|
|
| Developed for educational psychology research and classroom implementation.
|
|
|
| ## Support
|
|
|
| For issues or questions, please refer to the documentation in the `resources_references/` folder.
|
|
|