102 lines
3.5 KiB
Markdown
102 lines
3.5 KiB
Markdown
# ForMe — мини CMS на Flask (SQLite)
|
||
|
||
Небольшое приложение для публикации HTML‑страниц по UUID.
|
||
|
||
Возможности
|
||
- Авторизация администратора (логин/пароль из переменных окружения).
|
||
- Публикация HTML со свободной разметкой; генерация ссылки `/p/<uuid>`.
|
||
- Редактирование и удаление опубликованных страниц в админке.
|
||
- На опубликованных страницах у авторизованных отображается плавающая кнопка “Админка”.
|
||
- Водяной знак “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/<uuid>` — просмотр опубликованной страницы
|
||
- `/` — редиректит на `/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/<uuid>
|
||
templates/
|
||
base.html, login.html, admin.html, edit.html
|
||
```
|
||
|
||
## Заметки по продакшену
|
||
|
||
- Обязательно задайте `SECRET_KEY` через переменные окружения.
|
||
- Смените дефолтные `ADMIN_USERNAME/ADMIN_PASSWORD`.
|
||
- Вынесите БД в том/персистентный диск.
|
||
|