Skip to content

jestelf/Site-Constructor-Beta

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

327 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

«Пластилиновый» конструктор сайтов — ExPlast

Визуальный редактор, позволяющий буквально перетаскивать и «мять» элементы страницы как пластилин. ✦ свободное позиционирование (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

⚙️ CLI-скрипты

команда назначение
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>.
  • Кнопка — ссылка-кнопка.
  • Список — набор пунктов.
  • Форма — простая обратная связь.

Обратите внимание: имена страниц и файлов ассетов могут содержать только латинские буквы, цифры, подчёркивания, дефисы и точку. Недопустимые символы при экспорте заменяются на подчёркивания.


REST API (кратко)

метод путь действие
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

About

Опыт в разработке конструктора сайтов, а-ля Тильда и Фигма по-моей хотелке.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors