Admin panel. Панель переехала в мобильное приложение slovo-propovedi-mobile https://admin-app.slovo-propovedi.ru/
This repository has been archived on 2026-10-02. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
  • TypeScript 71.1%
  • Svelte 21%
  • CSS 4.2%
  • JavaScript 2.1%
  • Shell 1.2%
  • Other 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
egoreast d2ae6ff71e
All checks were successful
CI / check-and-build (push) Successful in 11s
Release / deploy (push) Successful in 19s
chore: bump version to 0.11.4
Signed-off-by: egoreast <egor.east@yandex.ru>
2026-09-29 14:58:18 +03:00
.forgejo/workflows feat: source docs spec URL and backend API hostname from env vars 2026-09-15 22:14:34 +03:00
.husky
.opencode chore: switch opencode subagents to deepseek-v4.1-flash model 2026-09-29 14:27:00 +03:00
assets
docs feat: mark already selected cover in image library picker 2026-09-29 14:54:57 +03:00
public/assets
scripts feat: source docs spec URL and backend API hostname from env vars 2026-09-15 22:14:34 +03:00
src feat: mark already selected cover in image library picker 2026-09-29 14:54:57 +03:00
.dockerignore
.env.example docs: add .env.example 2026-09-15 22:14:46 +03:00
.gitignore docs: add .env.example 2026-09-15 22:14:46 +03:00
AGENTS.md feat: add covers catalog page with orphan file cleanup 2026-09-24 16:42:19 +03:00
AI_PROFILES.md feat(opencode): profile plugin with adaptive model failover 2026-09-21 15:52:15 +03:00
CHANGELOG.md chore: bump version to 0.11.4 2026-09-29 14:58:18 +03:00
Dockerfile fix(docker): stop nginx -t from baking a root-owned /tmp/nginx.pid 2026-09-16 00:36:46 +03:00
index.html
nginx.conf feat: source docs spec URL and backend API hostname from env vars 2026-09-15 22:14:34 +03:00
nginx.main.conf
openapi-ts.config.ts fix: work around openapi-ts's unreliable spec fetch in gen:api 2026-09-16 00:08:04 +03:00
package-lock.json Merge branch 'main' into renovate/svelte 2026-09-23 12:21:13 +00:00
package.json chore: bump version to 0.11.4 2026-09-29 14:58:18 +03:00
README.md
renovate.json ci(renovate): tidy the hey-api rule 2026-09-08 15:04:25 +03:00
svelte.config.js
tsconfig.json
vite.config.ts

Slovo Propovedi — admin SPA (frontend)

Standalone frontend for the Слово.Проповеди admin panel: a Svelte 5 + Vite single-page application (dark theme, Russian UI). It was split from the former slovo-propovedi-admin monorepo; the old frontend/web-app/ path is now this repository's root.

The app talks to the API backend over generated HTTP clients — there is no OpenAPI file in this repo (see Regenerating the API client).

Prerequisites

  • Node.js 22+ (npm 10+)

Development

npm install
npm run dev

npm run dev starts the Vite dev server (default http://localhost:5173).

Build

npm run build

Produces the production bundle in dist/. The app is served as a static SPA through nginx.conf (a Docker image is built by Forgejo Actions on release — see Deployment).

Type-check

npm run check

Runs svelte-check — this is the project's type-check gate. The git pre-commit hook (.husky/pre-commit) runs it automatically on every commit and blocks commits that fail.

Regenerating the API client

The API contract is OpenAPI-first and lives in the external slovo-propovedi-docs repository, published at https://docs.slovo-propovedi.ru/openAPI.yaml.

npm run gen:api

Regenerates src/lib/api/generated/ via openapi-ts (SDK + @tanstack/svelte-query hooks + zod validators) and applies the zod binary/strict patches (scripts/patch-zod-binary.mjs, scripts/patch-zod-strict.mjs). Generated code is a contract — never edit it by hand; only regenerate.

Releasing

npm run bump-version <version|patch|minor|major>

Promotes ## [Unreleased] in CHANGELOG.md to <version> with today's date, opens a fresh empty [Unreleased] section, updates package.json, commits (chore: bump version to <version>), and creates + pushes an annotated tag v<version>.

Deployment

Deployment is fully automated via Forgejo Actions, driven by git tags.

How it works

  1. Push a commit to main (the pre-commit hook runs npm run check).

  2. Tag a release (v*) — either with npm run bump-version <ver> or manually:

    git tag v0.1.0
    git push origin v0.1.0
    
  3. The tag-triggered release workflow builds the Docker image and deploys to the VPS via scripts/vps-deploy.sh (SSH, Docker build, Traefik labels, systemd service).

Boundary. vps-deploy.sh owns only the slovo-frontend container and its own slovo-frontend Docker network. Shared infrastructure — Docker, the slovo user/group, the slovo-constrained buildx builder, Traefik (slovo-traefik.service) and the traefik network — is owned by the external slovo-propovedi-playbook and must be provisioned first (just setup-all). The script only verifies it and fails fast if anything is missing.

Required Forgejo secrets

Settings → Actions → Secrets.

Secret Description
VPS_SSH_PRIVATE_KEY SSH private key (ed25519) for root access to the VPS
VPS_HOST VPS hostname or IP
VPS_SSH_USER SSH user on the VPS (root)

Required Forgejo variables

Settings → Actions → Variables.

Variable Description
FRONTEND_HOSTNAME Public hostname for the admin SPA (e.g. admin.example.com)

Rollback

The VPS keeps the previously deployed image under the mirror backup convention (previous tag preserved alongside latest). To roll back, redeploy the previous tag — point Forgejo Actions at the older v* tag (or locally build/run that image), and the deploy script restores the previous version.