Skip to content

levinadev/QRkot_spreadsheets

Repository files navigation

API "Фонд поддержки котиков QRKot"

CI/CD

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

В проекте реализована регистрация пользователей, персонализация пожертвований и разграничение прав доступа.

Демо

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

  • Благотворительные проекты (charity_projects)
    • Просмотреть список всех целевых проектов (доступно всем пользователям, включая анонимных)
    • Создать целевой проект (только суперпользователи)
    • Редактировать целевой проект (только суперпользователи)
    • Удалить целевой проект (только суперпользователи)
  • Пожертвования (donations)
    • Просмотреть список всех пожертвований (только суперпользователи)
    • Создать пожертвование (только авторизованные пользователи)
    • Просмотреть список своих пожертвований (только авторизованные пользователи)
  • Авторизация (auth)
    • Логин (получение JWT токена)
    • Logout (только авторизованные пользователи)
    • Регистрация
  • Пользователи (users)
    • Получить данные о текущем пользователе (только авторизованные пользователи)
    • Изменить данные текущего пользователя (только авторизованные пользователи)
    • Получить данные пользователя по id (только суперпользователи)
    • Обновить данные пользователя по id (только суперпользователи)
  • Google
    • Формирование отчета в Google Sheets (только суперпользователи)

Пользователям с любым уровнем доступа запрещено:

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

Установка и запуск локально

  1. Склонируйте репозиторий:
git clone https://github.com/levinadev/QRkot_spreadsheets.git
cd QRkot_spreadsheets
  1. Настройте переменные окружения:
cp .env.example .env

(Замените значения на свои)

  1. Установите зависимости:
uv sync
  1. Примените миграции:
alembic upgrade head
  1. Запустите API:
uvicorn app.main:app --reload
  1. После запуска документация доступна по адресу: http://localhost:8000/docs

  2. Для остановки нажмите в консоли CTRL+C

Запуск через Docker

  1. Создайте .env:
cp .env.example .env
  1. Запустите контейнеры:
docker compose -f docker-compose.production.yml up -d --build
  1. API-документация будет доступна по адресу:
http://localhost:8012/docs
  1. Остановка:
docker compose -f docker-compose.production.yml down

Примеры запросов:

  1. Создать проект
  • POST /charity_project/
{
  "name": "Новый дом для котиков",
  "description": "Строим большой дом для 20 котов",
  "full_amount": 5000
}
  1. Получить все проекты
  • GET /charity_project/
  1. Обновить проект
  • PATCH /charity_project/{project_id}
{
  "name": "Обновлённый проект",
  "full_amount": 8000
}
  1. Удалить проект
  • DELETE /charity_project/{project_id}
  1. Создать пожертвование
  • POST /donation/
{
  "full_amount": 2000,
  "comment": "От доброго человека"
}
  1. Получить все пожертвования
  • GET /donation/all
  1. Получить пожертвование текущего пользователя
  • GET /donation/my
  1. Login
  • POST /auth/login
{
  "username": "user@example.com",
  "password": "password123"
}
  1. Logout
  • POST /auth/logout
    • (требуется передавать токен в заголовке Authorization: Bearer )
  1. Регистрация
  • POST /auth/register
{
  "email": "user@example.com",
  "password": "string",
  "is_active": true,
  "is_superuser": false,
  "is_verified": false
}
  1. Получить данные о текущем пользователе
  • GET /users/me
  1. Изменить данные текущего пользователя
  • PATCH /users/me
{
  "email": "updated@example.com"
}
  1. Получить данные пользователя по id
  • GET /users/{user_id}
  1. Обновить данные пользователя по id
  • PATCH /users/{user_id}
{
  "is_active": false
}
  1. Сформировать отчет в Google Sheets
  • POST /google/

Технологии

  • Python 3.9
  • FastAPI
  • FastAPI Users
  • SQLAlchemy (async)
  • Alembic
  • Pydantic
  • Uvicorn
  • SQLite (aiosqlite)
  • uv (менеджер зависимостей)

Автор

About

API "Фонд поддержки котиков QRKot". 📒Яндекс Практикум

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages