Skip to content

GetLivreru/EduPlatform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

100 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎓 EduPlatform - AI-Powered Educational Platform

EduPlatform Python FastAPI MongoDB React TypeScript

🌟 Революционная образовательная платформа с ИИ-генерацией контента 🌟

Персонализированное обучение через адаптивные квизы и умные рекомендации


🚀 Live Demo📖 Documentation🐛 Issues💬 Discussions

📋 Содержание

✨ Особенности

🎯 Для студентов

  • 🧠 AI-персонализация - умные рекомендации на основе анализа ошибок
  • 📚 Адаптивные квизы - сложность подстраивается под уровень знаний
  • 🏆 Геймификация - очки, достижения, рейтинги
  • 📊 Отслеживание прогресса - детальная аналитика обучения
  • 🎮 Интерактивность - современный UX/UI дизайн
  • 📱 Кроссплатформенность - работает на всех устройствах

👨‍🏫 Для преподавателей

  • 📄 AI-генерация квизов - автоматическое создание из документов
  • 📈 Аналитика класса - детальная статистика по ученикам
  • 🗂️ Управление контентом - загрузка PDF, DOCX, TXT файлов
  • Быстрое создание - квизы за минуты, не часы
  • 🎨 Гибкие настройки - сложность, количество вопросов
  • 📋 Отчетность - экспорт результатов и статистики

🤖 AI-возможности

  • GPT-4 Integration - генерация качественных вопросов из текста
  • Smart Recommendations - персональные советы по изучению материала
  • Adaptive Learning - автоматическая настройка сложности
  • Content Analysis - извлечение ключевых тем из документов

Производительность

  • Redis Caching - кеширование пользовательских сессий и данных квизов
  • Fast Response - молниеносная загрузка благодаря оптимизированному кешу
  • Session Management - надежное управление сессиями пользователей
  • Rate Limiting - защита от спама и DDoS атак

🏗️ Архитектура

graph TB
    subgraph "🖥️ Frontend Layer"
        A["React + TypeScript"]
        B["Redux Toolkit"]
        C["TailwindCSS"]
    end
    
    subgraph "🔗 API Gateway"
        D["FastAPI Backend"]
        E["JWT Authentication"]
        F["CORS Middleware"]
    end
    
    subgraph "🤖 AI Services"
        G["OpenAI GPT-4"]
        H["Content Processor"]
        I["Recommendation Engine"]
    end
    
    subgraph "💾 Data Layer"
        J["MongoDB Atlas"]
        K["AWS S3 Storage"]
        L["Redis Cache"]
    end
    
    subgraph "☁️ Infrastructure"
        M["Vercel Frontend"]
        N["AWS Lambda Backend"]
        O["CloudWatch Logs"]
    end
    
    A --> D
    B --> D
    D --> G
    D --> J
    D --> K
    H --> G
    I --> G
    D --> L
    M --> N
    N --> O
Loading

🔧 Микросервисная архитектура

Сервис Технология Назначение
API Gateway FastAPI Маршрутизация запросов, аутентификация
Auth Service JWT + MongoDB Управление пользователями и ролями
Quiz Engine Python + AI Генерация и обработка квизов
File Processor PyMuPDF + python-docx Извлечение текста из документов
AI Service OpenAI API Генерация контента и рекомендаций
Cache Service Redis Кеширование данных и сессий
Storage Service AWS S3 Хранение файлов и медиа
Database MongoDB Atlas Основное хранилище данных

🛠️ Технологический стек

Backend Architecture

FastAPI Python MongoDB Redis AWS

Frontend Stack

React TypeScript TailwindCSS Next.js

AI & ML

OpenAI GPT-4

DevOps & Infrastructure

Docker Vercel GitHub Actions

📦 Основные зависимости

Backend Dependencies

