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

Неообходимость проекта:

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

Что присутствует в проекте(Возможности):

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

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

  3. Целевые проекты создаются администраторами сайта.Любой пользователь может видеть список всех проектов, включая требуемые и уже внесенные суммы. Это касается всех проектов — и открытых, и закрытых.Зарегистрированные пользователи могут отправлять пожертвования и просматривать список своих пожертвований.

Права пользователей:

1. Любой посетитель сайта (в том числе неавторизованный) может посмотреть список всех проектов.

2. Никто не может менять через API размер внесённых средств, удалять или модифицировать закрытые проекты, изменять даты создания и закрытия проектов.

3. Любой зарегистрированный пользователь может сделать пожертвование.

4. Зарегистрированный пользователь может просматривать только свои пожертвования

5. Редактировать или удалять пожертвования не может никто.

6. Суперпользователь может:

  • создавать проекты,

  • удалять проекты, в которые не было внесено средств,

  • изменять название и описание существующего проекта, устанавливать для него новую требуемую сумму (но не меньше уже внесённой).

  • Суперпользователь может просматривать список всех пожертвований, при этом ему выводятся все поля модели.

Основные используемые технологии:

  • Python 3.11

  • FastApi 0.78.0

  • Alembic 1.7.7

  • SQLAlchemy 1.4.49

Инструкция по развёртыванию проекта:

1. Клонировать репозиторий и перейти в него в командной строке:

git@github.com:SkaDin/cat_charity_fund.git
cd cat_charity_fund

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

python3 -m venv venv
  • Если у вас Linux/macOS

source venv/bin/activate
  • Если у вас windows

source venv/scripts/activate

3. Установить зависимости из файла requirements.txt(обновить pip при необходимости):

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

4. Пример .env-файла который должен быть создан в корне проекта:

APP_TITLE='Благотворительный фонд поддержки котиков QRKot'
DESCRIPTION='Спаси четвероногих!'
DATABASE_URL=sqlite+aiosqlite:///./fastapi.db
SECRET='Усатый-полосатый'

5. Запуск проекта происходит по команде:

uvicorn app.main:app --reload

Документация доступна по эндпоинту:

Автор проекта:

  • SkaDin(Денис Сушков)