🌟 Революционная образовательная платформа с ИИ-генерацией контента 🌟
Персонализированное обучение через адаптивные квизы и умные рекомендации
- ✨ Особенности
- 🏗️ Архитектура
- 🛠️ Технологический стек
- 🚀 Быстрый старт
- ⚙️ Конфигурация
- 📊 API Документация
- 🧪 Тестирование
- 🚢 Деплой
- 🤝 Участие в разработке
- 📚 Дополнительная документация
- 📄 Лицензия
|
|
- 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
| Сервис | Технология | Назначение |
|---|---|---|
| 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 | Основное хранилище данных |
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 # Загрузка файлов{
"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 ключ🖥️ Локальная разработка
git clone https://github.com/your-username/eduplatform.git
cd eduplatform# Переход в папку 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 файл с вашими настройками# Переход в папку frontend
cd ../frontend
# Установка зависимостей
npm install
# Настройка переменных окружения
cp .env.example .env.local
# Отредактируйте .env.local с настройками API# Запуск backend (в терминале 1)
cd backend
uvicorn main:app --reload --host 0.0.0.0 --port 8000
# Запуск frontend (в терминале 2)
cd frontend
npm run dev🎉 Готово! Приложение доступно на:
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- API Docs: http://localhost:8000/docs
🐳 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
🔧 Включенные сервисы:
- 🖥️ Frontend (React) - http://localhost:3000
- 🐍 Backend (FastAPI) - http://localhost:8000
- 🗄️ MongoDB - localhost:27017
- 🔄 Redis - localhost:6379
- 📊 Mongo Express (DB Admin) - http://localhost:8081
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-passwordFrontend 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| Категория | 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 сервера:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
- OpenAPI JSON: http://localhost:8000/openapi.json
cd backend
# Установка тестовых зависимостей
pip install pytest pytest-asyncio pytest-cov httpx
# Запуск всех тестов
pytest
# Запуск с покрытием кода
pytest --cov=. --cov-report=html
# Запуск конкретного теста
pytest tests/test_auth.py::test_login_success -vcd frontend
# Запуск unit тестов
npm test
# Запуск E2E тестов
npm run test:e2e
# Запуск с покрытием
npm run test:coveragetests/
├── 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
☁️ Vercel (Frontend) + AWS Lambda (Backend)
# Установка Vercel CLI
npm i -g vercel
# Деплой
cd frontend
vercel --prod# Установка 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"]# .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- Базовая функциональность квизов
- AI-генерация контента
- Система аутентификации
- Загрузка и обработка документов
- Мобильное приложение (React Native)
- Видео контент поддержка
- Групповые квизы и соревнования
- Интеграция с LMS (Moodle, Canvas)
- Голосовые ответы и распознавание речи
- AR/VR интеграция для иммерсивного обучения
- Проверьте существующие issues
- Создайте новый issue с тегом
bug - Опишите проблему подробно
- Приложите скриншоты/логи если возможно
- Создайте issue с тегом
enhancement - Опишите функциональность и её пользу
- Обсудите в 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 для всех функций
- 🔄 Кеширование с Redis - полное руководство по кешированию
- 🤖 AI Integration - интеграция с OpenAI GPT-4
- 🗄️ Database Schema - схема базы данных MongoDB
- 🔒 Security Guide - рекомендации по безопасности
- 📊 Monitoring - мониторинг и логирование
- 👨🏫 Teacher Guide - руководство для преподавателей
- 👨🎓 Student Guide - руководство для студентов
- 🔧 Admin Guide - руководство администратора
- 🏗️ Architecture - детальная архитектура системы
- ⚡ Performance - оптимизация производительности
- 🧪 Testing Strategy - стратегия тестирования
Этот проект лицензирован под MIT License - см. файл LICENSE для деталей.
- 🤖 OpenAI за мощные языковые модели
- 📚 FastAPI за отличный Python фреймворк
- ⚛️ React сообщество за экосистему
- 🎨 Tailwind CSS за прекрасный дизайн-фреймворк
- 🗄️ MongoDB за гибкую базу данных
⭐ Поставьте звезду если проект был полезен! ⭐
🐦 Twitter • 💼 LinkedIn • 📧 Email
Сделано с ❤️ и ☕ для будущего образования