No description
  • JavaScript 97.3%
  • HTML 1.3%
  • Dockerfile 0.7%
  • Makefile 0.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-06 16:54:08 +03:00
editor feat: add vim motions and dark theme for editor 2026-08-04 14:41:16 +03:00
.gitignore Initial commit: standalone Swagger UI + OpenAPI spec service 2026-08-03 16:40:22 +03:00
docker-compose.dev.yml feat: add self-hosted dev OpenAPI editor with save-to-disk 2026-08-04 13:17:31 +03:00
Dockerfile fix: rename docker image title 2026-08-03 18:30:16 +03:00
index.html feat: add vim motions and dark theme for editor 2026-08-04 14:41:16 +03:00
Makefile feat: add self-hosted dev OpenAPI editor with save-to-disk 2026-08-04 13:17:31 +03:00
nginx.conf fix: add UTF-8 charset for Cyrillic in openAPI.yaml and index.html 2026-08-03 18:03:37 +03:00
openAPI.yaml feat(spec): declare bearer security on protected ops; make sermon stream-url public 2026-08-06 16:54:08 +03:00
README.md feat: add self-hosted dev OpenAPI editor with save-to-disk 2026-08-04 13:17:31 +03:00

slovo-propovedi-docs

Standalone Swagger UI + OpenAPI spec service for the Admin API — Слово.Проповеди.

The service is a fully static nginx container: it serves the Swagger UI documentation UI and the openAPI.yaml specification file. It is independent of the admin backend — no Postgres, MinIO, or backend containers are required to run it.

Makefile shortcuts

Команды из этого README обёрнуты в Makefile — см. make help для полного списка целей (dev-редактор, прод-сборка, запуск, остановка).

What it serves

Endpoint Description
/ Swagger UI (interactive API documentation)
/openAPI.yaml The OpenAPI 3.0.3 specification (raw YAML)

Build the Docker image

docker build -t slovo-propovedi-docs .

The build downloads swagger-ui-dist (default 5.32.12, overridable via the SWAGGER_UI_VERSION build arg) and bundles it with the custom index.html, openAPI.yaml, and nginx.conf into a minimal nginx:alpine image. There is no Node.js runtime in the final image.

# With a specific Swagger UI version
docker build --build-arg SWAGGER_UI_VERSION=5.32.12 -t slovo-propovedi-docs .

Run it locally

docker run --rm -p 8080:8080 slovo-propovedi-docs

Then open http://localhost:8080/ to browse the API documentation.

Quick sanity check:

curl -s http://localhost:8080/openAPI.yaml | head

How to update the spec

  1. Edit openAPI.yaml (OpenAPI 3.0.3, servers: http://localhost:3000 and https://api.slovo-propovedi.ru).

  2. Rebuild the image:

    docker build -t slovo-propovedi-docs .
    
  3. Restart the container with the new image.

Локальный редактор OpenAPI (только для разработки)

Для удобного редактирования openAPI.yaml (вместо правки файла вручную) есть отдельный dev-контейнер: официальный Swagger Editor v5 + кнопки Load from disk и Save to disk. Он не входит в прод-образ (см. Dockerfile) и существует только локально.

Самый простой способ запустить редактор — make:

make dev-up

Команда собирает и запускает dev-контейнер, ждёт, пока редактор станет готовым, и автоматически открывает его в браузере по адресу http://localhost:8081/ (в headless-окружениях без браузера она просто печатает сообщение о готовности). Редактор автоматически загрузит текущий openAPI.yaml. Кнопка Save to disk записывает содержимое редактора обратно в openAPI.yaml на диске (файл примонтирован как том). После сохранения проверьте diff и закоммитьте:

git diff openAPI.yaml
git add openAPI.yaml && git commit

Если браузер не открылся сам (или вы его закрыли) — откройте вручную:

make dev-open

Остановить dev-редактор:

make dev-down

Если предпочитаете сырые команды: под капотом make dev-up — это просто docker compose -f docker-compose.dev.yml up --build.

Продакшен-контейнер (Swagger UI на :8080) этим не затрагивается.

Изменения openAPI.yaml вне редактора (git pull, переключение веток и т.п.) идут через атомарную замену файла: работающий контейнер держит старый inode и отдаёт старую версию до перезапуска. Перезапустите dev-контейнер: make dev-restart (или make dev-down && make dev-up). Кнопка Save to disk не затронута — она пишет в тот же примонтированный файл.

Repository layout

Dockerfile     # Multi-stage build: swagger-ui-dist + nginx
index.html     # Custom Swagger UI entry page
nginx.conf     # Server config: port 8080, YAML content type, CORS, security headers
openAPI.yaml   # The OpenAPI specification