Проект написан для практического изучения FastAPI, SQLAlchemy, alembic, Aiogoogle
- FastAPI
- SQLAlchemy
- alembic
- Aiogoogle
Фонд собирает пожертвования на различные целевые проекты: на медицинское обслуживание, на обустройство кошачьей колонии в подвале, на корм оставшимся без попечения кошкам — на любые цели, связанные с поддержкой кошачьей популяции.
В Фонде QRKot может быть открыто несколько целевых проектов. У каждого проекта есть название, описание и сумма, которую планируется собрать. После того, как нужная сумма собрана — проект закрывается. Пожертвования в проекты поступают по принципу First In, First Out: все пожертвования идут в проект, открытый раньше других; когда этот проект набирает необходимую сумму и закрывается — пожертвования начинают поступать в следующий проект.
Каждый пользователь может сделать пожертвование и сопроводить его комментарием. Пожертвования не целевые: они вносятся в фонд, а не в конкретный проект. Каждое полученное пожертвование автоматически добавляется в первый открытый проект, который ещё не набрал нужную сумму. Если пожертвование больше нужной суммы или же в Фонде нет открытых проектов — оставшиеся деньги ждут открытия следующего проекта. При создании нового проекта все неинвестированные пожертвования автоматически вкладываются в новый проект.
Целевые проекты создаются администраторами сайта. Любой пользователь может видеть список всех проектов, включая требуемые и уже внесенные суммы. Это касается всех проектов — и открытых, и закрытых. Зарегистрированные пользователи могут отправлять пожертвования и просматривать список своих пожертвований.
Полная документация API в файле openapi.json
Клонируйте репозиторий:
git clone git@github.com:sldmxm/fastAPI_training_project.git
Создайте и активируйте виртуальное окружение, установите все необходимые пакеты из файла requirements.txt.
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
В корневой директории создайте файл .env:
APP_TITLE=Кошачий благотворительный фонд (0.1.0)
DATABASE_URL=sqlite+aiosqlite:///./fastapi.db
SECRET=ваш_секретный_ключ
FIRST_SUPERUSER_EMAIL=имя@домен.com
FIRST_SUPERUSER_PASSWORD=пароль
Выполните миграции:
alembic upgrade head
Запуск
uvicorn app.main:app --reload
Документация API доступна по адресу http://127.0.0.1:8000/docs