Skip to content

Repository files navigation

🎓 School Startup

🚀 Умная платформа для онлайн-обучения

Version Status Python React License

Современная система управления обучением с красивым интерфейсом и мощным функционалом

Автор: onevu (@onevu) | GitHub


📖 Содержание


💡 Что это такое?

School Startup - это полноценная платформа для онлайн-обучения, которая объединяет:

Структурированные курсы - модули разбиты на шаги с интерактивными уроками
Видео-контент - встроенный видеоплеер прямо в уроках
Отслеживание прогресса - система фиксирует ваш прогресс в реальном времени
Проекты и задания - выполняйте практические работы
Админ-панель - полное управление контентом без кода

Для кого?

Кто Что может делать
👨‍🎓 Студенты Учиться в своем темпе, отслеживать прогресс, выполнять задания
👨‍🏫 Учителя Создавать и редактировать курсы, видеть прогресс учеников
🏢 Организации Запустить собственную платформу обучения за минуты

📸 Скриншоты

🏠 Главная страница

Главная страница

🔐 Аутентификация

Вход в систему Регистрация
Вход Регистрация

📚 Каталог модулей (курсов)

Модули

Красивый каталог всех доступных курсов. Студент выбирает интересующий курс и начинает обучение.

📖 Обучение - Интерактивные уроки

Обучение

Уроки содержат текст, изображения и видео. Прогресс отслеживается автоматически.

🎛️ Админ-панель - Главная

Админ-панель

Админ может видеть всю статистику: количество пользователей, курсов, реализаций, модулей.

🎬 Управление реализациями (проектами)

Реализации

Просмотр, редактирование и одобрение проектов студентов.

📝 Управление модулями (курсами)

Управление модулями

Создание новых курсов, редактирование содержимого, управление уроками.

👥 Управление пользователями

Управление пользователями

Полный контроль над пользователями: просмотр, редактирование, удаление, назначение курсов.


⚡ Быстрый старт

За 3 команды запустить всё:

# 1️⃣ Клонируем репозиторий
git clone <repo_url>
cd school-startup

# 2️⃣ Запускаем менеджер
python manage.py

# 3️⃣ Выбираем:
#    - Режим сети: 2 (для локальной сети) или 1 (только localhost)
#    - Опцию: 3 (Backend + Frontend)

🔓 Логин по умолчанию

📧 Email:    admin@schoolstartup.ru
🔑 Пароль:   Admin1234!

🌐 Откройте в браузере

http://localhost:5173

✨ Ключевые возможности

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

  • ✅ Структурированное обучение по модулям
  • ✅ Отслеживание собственного прогресса
  • ✅ Интерактивные видео-уроки
  • ✅ Практические задания и проекты
  • ✅ Система проверки уникальности идей
  • ✅ Личный кабинет с достижениями

🎛️ Для администраторов

  • ✅ Полнофункциональная админ-панель (не нужен код!)
  • ✅ Создание и редактирование курсов
  • ✅ Загрузка изображений и видео
  • ✅ Управление пользователями
  • ✅ Отслеживание прогресса всех студентов
  • ✅ Просмотр и одобрение проектов

🔧 Технические возможности

  • ✅ Полная аутентификация с JWT токенами
  • ✅ Асинхронный FastAPI backend
  • ✅ React с TypeScript фронтенд
  • ✅ Красивый дизайн на TailwindCSS
  • ✅ Готовые UI компоненты (Radix UI)
  • ✅ SQLite база данных

🛠 Техническая часть

📊 Стек технологий

🐍 Backend (Python)

Технология Версия Назначение
FastAPI 0.128.0 Веб-фреймворк с асинхронностью
Uvicorn 0.30.0 ASGI сервер (молниеносный)
SQLite + aiosqlite 0.20.0 Асинхронная база данных
Pydantic 2.7.0 Валидация данных
Python-Jose 3.3.0 JWT токены для аутентификации
Bcrypt 4.1.2 Безопасное хеширование паролей
SlowAPI 0.1.9 Защита от DDoS (rate limiting)

⚛️ Frontend (React + TypeScript)

Технология Версия Назначение
React 18.x UI библиотека
TypeScript 5.x Типизация и безопасность
Vite 6.x Сборщик (⚡ молниеносно быстрый)
TailwindCSS 3.x Утилиты для стилей
Radix UI 1.x Доступные UI компоненты
React Router 6.x Маршрутизация
TanStack Query 5.x Управление данными и кешированием
Axios 1.x HTTP запросы

📁 Структура проекта