fastapi>=0.104.0          # Современный веб-фреймворк
motor>=3.3.0              # Async MongoDB драйвер
redis>=5.0.0              # Redis клиент для кеширования
pydantic>=2.4.0           # Валидация данных
python-jose>=3.3.0        # JWT токены
bcrypt>=4.0.0             # Хеширование паролей
openai>=1.0.0             # GPT интеграция
boto3>=1.29.0             # AWS S3 клиент
PyMuPDF>=1.23.0           # PDF обработка
python-docx>=1.1.0        # Word документы
python-multipart>=0.0.6   # Загрузка файлов

Frontend Dependencies

{
  "react": "^18.2.0",
  "typescript": "^5.0.0",
  "@reduxjs/toolkit": "^1.9.0",
  "tailwindcss": "^3.3.0",
  "axios": "^1.5.0",
  "react-router-dom": "^6.8.0",
  "framer-motion": "^10.16.0"
}

🚀 Быстрый старт

📋 Предварительные требования

# Системные требования
Python 3.9+
Node.js 16+
Git
MongoDB (Atlas или локальный)
Redis (для кеширования)
AWS аккаунт (для S3)
OpenAI API ключ

⚡ Установка за 60 секунд

🖥️ Локальная разработка

1️⃣ Клонирование репозитория

git clone https://github.com/your-username/eduplatform.git
cd eduplatform

2️⃣ Backend настройка

# Переход в папку backend
cd backend

# Создание виртуального окружения
python -m venv venv

# Активация (Windows)
venv\Scripts\activate
# Активация (macOS/Linux)
source venv/bin/activate

# Установка зависимостей
pip install -r requirements.txt

# Настройка переменных окружения
cp .env.example .env
# Отредактируйте .env файл с вашими настройками

3️⃣ Frontend настройка

# Переход в папку frontend
cd ../frontend

# Установка зависимостей
npm install

# Настройка переменных окружения
cp .env.example .env.local
# Отредактируйте .env.local с настройками API

4️⃣ Запуск разработки

# Запуск backend (в терминале 1)
cd backend
uvicorn main:app --reload --host 0.0.0.0 --port 8000

# Запуск frontend (в терминале 2)
cd frontend
npm run dev

🎉 Готово! Приложение доступно на:

🐳 Docker Compose (рекомендуется)
# Клонирование репозитория
git clone https://github.com/your-username/eduplatform.git
cd eduplatform

# Настройка окружения
cp .env.example .env
# Отредактируйте .env с вашими настройками

# Запуск всех сервисов
docker-compose up -d

# Просмотр логов
docker-compose logs -f

Приложение будет доступно на http://localhost:3000

🔧 Включенные сервисы:

⚙️ Конфигурация

🔐 Переменные окружения

Backend Environment (.env)
# 🗄️ База данных
MONGODB_URL=mongodb+srv://username:password@cluster.mongodb.net/eduplatform

# 🔑 Безопасность
JWT_SECRET_KEY=your-super-secret-jwt-key-here
JWT_ALGORITHM=HS256
JWT_EXPIRE_MINUTES=1440

# 🤖 OpenAI настройки
OPENAI_API_KEY=sk-your-openai-api-key-here
OPENAI_MODEL=gpt-4-turbo-preview

# ☁️ AWS S3 настройки
AWS_ACCESS_KEY_ID=your-aws-access-key
AWS_SECRET_ACCESS_KEY=your-aws-secret-key
AWS_REGION=us-east-1
S3_BUCKET_NAME=eduplatform-files

# 🔄 Redis настройки
REDIS_URL=redis://localhost:6379
REDIS_TTL=3600

# 🌐 CORS настройки
ALLOWED_ORIGINS=http://localhost:3000,https://yourdomain.com

# 📧 Email настройки (опционально)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USERNAME=your-email@gmail.com
SMTP_PASSWORD=your-app-password
Frontend Environment (.env.local)
# 🔗 API настройки
NEXT_PUBLIC_API_URL=http://localhost:8000
NEXT_PUBLIC_APP_NAME=EduPlatform

