/praktikum-qrkot

Яндекс Практикум. REST API Благотворительного фонда поддержки котиков (FastAPI).

Primary LanguagePython

QRKot REST API

Учебный проект Яндекс Практикум (курс Python-разработчик плюс).

Описание

QRKot - это приложение для Благотворительного фонда поддержки котиков.

Проекты

В Фонде QRKot может быть открыто несколько целевых проектов. У каждого проекта есть название, описание и сумма, которую планируется собрать. После того, как нужная сумма собрана — проект закрывается. Пожертвования в проекты поступают по принципу First In, First Out: все пожертвования идут в проект, открытый раньше других; когда этот проект набирает необходимую сумму и закрывается — пожертвования начинают поступать в следующий проект.

Пожертвования

Каждый пользователь может сделать пожертвование и сопроводить его комментарием. Пожертвования не целевые: они вносятся в фонд, а не в конкретный проект. Каждое полученное пожертвование автоматически добавляется в первый открытый проект, который ещё не набрал нужную сумму. Если пожертвование больше нужной суммы или же в Фонде нет открытых проектов — оставшиеся деньги ждут открытия следующего проекта. При создании нового проекта все неинвестированные пожертвования автоматически вкладываются в новый проект.

Отчёт в Google Sheets

В приложении также реализована возможность формирования в гугл-таблице отчёта с закрытыми проектами, отсортированными по скорости сбора средств.

Технологии

Python FastAPI SQLite SQLAlchemy Alembic Uvicorn Aiogoogle

Локальный запуск проекта

Клонировать репозиторий и перейти в директорию проекта:

git clone https://github.com/bvsvrvb/praktikum-qrkot.git
cd praktikum-qrkot

Создать .env файл с переменными окружения:

DATABASE_URL="sqlite+aiosqlite:///./fastapi.db"
SECRET="..."
FIRST_SUPERUSER_EMAIL="admin@example.com"
FIRST_SUPERUSER_PASSWORD="admin"
PASSWORD_MIN_LEN="3"
EMAIL="..."
TYPE="service_account"
PROJECT_ID="..."
PRIVATE_KEY_ID="..."
PRIVATE_KEY="..."
CLIENT_EMAIL="..."
CLIENT_ID="..."
AUTH_URI="https://accounts.google.com/o/oauth2/auth"
TOKEN_URI="https://oauth2.googleapis.com/token"
AUTH_PROVIDER_X509_CERT_URL="https://www.googleapis.com/oauth2/v1/certs"
CLIENT_X509_CERT_URL="..."
UNIVERSE_DOMAIN="googleapis.com"

Cоздать и активировать виртуальное окружение:

python -m venv venv
source venv/Scripts/activate

Установить зависимости из файла requirements.txt:

python -m pip install --upgrade pip
pip install -r requirements.txt

Выполнить миграции:

alembic upgrade head

Запустить приложение:

uvicorn app.main:app --reload

Автор

Vlad Basarab