school-startup/
│
├─ 🐍 python_backend/               ← FastAPI Backend (API)
│  ├─ venv/                        Виртуальное окружение Python
│  ├─ data/
│  │  ├─ schoolstartup.db          SQLite база данных
│  │  ├─ secret.key                JWT секретный ключ
│  │  └─ uploads/                  Загруженные изображения
│  │
│  ├─ main.py                      ⭐ Главное FastAPI приложение
│  ├─ setup.py                     Инициализация БД при первом запуске
│  ├─ auth.py                      Аутентификация и JWT токены
│  ├─ db.py                        Операции с БД (SQLite)
│  ├─ schemas.py                   Pydantic модели (валидация)
│  ├─ config.py                    Конфигурация приложения
│  ├─ logging_config.py            Логирование
│  │
│  ├─ routers_auth.py              /api/auth (вход, регистрация)
│  ├─ routers_user.py              /api/users (профили)
│  ├─ routers_modules.py           /api/modules (курсы)
│  ├─ routers_lessons.py           /api/lessons (уроки)
│  ├─ routers_projects.py          /api/projects (проекты)
│  ├─ routers_progress.py          /api/progress (прогресс)
│  ├─ routers_ideas.py             /api/ideas (идеи)
│  ├─ routers_admin.py             /api/admin (админ-панель)
│  ├─ routers_me.py                /api/me (текущий пользователь)
│  │
│  ├─ requirements.txt             Все Python зависимости
│  └─ __pycache__/                 Кеш Python
│
├─ 🌐 client/                      ← React Frontend (Web UI)
│  ├─ src/
│  │  ├─ pages/                   React страницы
│  │  │  ├─ landing.tsx           🏠 Главная страница
│  │  │  ├─ home.tsx              👤 Личный кабинет
│  │  │  ├─ login.tsx             🔓 Вход
│  │  │  ├─ register.tsx          ✍️  Регистрация
│  │  │  ├─ learn.tsx             📚 Обучение
│  │  │  ├─ modules.tsx           📖 Модули/Курсы
│  │  │  ├─ projects.tsx          🎨 Проекты/Реализации
│  │  │  ├─ admin.tsx             ⚙️  Админ-панель
│  │  │  ├─ submit.tsx            📤 Сдача работ
│  │  │  └─ ...
│  │  │
│  │  ├─ components/              React компоненты
│  │  │  ├─ Header.tsx            Шапка сайта
│  │  │  ├─ ProgressBar.tsx       Полоса прогресса
│  │  │  ├─ VideoPlayer.tsx       Видеоплеер
│  │  │  ├─ admin/                Компоненты админ-панели
│  │  │  └─ ui/                   UI компоненты (Radix UI, 40+)
│  │  │
│  │  ├─ hooks/                   React хуки
│  │  ├─ lib/                     Утилиты и конфигурация
│  │  └─ App.tsx                  Главный компонент
│  │
│  ├─ index.html                  HTML шаблон
│  ├─ package.json                Frontend зависимости
│  └─ README.md                   Frontend документация
│
├─ 🔧 server/                      Dev сервер (Express)
├─ 📚 script/                      Скрипты сборки
├─ 🔌 shared/                      Общие типы и схемы
│
├─ 🐍 manage.py                    ⭐ ГЛАВНЫЙ МЕНЕДЖЕР (интерактивное меню)
│
└─ Configuration:
   ├─ package.json                Frontend зависимости
   ├─ tsconfig.json               TypeScript конфиг
   ├─ vite.config.ts              Vite конфиг
   ├─ tailwind.config.ts          TailwindCSS стили
   ├─ .env.example                Пример переменных окружения
   ├─ .gitignore                  Git исключения
   ├─ LICENSE                     MIT лицензия
   └─ README.md                   Эта документация

📥 Установка

Требования

Пошагово

# 1. Клонируем
git clone <repo_url>
cd school-startup

# 2. Автоматическая инициализация (рекомендуется)
python manage.py

# Меню автоматически установит всё нужное

🚀 Запуск

Способ 1️⃣ - Через менеджер (рекомендуется)

python manage.py

Выберите:

  1. Режим сети: 1 (localhost) или 2 (локальная сеть)
  2. Опцию: 3 (Backend + Frontend одновременно)

Способ 2️⃣ - Вручную (в разных терминалах)

Терминал 1 - Backend:

cd python_backend
source venv/bin/activate
python main.py
# API: http://localhost:8000
# Docs: http://localhost:8000/docs

Терминал 2 - Frontend:

cd client
npm run dev:client
# Web: http://localhost:5173

📡 API Endpoints

🔐 Аутентификация

POST   /api/auth/register        Регистрация
POST   /api/auth/login           Вход (получить JWT токен)
GET    /api/auth/me              Информация текущего пользователя
POST   /api/auth/refresh         Обновить токен

📚 Модули (Курсы)

GET    /api/modules              Все курсы
GET    /api/my-modules           Мои курсы
POST   /api/my-modules/assign    Назначить курс себе

📖 Уроки

GET    /api/lessons/{id}         Получить урок
POST   /api/lessons/{id}/complete  Отметить урок как завершенный

📊 Прогресс

GET    /api/progress             Мой прогресс
GET    /api/progress/modules     Прогресс по курсам

⚙️ Админ (требуется роль admin)

GET    /api/admin/modules        Все модули (управление)
GET    /api/admin/users          Все пользователи
GET    /api/admin/lessons        Все уроки
GET    /api/admin/projects       Все проекты студентов
POST   /api/admin/seed-data      Загрузить демо-данные

Полная документация API: http://localhost:8000/docs (Swagger UI)


🔐 Безопасность

JWT Аутентификация

  • Пароли хешируются Bcrypt (необратимо)
  • Токены подписаны JWT с срок действия 24 часа
  • Secret key хранится в python_backend/data/secret.key

Рольевая система

  • admin - полный доступ
  • user - просмотр контента, выполнение заданий

🗄️ База данных (SQLite)

8 таблиц содержат:

Таблица Содержит
users Профили пользователей (email, пароль, роль)
modules Курсы (название, описание)
steps Шаги внутри курсов
lessons Уроки внутри шагов (текст, видео, изображения)
progress Прогресс студентов (какие уроки пройдены)
user_modules Связь студентов с назначенными курсами
projects Проекты/реализации студентов
ideas Идеи студентов для проектов

📞 Поддержка и контакты


📜 Лицензия

MIT License - используйте свободно! © 2024 onevu


⭐ Нравится? Дайте звезду!

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

About

школьный стартап

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages