Metadata-Version: 2.4
Name: sabo
Version: 0.1.0
Summary: Sabo - minimal Python site builder framework
Home-page: https://github.com/emizhaa/sabo
Author: emizhaa
Author-email: emizhaa@gmail.com
License: MIT
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Dynamic: author
Dynamic: author-email
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license
Dynamic: requires-python
Dynamic: summary

Sabo — Static Site Composer

Sabo — это локальный Python-framework для декларативной сборки статических фронтенд-проектов на основе JSON-описания.

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

Проект ориентирован на:

разработчиков, которым нужен лёгкий статический генератор

прототипирование UI-структур

автоматизированную сборку шаблонных проектов

расширяемую архитектуру на Python

Архитектура проекта
Sabo/
├── sabo/                   # основной пакет фреймворка
│   ├── __init__.py
│   ├── core/               # ядро системы
│   │   └── __init__.py
│   ├── models/             # модели данных проекта
│   │   ├── __init__.py
│   │   ├── component.py
│   │   ├── page.py
│   │   └── project.py
│   ├── builder/            # логика сборки сайта
│   │   ├── __init__.py
│   │   └── site_builder.py
│   └── utils/              # вспомогательные утилиты
│       └── __init__.py
│
├── sabo.py                 # CLI-интерфейс (точка входа)
├── pyproject.toml          # конфигурация пакета и entry point
├── primer.json             # пример конфигурации проекта
└── templates/              # директория шаблонов (если используется)
Основные компоненты
1. CLI (sabo.py)

CLI отвечает за:

обработку команд (например, build)

загрузку JSON-конфигурации проекта

инициализацию моделей

вызов билдера

При установке через pip install sabo создаётся системная команда:

sabo

Пример использования:

sabo build primer.json
2. Модели (models/)

Модели представляют внутреннюю структуру проекта:

Project — корневой объект проекта

Page — страница сайта

Component — переиспользуемый UI-элемент

JSON-файл описывает структуру проекта, которая затем преобразуется в Python-модели.

3. Builder (builder/site_builder.py)

SiteBuilder отвечает за:

обход структуры проекта

генерацию HTML

организацию выходной директории

управление процессом сборки

Это основной исполнительный слой фреймворка.

4. Core

Ядро содержит базовые механизмы и абстракции, на которых строится архитектура.

5. Utils

Вспомогательные функции, не относящиеся напрямую к доменной логике.

Принцип работы

Разработчик создаёт JSON-описание проекта.

CLI загружает конфигурацию.

JSON преобразуется в модель Project.

SiteBuilder генерирует структуру сайта.

На выходе получается готовая статическая сборка.

Установка
Через pip (рекомендуется)
pip install sabo

После установки доступна глобальная команда:

sabo
Локальный запуск (без установки)
git clone <repository>
cd Sabo
.\sabo.bat build primer.json

или:

python sabo.py build primer.json
Пример использования
sabo build primer.json

Где primer.json — описание проекта:

{
  "name": "My Project",
  "pages": [
    {
      "name": "index",
      "components": []
    }
  ]
}
Ключевые особенности

Минималистичная архитектура

Декларативное описание проекта

Расширяемая модель компонентов

Чёткое разделение:

моделей

логики сборки

CLI

Простая интеграция в Python-экосистему

Поддержка установки как полноценного CLI-инструмента
