Проект Благотворительного фонда поддержки котиков QRKot.
Неообходимость проекта:
Фонд собирает пожертвования на различные целевые проекты: на медицинское обслуживание нуждающихся хвостатых, на обустройство кошачьей колонии в подвале, на корм оставшимся без попечения кошкам — на любые цели, связанные с поддержкой кошачьей популяции.
Что присутствует в проекте(Возможности):
От одного и более открытого проекта. У каждого проекта есть название, описание и сумма, которую планируется собрать. После того, как нужная сумма собрана — проект закрывается. Пожертвования в проекты поступают по принципу First In, First Out: все пожертвования идут в проект, открытый раньше других; когда этот проект набирает необходимую сумму и закрывается — пожертвования начинают поступать в следующий проект.
Каждый пользователь может сделать пожертвование и сопроводить его комментарием. Пожертвования не целевые: они вносятся в фонд, а не в конкретный проект. Каждое полученное пожертвование автоматически добавляется в первый открытый проект, который ещё не набрал нужную сумму. Если пожертвование больше нужной суммы или же в Фонде нет открытых проектов — оставшиеся деньги ждут открытия следующего проекта. При создании нового проекта все неинвестированные пожертвования автоматически вкладываются в новый проект.
Целевые проекты создаются администраторами сайта.Любой пользователь может видеть список всех проектов, включая требуемые и уже внесенные суммы. Это касается всех проектов — и открытых, и закрытых.Зарегистрированные пользователи могут отправлять пожертвования и просматривать список своих пожертвований.
Права пользователей:
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='Усатый-полосатый'