Приложение для Благотворительного фонда поддержки котиков QRKot. Фонд собирает пожертвования на различные целевые проекты: на медицинское обслуживание нуждающихся хвостатых, на обустройство кошачьей колонии в подвале, на корм оставшимся без попечения кошкам — на любые цели, связанные с поддержкой кошачьей популяции.
- FastAPI
- SQLAlchemy
- Aiogoogle
Склонируйте репозиторий:
git clone git@github.com:IlDezmond/cat_charity_fund.git
Cоздать и активировать виртуальное окружение:
python3 -m venv venv
-
Если у вас Linux/macOS
source venv/bin/activate
-
Если у вас windows
source venv/scripts/activate
Установить зависимости из файла requirements.txt:
python3 -m pip install --upgrade pip
pip install -r requirements.txt
Создайте в корневой директории файл .env со следующим наполнением:
APP_TITLE=Приложение QRKot.
APP_DESC=Спасем котиков вместе!
DATABASE_URL=sqlite+aiosqlite:///./<название базы данных>.db
SECRET=<секретное слово>
FIRST_SUPERUSER_EMAIL=<email суперпользователя>
FIRST_SUPERUSER_PASSWORD=<пароль суперпользователя>
Примените миграции для создания базы данных SQLite:
alembic upgrade head
Первый суперпользователь будет создан автоматически при указании параметров First_superuser_email и First_superuser_password в .env
Для локального запуска выполните команду:
uvicorn app.main:app --reload
Сервис будет запущен и доступен по следующим адресам:
- http://127.0.0.1:8000 - API
- http://127.0.0.1:8000/docs - автоматически сгенерированная документация Swagger
- http://127.0.0.1:8000/redoc - автоматически сгенерированная документация ReDoc
После запуска доступны следующие эндпоинты:
- Регистрация и аутентификация:
- /auth/register - регистрация пользователя
- /auth/jwt/login - аутентификация пользователя (получение jwt-токена)
- /auth/jwt/logout - выход (сброс jwt-токена)
- Пользователи:
- /users/me - получение и изменение данных аутентифицированного пользователя
- /users/{id} - получение и изменение данных пользователя по id
- Благотворительные проекты:
- /charity_project/ - получение списка проектов и создание нового
- /charity_project/{project_id} - изменение и удаление существующего проекта
- Пожертвования:
- /donation/ - получение списка всех пожертвований и создание пожертвования
- /donation/my - получение списка всех пожертвований аутентифицированного пользователя
Аутентификация
POST http://127.0.0.1:8000/auth/jwt/login
Content-Type: application/json
{
"username": "user",
"password": "pass"
}
Получение списка проектов
GET http://127.0.0.1:8000/charity_project/
Создание проекта
POST http://127.0.0.1:8000/charity_project/
Content-Type: application/json
{
"name": "string",
"description": "string",
"full_amount": 1
}
Создание пожертвования
POST http://127.0.0.1:8000/donation/
Content-Type: application/json
{
"full_amount": 1,
"comment": "string"
}
Создание отчёта в гугл таблице
GET http://127.0.0.1:8000/google/
С подробными схемами запросов и ответов можно ознакомиться в документации или в файле со спецификацией - openapi.json.