QRKot
- это приложение для Благотворительного фонда, реализованное на фреймворке FastAPI.
Цель проекта - отработать навыки работы с FastAPI, SQLAlchemy и GoogleAPI.
- Python 3.10
- FastAPI 0.78.0
- Uvicorn 0.17.6
- SQLAlchemy 1.4.36
- Alembic 1.7.7
- FastAPI Users 10.0.4
- Aiogoogle 4.2.0
- Google Sheet API v4
- Google Drive API v3
Благотворительный фонд собирает пожертвования на различные целевые проекты. У каждого проекта есть название, описание и сумма, которую планируется собрать. Каждый пользователь может сделать пожертвование и сопроводить его комментарием. Каждое полученное пожертвование автоматически добавляется в первый открытый проект, который ещё не набрал нужную сумму. Когда проект набирает необходимую сумму, он закрывается.
- создание благотворительных проектов,
- создание и автоматическое распределение между проектами пожертвований пользователей,
- система управления пользователями,
- создание отчета по закрытым проектам в виде гугл-таблицы.
Документация проекта доступна после запуска проекта по адресам /docs
и /redoc
В проекте настроено асинхронное подключение к базе данных через SQLAlchemy ORM.
Миграции базы данных настроены через библиотеку Alembic.
Для работы с Google API необходимо в Google Cloud Platform создать проект с сервисным аккаунтом и подключенными Google Drive API и Google Sheets API. У проекта нужно сформировать JSON-файл с ключом доступа к сервисному аккаунту и перенести его данные в файл .env.
В .env файл также следует добавить адрес личного гугл-аккаунта для выдачи прав доступа к сформированному отчету.
Пример наполнения файла .env:
DATABASE_URL=sqlite+aiosqlite:///./db.sqlite
EMAIL=user@gmail.com
TYPE=
PROJECT_ID=
PRIVATE_KEY_ID=
PRIVATE_KEY="..."
CLIENT_EMAIL=
CLIENT_ID=
AUTH_URI=
TOKEN_URI=
AUTH_PROVIDER_X509_CERT_URL=
CLIENT_X509_CERT_URL=
- Клонировать репозиторий c GitHub на компьютер и перейти в него в командной строке
$ git clone https://github.com/DashaMalva/QRkot.git
$ cd QRkot
- Создать и активировать виртуальное окружение
# Windows
$ python -m venv venv
$ source venv/Scripts/activate
# Linux
python3 -m venv venv
source venv/bin/activate
- Обновить менеджер пакетов pip
$ python -m pip install --upgrade pip
- Установить зависимости из requirements.txt
$ pip install -r requirements.txt
- Создать файл .env с переменными окружения. Пример наполнения:
DATABASE_URL=sqlite+aiosqlite:///./db.sqlite
SECRET=secret
- Создать базу данных
$ alembic upgrade head
- Запустить приложение
$ uvicorn app.main:app
The MIT License (MIT)
Студент Яндекс.Практикум,
Дарья Матвиевская