# ForMe — мини CMS на Flask (SQLite) Небольшое приложение для публикации HTML‑страниц по UUID. Возможности - Авторизация администратора (логин/пароль из переменных окружения). - Публикация HTML со свободной разметкой; генерация ссылки `/p/`. - Редактирование и удаление опубликованных страниц в админке. - На опубликованных страницах у авторизованных отображается плавающая кнопка “Админка”. - Водяной знак “Made by Ruslan” в левом верхнем углу опубликованных страниц. Важно: функционал экспорта в PDF/Word удалён — код и зависимости очищены. ## Локальный запуск 1) Создать и активировать виртуальное окружение (Windows PowerShell): ```powershell python -m venv .venv .venv\Scripts\Activate.ps1 ``` 2) Установить зависимости: ```powershell pip install -r requirements.txt ``` 3) (Опционально) Настроить переменные окружения: ```powershell $env:SECRET_KEY = "your-strong-secret" $env:ADMIN_USERNAME = "ruslan" $env:ADMIN_PASSWORD = "utOgbZ09ruslan" # путь для БД по умолчанию: ./app.db ``` 4) Запустить приложение: ```powershell python app.py ``` 5) Открыть http://localhost:5000 ## Маршруты - `/login` — вход - `/admin` — панель публикации и список страниц (только для авторизованных) - `/p/` — просмотр опубликованной страницы - `/` — редиректит на `/login` или `/admin` ## Запуск в Docker В проекте есть `Dockerfile` (gunicorn) и `docker-compose.yml` с томом для БД. Вариант A. Docker (без compose) ```bash docker build -t forme . docker run --name forme-web -p 5000:5000 \ -e SECRET_KEY=prod-secret \ -e ADMIN_USERNAME=ruslan \ -e ADMIN_PASSWORD=utOgbZ09ruslan \ -e DATABASE=/data/app.db \ -v forme_appdb:/data \ -d forme ``` Вариант B. Docker Compose ```bash docker compose build docker compose up -d ``` По умолчанию: - Приложение доступно на `http://localhost:5000` - Переменные окружения можно переопределить через `.env` - База хранится в томе `appdb` по пути контейнера `/data/app.db` ## Структура проекта ``` app.py # точка входа app/ __init__.py # create_app + регистрация блюпринтов db.py # инициализация/доступ к SQLite auth.py # логин/логаут и context processor admin.py # админка: создать/редактировать/удалить pages.py # публичные страницы / и /p/ templates/ base.html, login.html, admin.html, edit.html ``` ## Заметки по продакшену - Обязательно задайте `SECRET_KEY` через переменные окружения. - Смените дефолтные `ADMIN_USERNAME/ADMIN_PASSWORD`. - Вынесите БД в том/персистентный диск.