docs: add comprehensive project README

This commit is contained in:
2026-02-12 22:48:41 +03:00
parent 74717e4961
commit dd95fc311d
+140
View File
@@ -0,0 +1,140 @@
# InfraIT Landing + Admin
Лендинг для IT-аутсорсинга на Flask с формой заявок, админкой настроек и уведомлениями в Telegram.
## Что реализовано
- Публичная страница с SEO-блоками, FAQ и формой обратной связи.
- Сохранение заявок в SQLite (`data/infra.db`, таблица `leads`).
- Админ-панель для редактирования контактов, SEO-параметров и интеграций.
- Опциональная отправка новой заявки в Telegram (bot token + chat id).
- Healthcheck-эндпоинт для мониторинга (`/health`).
- Готовый Docker-стек (`Dockerfile` + `docker-compose.yml`).
## Технологии
- Python 3.12
- Flask 3.1
- Gunicorn 23
- SQLite
- HTML/CSS/JS (Jinja2 шаблоны)
## Структура проекта
```text
infraIT/
app.py
Dockerfile
docker-compose.yml
gunicorn_conf.py
requirements.txt
templates/
static/
data/
```
## Переменные окружения
Используется `.env` (пример в `.env.example`):
```env
SECRET_KEY=replace-with-a-long-random-string
```
`SECRET_KEY` обязателен для продакшена (сессии админки).
## Быстрый старт (Docker)
1. Создайте `.env`:
```powershell
Copy-Item .env.example .env
```
2. Запустите контейнер:
```powershell
docker compose up -d --build
```
3. Проверьте сервис:
- Сайт: `http://localhost:4545`
- Healthcheck: `http://localhost:4545/health`
Остановка:
```powershell
docker compose down
```
## Локальный запуск (без Docker)
```powershell
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
$env:SECRET_KEY = "your-strong-secret"
python app.py
```
Сервис поднимется на `http://127.0.0.1:5000` (режим Flask debug).
## Админка
- URL: `http://localhost:4545/admin/login` (или `http://127.0.0.1:5000/admin/login` при локальном запуске)
- После входа: `/admin/settings`
Что можно менять через админку:
- название компании и контакты
- canonical URL
- Yandex verification token
- ID Яндекс.Метрики
- Telegram Bot Token / Telegram Chat ID
- географию обслуживания
### Важный момент по паролю админки
Сейчас хэш пароля зашит в `app.py` в `ADMIN_PASSWORD_HASH`.
Для смены пароля сгенерируйте новый хэш и замените значение.
Пример генерации:
```powershell
python -c "from werkzeug.security import generate_password_hash; print(generate_password_hash('NEW_PASSWORD'))"
```
## Telegram-уведомления
Чтобы получать заявки в Telegram:
1. В админке заполните `Telegram Bot Token`.
2. В админке заполните `Telegram Chat ID`.
3. Сохраните настройки.
Если один из параметров пустой, отправка в Telegram отключена.
## Данные и хранение
- База: `data/infra.db`
- В Docker папка `data/` проброшена как volume (`./data:/app/data`)
- Лого компании: `static/img/infrait-logo.png`
Рекомендуется регулярно делать бэкап `data/infra.db`.
## Продакшен заметки
- Обязательно задайте сильный `SECRET_KEY`.
- Не публикуйте `app.py` с дефолтным хэшем админского пароля.
- Ограничьте доступ к `/admin/*` на уровне reverse-proxy/VPN/IP allowlist.
- Настройте HTTPS на внешнем прокси (Nginx/Caddy/Traefik).
## Полезные эндпоинты
- `GET /` - лендинг
- `POST /` - отправка заявки
- `GET /admin/login` - вход в админку
- `GET/POST /admin/settings` - настройки
- `GET /admin/logout` - выход
- `GET /health` - проверка состояния