# 📊 Аналитика (опционально)
NEXT_PUBLIC_GOOGLE_ANALYTICS=G-XXXXXXXXXX
NEXT_PUBLIC_HOTJAR_ID=your-hotjar-id

# 🎨 Темизация
NEXT_PUBLIC_THEME_COLOR=#3B82F6
NEXT_PUBLIC_BRAND_NAME=EduPlatform

📊 API Документация

🔗 Endpoints Overview

Категория Endpoint Метод Описание
👤 Auth /auth/login POST Авторизация пользователя
👤 Auth /auth/register POST Регистрация нового пользователя
📚 Quizzes /quizzes/ GET Получение списка квизов
📚 Quizzes /quizzes/{id} GET Получение конкретного квиза
🎯 Attempts /quiz-attempts/ POST Создание попытки прохождения
🎯 Attempts /quiz-attempts/{id}/answer POST Отправка ответа на вопрос
👨‍🏫 Teachers /teachers/upload-document POST Загрузка документа и генерация квиза
👨‍🏫 Teachers /teachers/my-generated-quizzes GET Квизы преподавателя

📝 Примеры запросов

🔐 Авторизация
# Регистрация нового пользователя
curl -X POST "http://localhost:8000/auth/register" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "student123",
    "email": "student@example.com",
    "password": "securepassword",
    "role": "student"
  }'

# Авторизация
curl -X POST "http://localhost:8000/auth/login" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "username=student123&password=securepassword"
📚 Работа с квизами
# Получение списка квизов
curl -X GET "http://localhost:8000/quizzes/" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"

# Создание попытки прохождения
curl -X POST "http://localhost:8000/quiz-attempts/" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"quiz_id": "60c72b2f9b1d7c2d1c8b4567"}'

# Отправка ответа на вопрос
curl -X POST "http://localhost:8000/quiz-attempts/ATTEMPT_ID/answer" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"question_index": 0, "answer": 2}'
👨‍🏫 Функции преподавателя
# Загрузка документа и генерация квиза
curl -X POST "http://localhost:8000/teachers/upload-document" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -F "file=@document.pdf" \
  -F "quiz_title=Основы программирования" \
  -F "difficulty=intermediate" \
  -F "questions_count=10"

📋 Схемы данных

👤 User Schema
{
  "id": "string",
  "username": "string",
  "email": "string",
  "role": "student | teacher | admin",
  "quiz_points": "number",
  "created_at": "datetime",
  "is_active": "boolean"
}
📚 Quiz Schema
{
  "id": "string",
  "title": "string",
  "description": "string",
  "category": "string",
  "difficulty": "easy | intermediate | hard",
  "questions": [
    {
      "question": "string",
      "options": ["string"],
      "correct_answer": "number"
    }
  ],
  "created_by": "string",
  "created_at": "datetime"
}

🔍 Интерактивная документация

После запуска backend сервера:

🧪 Тестирование

🔧 Backend тесты

cd backend

# Установка тестовых зависимостей
pip install pytest pytest-asyncio pytest-cov httpx

# Запуск всех тестов
pytest

# Запуск с покрытием кода
pytest --cov=. --cov-report=html

# Запуск конкретного теста
pytest tests/test_auth.py::test_login_success -v

⚛️ Frontend тесты

cd frontend

# Запуск unit тестов
npm test

# Запуск E2E тестов
npm run test:e2e

# Запуск с покрытием
npm run test:coverage

📊 Структура тестов

tests/
├── backend/
│   ├── test_auth.py           # Тесты авторизации
│   ├── test_quizzes.py        # Тесты квизов
│   ├── test_teachers.py       # Тесты функций преподавателя
│   └── test_ai_service.py     # Тесты AI сервиса
├── frontend/
│   ├── components/            # Тесты компонентов
│   ├── pages/                 # Тесты страниц
│   └── utils/                 # Тесты утилит
└── e2e/                       # End-to-end тесты
    ├── auth.spec.ts
    ├── quiz.spec.ts
    └── teacher.spec.ts

