Files
ForME/README.md

3.5 KiB
Raw Permalink Blame History

ForMe — мини CMS на Flask (SQLite)

Небольшое приложение для публикации HTMLстраниц по UUID.

Возможности

  • Авторизация администратора (логин/пароль из переменных окружения).
  • Публикация HTML со свободной разметкой; генерация ссылки /p/<uuid>.
  • Редактирование и удаление опубликованных страниц в админке.
  • На опубликованных страницах у авторизованных отображается плавающая кнопка “Админка”.
  • Водяной знак “Made by Ruslan” в левом верхнем углу опубликованных страниц.

Важно: функционал экспорта в PDF/Word удалён — код и зависимости очищены.

Локальный запуск

  1. Создать и активировать виртуальное окружение (Windows PowerShell):
python -m venv .venv
.venv\Scripts\Activate.ps1
  1. Установить зависимости:
pip install -r requirements.txt
  1. (Опционально) Настроить переменные окружения:
$env:SECRET_KEY = "your-strong-secret"
$env:ADMIN_USERNAME = "ruslan"
$env:ADMIN_PASSWORD = "utOgbZ09ruslan"
# путь для БД по умолчанию: ./app.db
  1. Запустить приложение:
python app.py
  1. Открыть http://localhost:5000

Маршруты

  • /login — вход
  • /admin — панель публикации и список страниц (только для авторизованных)
  • /p/<uuid> — просмотр опубликованной страницы
  • / — редиректит на /login или /admin

Запуск в Docker

В проекте есть Dockerfile (gunicorn) и docker-compose.yml с томом для БД.

Вариант A. Docker (без compose)

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

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/<uuid>
templates/
  base.html, login.html, admin.html, edit.html

Заметки по продакшену

  • Обязательно задайте SECRET_KEY через переменные окружения.
  • Смените дефолтные ADMIN_USERNAME/ADMIN_PASSWORD.
  • Вынесите БД в том/персистентный диск.