Skip to content

Timik2t/cat_charity_fund

Repository files navigation

QRKot

Описание проекта

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

Проекты

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

Пожертвования

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

Пользователи

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


Возможности:

  • Создание и управление целевыми проектами для сбора пожертвований.
  • Просмотр списка всех проектов с указанием требуемой суммы и уже собранных пожертвований.
  • Внесение пожертвований с возможностью добавления комментария.
  • Автоматическое распределение пожертвований на открытые проекты.
  • Автоматическое создание новых проектов при достижении необходимой суммы в предыдущих проектах.
  • Регистрация пользователей и просмотр списка собственных пожертвований.

Обновления

Добавлена возможность формирования отчёта в гугл-таблице. В нем закрытые проекты, отсортированные по скорости сбора средств — от тех, что закрылись быстрее всего, до тех, что долго собирали нужную сумму.

Для этого, необходимо:

  1. Создать проект в консоли Google Cloud Platform.
  2. Подключить к проекту Google Drive API и Google Sheets API.
  3. В разделе Credentials создать сервисный аккаунт.
  4. Нажмите Keys – Add Key – Create New Key, чтобы создать ключ доступак вашему сервисному аккаунту и получить JSON-файл с ним.

Технологии

  • Python 3.9
  • FastAPI 0.78
  • SQLAlchemy 1.4
  • Alembic 1.7
  • Pydantic 1.9
  • Aiogoogle 4.2

Подготовка и запуск проекта

  1. Склонируйте репозиторий на локальную машину:

    git clone [email protected]:Timik2t/cat_charity_fund.git
  2. Создайте и активируйте виртуальное окружение:

    python -m venv venv

    Активация окружения

    # Windows
    source venv/Scripts/activate
    # Linux
    source venv/bin/activate
  3. Установите зависимости:

    pip install -r requirements.txt
  4. Примените миграции:

    alembic upgrade head
  5. Создайте файл с переменными окружения .env и заполните его данными:

    APP_TITLE=Фонд QRKot
    APP_DESCRIPTION=Благотворительный фонд поддержки усатых хвостатых
    DATABASE_URL=sqlite+aiosqlite:///./fastapi.db
    SECRET=<секретный ключ>
    # Почта и пароль суперюзера
    [email protected]
    FIRST_SUPERUSER_PASSWORD=admin
    # Заполните по JSON-файлу ключа
    TYPE=service_account
    PROJECT_ID=atomic-climate-<идентификатор>
    PRIVATE_KEY_ID=<id приватного ключа>
    PRIVATE_KEY="-----BEGIN PRIVATE KEY-----<приватный ключ>-----END PRIVATE KEY-----\n"
    CLIENT_EMAIL=<email сервисного аккаунта>
    CLIENT_ID=<id сервисного аккаунта>
    AUTH_URI=https://accounts.google.com/o/oauth2/auth
    TOKEN_URI=https://oauth2.googleapis.com/token
    AUTH_PROVIDER_X509_CERT_URL=https://www.googleapis.com/oauth2/v1/certs
    CLIENT_X509_CERT_URL=<ссылка>
    # Почта, указанная в Google Cloud Platform
    EMAIL=<email пользователя>
  6. Запуск проекта:

    Стандартный запуск:

    uvicorn app.main:app

    Запуск сервера с автоматическим перезапуском при изменении кода (только для режима разработки):

    uvicorn app.main:app --reload

    Сервер будет доступен локально по адресу: http://127.0.0.1:8000


API


Автор

Исхаков Тимур

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published