Bitum - мессенджер с поддержкой ботов. Выполнен в качестве учебного проекта в Яндекс Лицей.
Backend сайта выполнен на Flask, в качестве базы данных используется PostgreSQL, ORM - peewee.
Frontend построен на языке rust, используется фреймворк Yew. Выполнен в стиле SinglePage сайта.
Для установки вам потребуются следующие программы:
- Git - git, что бы склонировать этот репозиторий (Можно и без него)
- python3 и pip3 - Интерпретатор и пакетный менеджер питона. Желательно питон версии 3.10
- PostgreSQL - сервер базы данных.
- Rust - язык программирования , на котором написан фронтэнд
- trunk - инструмент для компилирования WebAssembly бинарников на языке Rust.
Для начала нужно установить и настроить PostgreSQL базу данных (как это делать не расскажу, скажу лишь что нам нужна одна база данных, и пользователь, имеющий полный доступ к этой БД)
После этого клонируем этот репозиторий командой:
git clone https://github.com/radyshenkya/bitum.gitТеперь нужно скомпилировать фронтэнд.
Для этого переходим в папку frontend/bitum-frontend, оттуда вызываем команду:
trunk buildПосле установки нужно настроить файл .env в корне проекта. Изначально его нет, его нужно создать самому.
Никому не показывайте этот файл, там хранятся приватные данные
Этот файл имеет такие переменные:
DB_NAME=
DB_USER=
DB_PASSWORD=
DB_HOST=
DB_PORT=
JWT_SECRET=Все эти поля должны быть заполнены
Значения полей:
DB_NAME- имя базы данныхDB_USER- имя пользователя от БДDB_PASSWORD- пароль от пользователя БДDB_HOST- домен/IP адресс базы данных. Без указания протокола.DB_PORT- порт, на котором стоит БД (по умолчанию 5432 для PostgreSQL).JWT_SECRET- секретная фраза, используемая для шифровки токенов. Это должен быть длинный набор случайных символов
Пример содержания файла .env:
DB_NAME=test_db
DB_USER=test_db_user
DB_PASSWORD=super_secret_db_pass
DB_HOST=example.com
DB_PORT=5432
JWT_SECRET=$uP3r-s3c537_K3yУстановка пакетов происходит командой
pip install -r requirements.txtПрописываем команду
gunicorn --bind 0.0.0.0:8000 wsgi:app
По необходимости меняем айпи сервера/порт.
- requirements.txt
- bootstrap - подключается в файле index.html (и используется впоследствии)
- Шаблоны - не используются
- ORM-модели - Описаны в файле database.py. Используется библиотека Peewee.
- Регистрация и авторизация - для этого используются токены, и API методы
POST /api/user(для регистрации / создания пользователя),POST /api/user/token(для создания токена пользователя по его имени и паролю). - Загрузка и использование файлов - API метод
POST /api/files- для загрузки файлов. В ответ возвращаются имена загруженных файлов на сервере. Получить эти файлы можно из эндпоинтаGET /files/<FILE_NAME> - API: REST - все методы API описаны в файле api/endpoints.py.
- Хранение данных - используется база данных PostgreSQL. Подключение к БД, как и модели ORM можно просмотреть в файле database.py
- Хостинг - сайт работает на хостинге Glitch. Ссылка на сам проект