diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..504fe5a
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,16 @@
+*.md
+.cache
+.vscode
+node_modules/
+docker-compose.yml
+**/Dockerfile
+.git*
+#source
+#.npmrc
+.eslintrc.json
+#./package*.json
+yarn.lock
+config/
+Jenkinsfile*
+ecosystem.config.js
+.env*
\ No newline at end of file
diff --git a/.readthedocs.yaml b/.readthedocs.yaml
deleted file mode 100644
index 43068e3..0000000
--- a/.readthedocs.yaml
+++ /dev/null
@@ -1,23 +0,0 @@
-# .readthedocs.yaml
-# Read the Docs configuration file
-# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
-
-# Required
-version: 2
-build:
- os: "ubuntu-22.04"
- tools:
- python: "3.8"
-
-python:
- install:
- - requirements: mkdocs/requirements.txt
-
-mkdocs:
- configuration: mkdocs.yml
-
-# Optionally set the version of Python and requirements required to build your docs
-#python:
-# version: "3.8"
-# install:
-# - requirements: mkdocs/requirements.txt
\ No newline at end of file
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..434f694
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,65 @@
+node {
+ cleanWs()
+ checkout scm
+
+ docker_tag = 'latest'
+ projectname ='doc'
+
+ packagejson = readJSON file: 'package.json'
+ docker_tag = packagejson['version']
+ projectname = packagejson['name']
+
+ image_name = 'dhub.lex.lan:5001/doc/' + projectname;
+ image_doc = image_name + ':' + docker_tag;
+ image_doc_latest = image_name + ':latest';
+}
+pipeline {
+ agent {
+ label 'jenkins-node-01'
+ }
+ options {
+ timestamps()
+ buildDiscarder logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '', numToKeepStr: '5')
+ ansiColor('xterm')
+ }
+
+ stages {
+ stage('Check') {
+ steps {
+ echo 'Checking..'
+
+ sh label: '', script: 'docker --version'
+
+ //sh "printenv | sort"
+ }
+ }
+ stage('Docker build') {
+ steps {
+ echo 'Docker build....'
+
+ sh label: '', script: 'docker build -f ./docker/Dockerfile --build-arg docker_registry=dhub.lex.lan:5000 -t ' + image_doc + ' .'
+ }
+ }
+ stage('Docker tag latest') {
+ steps {
+ sh label: 'tag image_doc latest', script: 'docker tag ' + image_doc + ' ' + image_doc_latest
+ }
+ }
+ stage('docker push'){
+ steps {
+ script {
+ docker.withRegistry('http://dhub.lex.lan:5001/', '6173afa3-27b0-4357-8b97-9d1ee071784c') {
+ docker.image(image_doc).push()
+ docker.image(image_doc_latest).push()
+ }
+ }
+ }
+ }
+ // stage('docker cleanup'){
+ // steps {
+ // sh label: '', script: 'docker rmi ' + image_doc
+ // sh label: '', script: 'docker rmi ' + image_doc_latest
+ // }
+ // }
+ }
+}
\ No newline at end of file
diff --git a/docker/Dockerfile b/docker/Dockerfile
new file mode 100644
index 0000000..488a084
--- /dev/null
+++ b/docker/Dockerfile
@@ -0,0 +1,40 @@
+FROM alpine:3.20 AS builder
+
+ENV PYTHONUNBUFFERED=1
+
+RUN apk add --no-cache \
+ ca-certificates \
+ bash \
+ git \
+ openssh-client \
+ python3 \
+ python3-dev \
+ py3-pip \
+ build-base \
+ weasyprint
+
+RUN python -m venv /src/env
+ENV PATH="/src/env/bin:$PATH"
+
+WORKDIR /src
+
+COPY requirements.txt /src/
+RUN pip install --upgrade pip && \
+ pip install -r /src/requirements.txt && \
+ rm -rf /tmp/* /var/cache/apk/*
+
+FROM builder as makestatic
+
+COPY docs /src/docs/
+COPY zensical.toml /src/
+
+RUN cp -r /src/mkdocs.yml /src/ 2>/dev/null || true
+RUN cp -r /src/custom_theme /src/overrides 2>/dev/null || true
+RUN cd /src && zensical build --config-file zensical.toml
+
+
+FROM nginx:alpine
+
+COPY docker/default.conf /etc/nginx/conf.d/default.conf
+COPY --from=makestatic /src/site /sites/app.lexema.ru/docs
+EXPOSE 80
\ No newline at end of file
diff --git a/docker/default.conf b/docker/default.conf
new file mode 100644
index 0000000..2395804
--- /dev/null
+++ b/docker/default.conf
@@ -0,0 +1,23 @@
+
+server {
+ listen 80;
+
+ # location / {
+ root /sites/app.lexema.ru/docs;
+ # }
+ #expires $expires;
+
+ client_max_body_size 500M;
+
+ gzip on;
+ gzip_comp_level 4;
+ gzip_types text/html text/plain text/css application/javascript;
+
+ proxy_redirect off;
+ proxy_http_version 1.1;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-NginX-Proxy true;
+
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..345aff6
--- /dev/null
+++ b/package.json
@@ -0,0 +1,5 @@
+{
+ "name": "ecm-user-manuals",
+ "version": "0.0.1",
+ "description": "ecm-user-manuals doc"
+}
\ No newline at end of file
diff --git a/readme.md b/readme.md
index 3ee03cc..c3b99b8 100644
--- a/readme.md
+++ b/readme.md
@@ -1,26 +1,21 @@
-Для разработки и проверки документации можно использовать команды
-* mkdocs serve (с созданием pdf файлов)
-* mkdocs serve -f dev.yml (без создания pdf файлов)
-* mkdocs build -f admin-manuals.yml (с созданием pdf файла с инструкциями для администратора)
-Перед запуском надо установить mkdocs и его расширения. Сделать это можно при помощи команды, запущенной в папке mkdocs
-```
-pip install -r requirements.txt
-```
+# Разработка документации (Zensical)
-Чтобы включить увеличение изображения, необходимо добавить . Если не работает (а это происходит при работе плагина img2fig), то использовать html-вариант. Автоматический конвертер первого варианта во второй (zoom.py) есть в bitedo-doc и документации ERP.
-```
-а) 
-б)
-```
+## Локальная разработка с live-превью
-В случае ошибки **no library called "cairo" was found** необходимо скачать библиотеки:
+**Zensical** имеет встроенный dev-сервер с **live-reload** — это полноценная и более быстрая замена старой команде `mkdocs serve`.
-https://github.com/tschoonj/GTK-for-Windows-Runtime-Environment-Installer
+### Как запустить
-https://github.com/tschoonj/GTK-for-Windows-Runtime-Environment-Installer/releases
+1. Установите Zensical:
-Если при запуске команды **mkdocs serve -f dev.yml** появляется ошибка что данная команда не определена, то в переменнах средах укажите путь: **C:\Users\User\AppData\Roaming\Python\Python310\Scripts**
+```bash
+pip install zensical
+Перейдите в корень проекта и запустите dev-сервер:
-333
\ No newline at end of file
+zensical serve
+
+Или явно указав конфигурационный файл:
+
+zensical serve --config-file zensical.toml
\ No newline at end of file
diff --git a/readme_old.md b/readme_old.md
new file mode 100644
index 0000000..3ee03cc
--- /dev/null
+++ b/readme_old.md
@@ -0,0 +1,26 @@
+Для разработки и проверки документации можно использовать команды
+* mkdocs serve (с созданием pdf файлов)
+* mkdocs serve -f dev.yml (без создания pdf файлов)
+* mkdocs build -f admin-manuals.yml (с созданием pdf файла с инструкциями для администратора)
+
+Перед запуском надо установить mkdocs и его расширения. Сделать это можно при помощи команды, запущенной в папке mkdocs
+```
+pip install -r requirements.txt
+```
+
+Чтобы включить увеличение изображения, необходимо добавить . Если не работает (а это происходит при работе плагина img2fig), то использовать html-вариант. Автоматический конвертер первого варианта во второй (zoom.py) есть в bitedo-doc и документации ERP.
+```
+а) 
+б)
+```
+
+В случае ошибки **no library called "cairo" was found** необходимо скачать библиотеки:
+
+https://github.com/tschoonj/GTK-for-Windows-Runtime-Environment-Installer
+
+https://github.com/tschoonj/GTK-for-Windows-Runtime-Environment-Installer/releases
+
+Если при запуске команды **mkdocs serve -f dev.yml** появляется ошибка что данная команда не определена, то в переменнах средах укажите путь: **C:\Users\User\AppData\Roaming\Python\Python310\Scripts**
+
+
+333
\ No newline at end of file
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..5274d73
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,9 @@
+zensical
+mkdocs-glightbox==0.4.0
+weasyprint==52.5
+mkdocs-with-pdf
+pymdown-extensions
+mkdocs-literate-nav
+mkdocs-section-index
+mkdocs-include-markdown-plugin
+mkdocs-video
\ No newline at end of file
diff --git a/zensical.toml b/zensical.toml
new file mode 100644
index 0000000..a34df0d
--- /dev/null
+++ b/zensical.toml
@@ -0,0 +1,56 @@
+[project]
+site_name = "Руководство администратора Lexema-ECM"
+site_description = "Официальная документация по администрированию системы Lexema-ECM"
+site_author = "ООО \"Лексема\""
+
+docs_dir = "docs"
+site_dir = "site"
+
+[project.theme]
+name = "material"
+variant = "classic"
+
+palette.primary = "green"
+palette.accent = "orange"
+
+features = [
+ "navigation.instant",
+ "navigation.top",
+ "navigation.tracking",
+ "toc.follow",
+ "toc.integrate",
+ "navigation.tabs.sticky",
+ "search.suggest",
+ "header.autohide",
+ "navigation.path",
+]
+
+[project.markdown_extensions]
+toc = { separator = "_", permalink = "#" }
+attr_list = {}
+admonition = {}
+sane_lists = {}
+def_list = {}
+
+[project.markdown_extensions.pymdownx.highlight]
+[project.markdown_extensions.pymdownx.superfences]
+[project.markdown_extensions.pymdownx.details]
+[project.markdown_extensions.pymdownx.tabbed]
+alternate_style = true
+
+[project.markdown_extensions.pymdownx.tasklist]
+custom_checkbox = true
+
+[project.plugins]
+glightbox = { zoomable = true }
+search = { lang = ["ru", "en"] }
+"section-index" = {}
+"include-markdown" = {}
+"literate-nav" = { nav_file = "SUMMARY.md" }
+"mkdocs-video" = {}
+
+
+extra_css = ["css/extra.css"]
+extra_javascript = ["javascripts/extra.js"]
+
+copyright = "© ООО \"Лексема\""
\ No newline at end of file