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