# Анастасия Панкратенкова

> Персональный сайт преподавателя математики с записью на консультацию по подготовке к ОГЭ и ЕГЭ.

![Статус проекта](https://img.shields.io/badge/status-MVP-e77862?style=flat-square)
![Python](https://img.shields.io/badge/Python-3.10%2B-10211d?style=flat-square&logo=python&logoColor=white)
![Flask](https://img.shields.io/badge/Flask-3.x-10211d?style=flat-square&logo=flask&logoColor=white)
![SQLite](https://img.shields.io/badge/SQLite-local%20database-bdd3ba?style=flat-square&logo=sqlite&logoColor=10211d)

## О проекте

Сайт-визитка для Анастасии Викторовны Панкратенковой — преподавателя математики.

На сайте можно:

- познакомиться с преподавателем, образованием и опытом;
- узнать о подготовке по математике;
- понять, как проходят занятия;
- оставить заявку на консультацию;
- выбрать предмет, экзамен и формат занятий.

Заявки сохраняются в локальную базу данных SQLite. Подключение уведомлений в Telegram или по электронной почте можно добавить следующим этапом.

## Технологии

| Технология | Назначение |
| --- | --- |
| Python 3.10+ | Основной язык приложения |
| Flask 3.x | Веб-сервер и маршрутизация |
| Jinja2 | Рендеринг HTML-шаблонов |
| SQLite | Хранение заявок на консультацию |
| HTML5 | Структура страниц |
| CSS3 | Адаптивный визуальный стиль |
| JavaScript | Небольшие интерактивные эффекты |

## Структура проекта

```text
anastasia_viktorovna/
├── app.py                    # Flask-приложение и обработка заявок
├── requirements.txt          # Зависимости проекта
├── .env.example              # Пример переменных окружения
├── templates/
│   ├── index.html            # Главная страница
│   ├── success.html          # Страница успешной отправки
│   ├── admin_login.html      # Вход в админ-панель
│   └── admin.html             # Список заявок
├── static/
│   ├── css/styles.css        # Стили и адаптивная вёрстка
│   ├── js/main.js            # Клиентские эффекты
│   └── images/teacher.jpg    # Фотография преподавателя
└── consultations.db          # Создаётся автоматически при запуске
```

## Запуск в PyCharm

### 1. Открыть проект

Откройте в PyCharm папку проекта:

```text
C:\Users\greyjoy\PycharmProjects\anastasia_viktorovna
```

### 2. Выбрать интерпретатор

В PyCharm выберите интерпретатор виртуального окружения:

```text
.venv\Scripts\python.exe
```

Если виртуальное окружение ещё не создано, выполните в терминале PyCharm:

```powershell
py -3.10 -m venv .venv
.venv\Scripts\Activate.ps1
```

### 3. Установить зависимости

```powershell
python -m pip install -r requirements.txt
```

### 4. Запустить сайт

```powershell
python app.py
```

После запуска откройте в браузере:

<http://127.0.0.1:5000>

Остановить сервер можно сочетанием `Ctrl+C` в терминале.

## Как работает форма

1. Посетитель заполняет имя, контакт, предмет, экзамен и формат занятий.
2. Flask проверяет обязательные поля.
3. Заявка записывается в таблицу `consultation_requests` файла `consultations.db`.
4. Пользователь видит страницу успешной отправки.

При обновлении существующего проекта недостающие поля базы добавляются автоматически. Старые заявки получают статус «Новая» и значение времени «Гибко».

В текущей версии заявки не отправляются автоматически преподавателю. Для рабочего сайта нужно подключить канал уведомлений и указать контактные данные Анастасии Викторовны.

## Переменные окружения

Для запуска в интернете рекомендуется заменить тестовый секретный ключ Flask:

```powershell
$env:SECRET_KEY = "ваш-длинный-случайный-ключ"
python app.py
```

Файл `.env.example` содержит пример необходимой переменной.

## Админ-панель

Панель доступна по адресу:

<http://127.0.0.1:5000/admin>

По умолчанию для локальной разработки используется пароль `admin123`. Перед публикацией сайта обязательно задайте собственный пароль:

```powershell
$env:ADMIN_PASSWORD = "ваш-приватный-пароль"
python app.py
```

После входа в панели отображаются:

- имя ученика или родителя;
- контакт для обратной связи;
- выбранный предмет;
- экзамен — ОГЭ или ЕГЭ;
- формат занятий;
- желаемое время занятий;
- комментарий из формы;
- дата и номер заявки.

Также в панели доступны:

- сводная статистика по всем заявкам;
- поиск по имени, контакту, комментарию и внутренней заметке;
- фильтрация по статусу и предмету;
- четыре статуса: «Новая», «Связались», «Запланирована», «Завершена»;
- внутренние заметки преподавателя по каждой заявке;
- удаление заявки с подтверждением;
- экспорт текущего списка в CSV для Excel или Google Таблиц.

Ссылка на админ-панель не показывается посетителям сайта. Доступ защищён сессионной авторизацией Flask.

## Дальнейшее развитие

- уведомления о новых заявках в Telegram;
- закрытая страница для просмотра заявок;
- реальные контакты и расписание;
- отзывы учеников и результаты подготовки;
- публикация сайта на хостинге с Python.
