Docs: rewrite README with clear Docker and Docker Compose instructions; refactor app into package (auth, admin, pages, db); keep single entrypoint app.py
This commit is contained in:
118
README.md
118
README.md
@@ -1,51 +1,101 @@
|
||||
# Flask UUID Pages Admin (SQLite)
|
||||
# ForMe — мини CMS на Flask (SQLite)
|
||||
|
||||
Минималистичное Flask‑приложение с SQLite:
|
||||
- Админка доступна только пользователю `ruslan` с паролем `utOgbZ09ruslan` (по умолчанию).
|
||||
- В админке можно вставлять HTML и публиковать страницы.
|
||||
- Для каждой страницы генерируется UUID‑ссылка `/p/<uuid>`.
|
||||
- Неавторизованный пользователь не видит админку и главную страницу (404). Страницы по UUID доступны всем, у кого есть ссылка.
|
||||
Небольшое приложение для публикации HTML‑страниц по UUID.
|
||||
|
||||
## Запуск локально
|
||||
Возможности
|
||||
- Авторизация администратора (логин/пароль из переменных окружения).
|
||||
- Публикация HTML со свободной разметкой; генерация ссылки `/p/<uuid>`.
|
||||
- Редактирование и удаление опубликованных страниц в админке.
|
||||
- На опубликованных страницах у авторизованных отображается плавающая кнопка “Админка”.
|
||||
- Водяной знак “Made by Ruslan” в левом верхнем углу опубликованных страниц.
|
||||
|
||||
1. Создайте и активируйте виртуальное окружение (опционально):
|
||||
Важно: функционал экспорта в PDF/Word удалён — код и зависимости очищены.
|
||||
|
||||
Windows PowerShell:
|
||||
## Локальный запуск
|
||||
|
||||
```powershell
|
||||
python -m venv .venv
|
||||
.venv\\Scripts\\Activate.ps1
|
||||
```
|
||||
1) Создать и активировать виртуальное окружение (Windows PowerShell):
|
||||
|
||||
2. Установите зависимости:
|
||||
```powershell
|
||||
python -m venv .venv
|
||||
.venv\Scripts\Activate.ps1
|
||||
```
|
||||
|
||||
```powershell
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
2) Установить зависимости:
|
||||
|
||||
3. (Опционально) Переопределите настройки через переменные окружения:
|
||||
```powershell
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
```powershell
|
||||
$env:SECRET_KEY = "your-strong-secret-key"
|
||||
$env:ADMIN_USERNAME = "ruslan"
|
||||
$env:ADMIN_PASSWORD = "utOgbZ09ruslan"
|
||||
```
|
||||
3) (Опционально) Настроить переменные окружения:
|
||||
|
||||
4. Запустите сервер разработки:
|
||||
```powershell
|
||||
$env:SECRET_KEY = "your-strong-secret"
|
||||
$env:ADMIN_USERNAME = "ruslan"
|
||||
$env:ADMIN_PASSWORD = "utOgbZ09ruslan"
|
||||
# путь для БД по умолчанию: ./app.db
|
||||
```
|
||||
|
||||
```powershell
|
||||
python app.py
|
||||
```
|
||||
4) Запустить приложение:
|
||||
|
||||
```powershell
|
||||
python app.py
|
||||
```
|
||||
|
||||
5) Открыть http://localhost:5000
|
||||
|
||||
## Маршруты
|
||||
|
||||
- `/login` — форма входа в админку.
|
||||
- `/admin` — админ‑панель (только для авторизованных, иначе 404).
|
||||
- `/p/<uuid>` — просмотр опубликованной страницы по UUID.
|
||||
- `/` — редирект в админку для авторизованных, иначе 404.
|
||||
- `/login` — вход
|
||||
- `/admin` — панель публикации и список страниц (только для авторизованных)
|
||||
- `/p/<uuid>` — просмотр опубликованной страницы
|
||||
- `/` — редиректит на `/login` или `/admin`
|
||||
|
||||
## Замечания по безопасности
|
||||
## Запуск в Docker
|
||||
|
||||
- HTML хранится и отдаётся как есть. Предполагается, что контент вводит доверенный админ.
|
||||
- В продакшне обязательно задайте `SECRET_KEY` и используйте HTTPS; настройте защищённые cookies.
|
||||
В проекте есть `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`.
|
||||
- Вынесите БД в том/персистентный диск.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user