Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Онлайн Платформа Курсов

Описание

Веб-приложение для онлайн-обучения, разработанное с использованием FastAPI (бэкенд) и Vanilla JavaScript SPA (фронтенд). Платформа позволяет создавать и проходить курсы, выполнять задания и тесты.

Статус проекта: В разработке (не завершён)


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

Бэкенд

  • FastAPI — веб-фреймворк
  • SQLAlchemy (async) — ORM
  • asyncpg — асинхронный драйвер PostgreSQL
  • python-jose — работа с JWT токенами
  • passlib — хеширование паролей

Фронтенд

  • Vanilla JavaScript — клиентская логика
  • HTML/CSS — разметка и стили

База данных

  • PostgreSQL 15 — основная БД

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

online_course/
├── app/                      # Основная директория приложения
│   ├── api/v1/              # API эндпоинты
│   │   ├── auth.py         # Аутентификация
│   │   ├── user.py         # Управление пользователем
│   │   ├── admin.py        # Админ-функции
│   │   ├── course.py       # Управление курсами
│   │   └── task.py         # Управление заданиями
│   ├── core/               # Ядро приложения
│   │   ├── exceptions.py   # Кастомные исключения
│   │   ├── jwt_utils.py    # Утилиты для JWT
│   │   └── token.py        # Работа с токенами
│   ├── database/           # Конфигурация БД
│   │   └── db.py           # Подключение и создание таблиц
│   ├── dependencies/       # Зависимости FastAPI
│   ├── models/             # Модели SQLAlchemy
│   ├── repositories/       # Слой доступа к данным
│   ├── schemas/            # Pydantic схемы
│   ├── services/           # Бизнес-логика
│   ├── utils/              # Утилиты
│   ├── config.py           # Конфигурация
│   └── main.py             # Точка входа
├── frontend/               # Фронтенд приложения
│   ├── index.html          # Главная HTML страница
│   ├── css/
│   │   └── styles.css      # Стили
│   ├── js/
│   │   ├── api.js          # API клиент
│   │   ├── app.js          # Главное приложение
│   │   ├── auth.js         # Управление авторизацией
│   │   ├── components.js   # UI компоненты
│   │   └── router.js       # Маршрутизация
│   └── TODO.md             # TODO фронтенда
├── requirements.txt        # Зависимости Python
├── run.py                  # Запуск приложения
├── TODO.md                 # Общие задачи
└── docker-compose.yml      # Docker Compose конфигурация

Функциональность

Роли пользователей

Роль Возможности
student Просмотр курсов, запись на курсы, выполнение заданий
teacher Создание курсов и заданий
admin Управление пользователями, изменение ролей

API Эндпоинты

Аутентификация (/api/v1/auth)

  • POST /register — Регистрация пользователя
  • POST /login — Вход в систему
  • POST /logout — Выход из системы
  • POST /refresh — Обновление токенов

Пользователь (/api/v1/user)

  • GET /profile — Получение профиля
  • PATCH /profile — Изменение профиля

Админ (/api/v1/admin)

  • GET /users — Список пользователей (с фильтрацией)
  • GET /users/{id} — Профиль пользователя
  • PATCH /users/{id} — Изменение роли пользователя

Курсы (/api/v1/course)

  • POST /courses/create — Создание курса
  • GET /courses — Список курсов (пагинация, фильтрация)
  • GET /courses/{id} — Детали курса
  • PATCH /courses/{id} — Редактирование курса
  • POST /courses/{id}/enroll — Запись на курс
  • DELETE /courses/{id} — Удаление курса

Задания (/api/v1/task)

  • POST /{course_id}/tasks/create — Создание задания
  • GET /{course_id}/tasks — Список заданий курса
  • GET /{course_id}/tasks/{id} — Детали задания
  • DELETE /{course_id}/tasks/{id} — Удаление задания

Запуск проекта

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

  • Python 3.10+
  • PostgreSQL 15
  • Docker (опционально)

Установка и запуск

  1. Клонировать репозиторий:
git clone <repository_url>
cd online_course
  1. Установить зависимости:
pip install -r requirements.txt
  1. Настроить базу данных (изменить DATABASE_URL в app/config.py):
postgresql+asyncpg://user:password@localhost:5432/online_course
  1. Запустить PostgreSQL через Docker:
docker-compose -f app/docker-compose.yml up -d
  1. Запустить приложение:
python run.py
  1. Открыть в браузере:
http://localhost:8000/frontend/index.html

Текущий статус разработки

Проект находится в процессе разработки. Реализованные функции:

  • ✅ Аутентификация (JWT токены)
  • ✅ Регистрация и вход пользователей
  • ✅ Управление курсами (CRUD)
  • ✅ Запись на курсы
  • ✅ Управление заданиями
  • ✅ Профиль пользователя
  • ✅ Админ-панель (базовая)
  • ✅ Фронтенд SPA

Предстоящие задачи

  • Написание тестов (включая Mock-тесты)
  • Миграции базы данных
  • Возможное использование Redis для кэширования
  • Расширение функциональности заданий и тестов

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

Основные настройки находятся в файле app/config.py:

DATABASE_URL = "postgresql+asyncpg://user:password@localhost:5432/online_course"
SECRET = "super-secret"

Лицензия

MIT License

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages