https://github.com/deker104/hleber
Проект студентов Яндекс.Лицея для помощи людям в период пандемии.
https://github.com/deker104/hleber
flask heroku vk-api
Last synced: 3 months ago
JSON representation
Проект студентов Яндекс.Лицея для помощи людям в период пандемии.
- Host: GitHub
- URL: https://github.com/deker104/hleber
- Owner: deker104
- Created: 2020-05-03T18:22:42.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-02-16T01:34:31.000Z (over 3 years ago)
- Last Synced: 2025-10-28T16:30:39.009Z (8 months ago)
- Topics: flask, heroku, vk-api
- Language: Python
- Homepage: https://hleber.site
- Size: 222 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Хлебер-β [](https://travis-ci.com/deker104/hleber)

**Хлебер-β** (_хлебер-бетта_) - это приложение от студентов _Яндекс.Лицея_, созданное помочь людям, которые в период пандемии не могут самостоятельно выбраться на улицу и купить необходимые продукты и лекарства.
Для решения проблемы мы создали систему, связывающую нуждающихся людей с людьми, желающими им помочь.
**Хлебер-β** состоит из двух частей:
- Веб-сайт, на котором пользователь может зарегестрироваться как "клиент", чтобы оставить заказ, или как "волонтёр", чтобы получить удобные инструменты для исполнения этих закозов, например карта ближайших к дому клиента магазинов.
- Бот _ВКонтакте_, оповещающий клиентов и волонтёров об изменениях, связанных с их заказами.
## Запуск копии приложения
### Установка
- Сохраните копию ветки _master_ на компьютер.
- Создайте виртуальное окружение _Python_ и установите зависимости из `requirements.txt`.
- Задайте параметры приложения через переменные среды:
```
DATABASE_URL=<ссылка на БД (по-умолчанию: db.sqlite3)>
GEOCODER_KEY=
GEOSEARCH_KEY=
SECRET_KEY=<секретный ключ Flask-приложения (по-умолчанию: test-secret-key)>
VK_TOKEN=<токен группы-представителя бота ВКонтакте>
VK_GROUP_ID=
VK_APP_ID=
VK_SECRET_KEY=<секретный ключ ВК-приложения сайта>
```
- Вы можете сделать это созданием в корневой директории файла конфигурации `.env`.
- Запустите создание таблиц в БД:
```console
$ flask db upgrade
```
### Запуск
- Запустите _Flask_-приложение.
- Вы можете просто запустить `wsgi.py` как _Python_-скрипт _(рекомендовано для быстрой отладки)_;
- Либо запустить его с помощью `gunicorn` или любого другого _WSGI_-сервера _(рекомендовано для стабильной работы)_:
```console
$ gunicorn -b 0.0.0.0:8000 wsgi:app
```
- Параллельно запустите бота _ВКонтакте_ запуском `bot.py` в качестве _Python_-скрипта.
- _(не обязательно)_ Настройте доступ к Flask-приложению через какой-нибудь proxy-сервер (например _nginx_).
Это сильно улучшит производительность за счёт улучшенной параллелизации и отдельного обслуживания proxy-сервером статичных файлов.
### Обновление
- Загрузите на компьютер обновлённую ветку _master_.
- Обновите структуру таблиц в БД:
```console
$ flask db upgrade
```
## Структура проекта
- `/app/` - модуль веб-сайта.
- `/app/static/` - директория для статичных файлов.
- `/app/templates/` - шаблоны веб-страниц (_Jinja2_).
- `/migrations/` - служебные файлы _alembic_.
- `/.env` - файл конфигурации, параметры из которого загружаются в переменные среды.
- `/.travis.yml` - файл конфигурации для _Travis CI_
- `/Procfile` - файл, задающий процессы для запуска на сервере _Heroku_.
- `/requirements.txt` - файл с зависимостями проекта.
Описание ко всем неупомянутым файлам находится в их собственной документации.
## Используемые технологии
- _Heroku_ - хостинг всего веб-приложения, включая БД.
- _Flask_ - микро-фреймворк, используемый для создания веб-сайта.
- _SQLAlchemy*_ - библиотека ORM для доступа к БД.
- _Alembic*_ - библиотека, позволяющая вносить правки в БД без потери данных.
- _WTForms*_ - библиотека для задания HTML-форм с помощью ООП.
- _Flask-Login_ - дополнение к Flask для удобной авторизации пользователей.
- _API Яндекс.Карт (в частности Static API, Geocoder и Поиск по организациям)_ - API рендера карт на странице и поиска объектов по адресу.
- _Bootstrap_ - CSS-фреймворк, отвечающий за всю красоту на нашем веб-сайте.
- _vk-api (python273)_ - библиотека для создания приложений на основе VK API.
- _pytest_ и _Travis CI_ - инструменты для автоматического тестирования приложения перед его загрузкой на сервер.
- _Moment.JS*_ - библиотека для удобных операций со временем на сайте.
_* - Модули, помеченые звёздочкой, подключены к Flask с помощью специальных дополнений._
## Планы по улучшению
- **Улучшение безопасности.**
Проект отпалирован не до конца, и всё ещё существуют некоторые проблемы с проверкой прав пользователей на посещение страниц.
- **JavaScript API карт.**
Статические карты, используемые в проекте, не являются лучшем решением для помощи волонтёрам.
Куда удобнее было бы использовать для этой цели отдельные виджеты с картами, однако на данный момент такой возможности нет.
- **Тестирование.**
Сейчас единственная функция, выполняемая CI, это проверка сборки проекта и его запуска.
Нам бы хотелось уметь в автоматическом режиме проверять работоспособность веб-страниц и БД.
- **Инструкция.**
Единственным способом разобраться с управлением на сайте является "метод тыка".
И пускай веб-сайт не обладает какой-то особо запутанной структурой, некоторым пользователям может быть сложно разобраться с ним самостоятельно.