Визуальный редактор, позволяющий буквально перетаскивать и «мять» элементы страницы как пластилин. ✦ свободное позиционирование (absolute + snap-grid) ✦ многостраничные проекты + внутренние ссылки ✦ экспорт в ZIP (HTML / CSS / assets) ✦ русский интерфейс + мини-панель форматирования над выделенным элементом ✦ минимальный бэкенд — FastAPI + SQLite, весь UI в одном HTML / JS
ExPlast/
└── sitebuilder/
├── frontend/
│ ├── index.html # интерфейс редактора
│ ├── builder.js # drag & drop, страницы, предпросмотр
│ └── style.css
├── backend/
│ ├── app/ # FastAPI + SQLite
│ └── tests/ # pytest — 100 % проходят
└── requirements.txt
Требуется Python 3.11+. Node / npm не нужны.
git clone https://github.com/[nick]/Site-Constructor-Beta.git
cd Site-Constructor-Beta
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r ExPlast/sitebuilder/backend/requirements.txt
python -m uvicorn sitebuilder.backend.app.main:app --reload
# 👉 http://127.0.0.1:8000 — редактор
# 👉 http://127.0.0.1:8000/docs — Swagger APIПо умолчанию SQLite-база размещается в файле builder.db. При желании можно
переопределить путь к базе через переменную окружения DATABASE_URL,
например:
export DATABASE_URL=postgresql://user:pass@localhost/dbname| команда | назначение |
|---|---|
PYTHONPATH=. python -m pytest -q |
запускает unit-тесты (7 шт.) |
curl -O http://127.0.0.1:8000/projects/1/export |
скачивает site.zip |
sqlite3 builder.db '.tables' |
просмотреть базу |
| Фича | Где в коде |
|---|---|
| Drag & Drop + snap-grid | sitebuilder/frontend/builder.js |
| Позиции в процентах + привязка к краям | sitebuilder/frontend/builder.js |
| Мини-toolbar (bold/italic/цвет) | sitebuilder/frontend/builder.js |
| Мультистраничные проекты | sitebuilder/frontend/builder.js |
| Предпросмотр и ZIP-экспорт | sitebuilder/frontend/builder.js, backend/app/exporter.py |
| 100 % тест-покрытие CRUD/экспорт | sitebuilder/backend/tests/ |
- Текст и Картинка — базовые элементы.
- Заголовок — блок
<h1>. - Кнопка — ссылка-кнопка.
- Список — набор пунктов.
- Форма — простая обратная связь.
Обратите внимание: имена страниц и файлов ассетов могут содержать только латинские буквы, цифры, подчёркивания, дефисы и точку. Недопустимые символы при экспорте заменяются на подчёркивания.
| метод | путь | действие |
|---|---|---|
POST |
/projects/ |
создать проект |
GET |
/projects/{pid} |
получить проект |
PUT |
/projects/{pid} |
обновить проект |
GET |
/projects/{pid}/export |
ZIP-экспорт |
GET |
/projects/{pid}/pages |
список страниц |
POST |
/projects/{pid}/pages |
создать страницу |
PUT |
/projects/{pid}/pages/{page_id} |
обновить страницу |
DELETE |
idem | удалить страницу |
Полная OpenAPI-спека доступна по /docs.
MIT © 2025 jestelf