В Фонде QRKot может быть открыто несколько целевых проектов. У каждого проекта есть название, описание и сумма, которую планируется собрать. После того, как нужная сумма собрана — проект закрывается. Пожертвования в проекты поступают по принципу First In, First Out: все пожертвования идут в проект, открытый раньше других; когда этот проект набирает необходимую сумму и закрывается — пожертвования начинают поступать в следующий проект.
Каждый пользователь может сделать пожертвование и сопроводить его комментарием. Пожертвования не целевые: они вносятся в фонд, а не в конкретный проект. Каждое полученное пожертвование автоматически добавляется в первый открытый проект, который ещё не набрал нужную сумму. Если пожертвование больше нужной суммы или же в Фонде нет открытых проектов — оставшиеся деньги ждут открытия следующего проекта. При создании нового проекта все неинвестированные пожертвования автоматически вкладываются в новый проект.
Целевые проекты создаются администраторами сайта. Любой пользователь может видеть список всех проектов, включая требуемые и уже внесенные суммы. Это касается всех проектов — и открытых, и закрытых. Зарегистрированные пользователи могут отправлять пожертвования и просматривать список своих пожертвований.
У адмимистратора имеется возможность получать отчеты о завершенных проектах в Google Sheets.
- Python
- FastAPI
- SQLAlchemy
- FastAPI-Users
- aioSQLite
- Pydantic
- Alembic
- Google Sheets API
- Google Drive API
- Клонировать репозиторий:
git clone https://github.com/magicbuka/QRkot_spreadsheets.git
- Создать виртуальное окружение:
python -m venv venv
- Активировать виртуальное окружение и установить зависимости из
requirements.txt
:
source venv/Scripts/activate
python -m pip install --upgrade pip
pip install -r requirements.txt
- Применить миграции:
alembic upgrade head
- Запустить проект:
uvicorn app.main:app --reload
При необходимости в корневой папке создайте файл .env и заполните своими данными:
APP_TITLE=
APP_DESCRIPTION=
DATABASE_URL=
SECRET=
FIRST_SUPERUSER_EMAIL=
FIRST_SUPERUSER_PASSWORD=
EMAIL=
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=
Разработчик проекта Baranova Anna