Фонд собирает пожертвования на различные целевые проекты.
В Фонде может быть открыто несколько целевых проектов. У каждого проекта есть название, описание и сумма, которую планируется собрать. После того, как нужная сумма собрана — проект закрывается.
Каждый пользователь может сделать пожертвование и сопроводить его комментарием. Пожертвования не целевые: они вносятся в фонд, а не в конкретный проект. Каждое полученное пожертвование автоматически добавляется в первый открытый проект, который ещё не набрал нужную сумму. Если пожертвование больше нужной суммы или же в Фонде нет открытых проектов — оставшиеся деньги ждут открытия следующего проекта. При создании нового проекта все неинвестированные пожертвования автоматически вкладываются в новый проект.
Целевые проекты создаются администраторами сайта. Любой пользователь может видеть список всех проектов, включая требуемые и уже внесенные суммы. Это касается всех проектов — и открытых, и закрытых. Зарегистрированные пользователи могут отправлять пожертвования и просматривать список своих пожертвований.
- Шаг первый: клонируем репозиторий
git@github.com:Nurbek878/cat_charity_fund.git
- Переходим в папку с проектом
cd cat_charity_fund
- Создаем и активируем виртуальное окружение
python -m venv venv
source venv/bin/activate
- Обновляем менеджер пакетов pip
pip install --upgrade pip
- Устанавливаем необходимые зависимости
pip install -r requirements.txt
- В корне проекта создаем .env файл
APP_TITLE=Name
APP_DESCRIPTION=Description
DATABASE_URL=sqlite+aiosqlite:///./fastapi.db
SECRET=Your_secret
[email protected]
FIRST_SUPERUSER_PASSWORD=Your_first_user_password
- Применяем миграции для создания таблиц в БД
alembic upgrade head
- Запускаем приложение командой
uvicorn app.main:app --reload
Приложение доступно по следующему адресу http://127.0.0.1:8000
В приложении доступны endpoints:
GET, POST /charity_project/ - получение данных по всем проектам, создание нового проекта (для суперюзеров)
PATCH, DELETE /charity_project/{project_id} - изменение, удаление существующего проекта (для суперюзеров)
GET /donation/ - получение списка всех пожертвований (для суперюзеров)
POST /donation/ - создание пожертвования
GET /donation/my - получение списка всех пожертвований пользователя
POST /auth/register - регистрация пользователя
POST /auth/jwt/login - получение пользователем jwt-токена
POST /auth/jwt/logout - сброс jwt-токена
GET, PATCH /users/me - изменение и получение данных пользователя
GET, PATCH, DELETE /users/{id} - получение, изменение, удаление (не используется, деактивация) пользователей