⚛️

Описание

QWebUI — веб-лаборатория квантовых вычислений с интерактивными блокнотами. Проект разработан в рамках курсовой работы второго курса и предоставляет среду, похожую на Jupyter, для разработки и выполнения квантовых алгоритмов с использованием Qiskit.

Пользователи могут создавать несколько блокнотов, добавлять ячейки разных типов (код, Markdown, raw, заголовок), запускать квантовые схемы и визуализировать результаты в современном веб-интерфейсе.

📦 Репозиторий является публичным архивом и распространяется под лицензией MIT.

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

📓

Интерактивные блокноты

Редактирование ячеек (код, Markdown, raw, заголовки) с сохранением прогресса

🔬

Квантовые вычисления

Выполнение кода на Qiskit Aer симуляторе с автоматической визуализацией схем и гистограмм

🔐

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

Регистрация, вход, гостевой режим с JWT токенами и ролью администратора

🌓

Тёмная/светлая тема

Автоматическое определение темы системы и ручное переключение

🌐

Интернационализация

Поддержка английского и русского языков с сохранением выбора

📊

Административная панель

Управление пользователями, статистика выполнения, мониторинг активности

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

🐍
Backend Flask, Flask-SQLAlchemy, Flask-CORS
⚛️
Quantum Qiskit, Qiskit-Aer, Matplotlib, NumPy
⚛️
Frontend React 18, React Router 6, Axios, Vite
🔐
Authentication PyJWT, bcrypt (password hashing)
💾
Database SQLite (configurable)
📝
Patterns Singleton (Logger), Factory (CircuitFactory)

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

1

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

git clone https://github.com/VLPLAY-Games/QWebUI
cd QWebUI
2

Настройка бэкенда

cd backend
python -m venv venv
source venv/bin/activate # или venv\Scripts\activate (Windows)
pip install -r requirements.txt
python app.py

Бэкенд запустится на http://localhost:5000. Будет создана БД с пользователем admin / admin123.

3

Настройка фронтенда

cd frontend
npm install
npm run dev

Фронтенд запустится на http://localhost:5173.

Пример квантового кода

from qiskit import QuantumCircuit

circuit = QuantumCircuit(2, 2)

circuit.h(0)
circuit.cx(0, 1)

circuit.measure([0, 1], [0, 1])

После выполнения ячейки отображаются: результаты измерений, схема цепи и гистограмма.

Лицензия

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