/api_charity_fund_with_google_spreadsheets_report

API для благотворительного фонда с отчётом в Google Sheets (гугл-таблице).

Primary LanguagePython

API для благотворительного фонда с отчётом в Google Sheets (гугл-таблице).

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

Как развернуть

Создать окружение

python -m venv venv  

Активировать окружение, обновить pip и установить зависимости

source venv/Scripts/activate  
python -m pip install --upgrade pip  
pip install -r requirements.txt  

Создать и заполнить файл .env по примеру .env.example

Создать таблицы в БД

alembic upgrade head  

Запустить

uvicorn app.main:app --reload  

Документация к API доступна по адресу /docs

По окончании использования деактивировать окружение

deactivate  

Стек технологий

Python, FastAPI, SQLAlchemy, Alembic, Async Google API Client, FastAPI Users, SQLite

Мишустин Василий, v@vvvas.ru