🚢 Деплой

🌐 Production деплой

☁️ Vercel (Frontend) + AWS Lambda (Backend)

Frontend (Vercel)

# Установка Vercel CLI
npm i -g vercel

# Деплой
cd frontend
vercel --prod

Backend (AWS Lambda)

# Установка Serverless Framework
npm install -g serverless

# Настройка AWS credentials
aws configure

# Деплой
cd backend
serverless deploy --stage prod
🐳 Docker + Railway/Heroku
# Backend Dockerfile
FROM python:3.9-slim

WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .
EXPOSE 8000

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
# Frontend Dockerfile
FROM node:18-alpine

WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production

COPY . .
RUN npm run build

EXPOSE 3000
CMD ["npm", "start"]

🔄 CI/CD Pipeline

# .github/workflows/deploy.yml
name: Deploy to Production

on:
  push:
    branches: [ main ]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Run Tests
        run: |
          cd backend && pytest
          cd ../frontend && npm test

  deploy:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - name: Deploy Frontend
        run: vercel --prod --token ${{ secrets.VERCEL_TOKEN }}
      
      - name: Deploy Backend
        run: serverless deploy --stage prod

🤝 Участие в разработке

🎯 Roadmap

  • Базовая функциональность квизов
  • AI-генерация контента
  • Система аутентификации
  • Загрузка и обработка документов
  • Мобильное приложение (React Native)
  • Видео контент поддержка
  • Групповые квизы и соревнования
  • Интеграция с LMS (Moodle, Canvas)
  • Голосовые ответы и распознавание речи
  • AR/VR интеграция для иммерсивного обучения

🐛 Как сообщить о баге

  1. Проверьте существующие issues
  2. Создайте новый issue с тегом bug
  3. Опишите проблему подробно
  4. Приложите скриншоты/логи если возможно

💡 Предложение новых функций

  1. Создайте issue с тегом enhancement
  2. Опишите функциональность и её пользу
  3. Обсудите в Discussions

🔧 Процесс разработки

# 1. Форк репозитория
git clone https://github.com/your-username/eduplatform.git

# 2. Создание ветки для функции
git checkout -b feature/amazing-feature

# 3. Commit изменений
git commit -m "feat: add amazing feature"

# 4. Push в ваш fork
git push origin feature/amazing-feature

# 5. Создание Pull Request

📝 Стандарты кода

  • Backend: Black, flake8, mypy
  • Frontend: ESLint, Prettier, TypeScript
  • Commits: Conventional Commits
  • Documentation: Docstrings для всех функций

📚 Дополнительная документация

📖 Техническая документация

🎯 Руководства пользователя

  • 👨‍🏫 Teacher Guide - руководство для преподавателей
  • 👨‍🎓 Student Guide - руководство для студентов
  • 🔧 Admin Guide - руководство администратора

🔧 Разработка

  • 🏗️ Architecture - детальная архитектура системы
  • Performance - оптимизация производительности
  • 🧪 Testing Strategy - стратегия тестирования

📄 Лицензия

Этот проект лицензирован под MIT License - см. файл LICENSE для деталей.

🙏 Благодарности

  • 🤖 OpenAI за мощные языковые модели
  • 📚 FastAPI за отличный Python фреймворк
  • ⚛️ React сообщество за экосистему
  • 🎨 Tailwind CSS за прекрасный дизайн-фреймворк
  • 🗄️ MongoDB за гибкую базу данных

⭐ Поставьте звезду если проект был полезен! ⭐

🐦 Twitter💼 LinkedIn📧 Email

Сделано с ❤️ и ☕ для будущего образования

About

Educational Platform on base AI

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Contributors