CharityOps — это благотворительный фонд, который собирает пожертвования на различные целевые проекты, направленные на поддержку кошек. Фонд помогает с медицинским обслуживанием кошек, обустройством кошачьих колоний и покупкой корма для животных, оставшихся без попечения.
Проект включает в себя систему для управления пожертвованиями и проектами. Пользователи могут создавать пожертвования, а суперюзеры — создавать и управлять проектами для сбора средств. Каждый проект может быть связан с конкретной целью, такой как лечение кошек или поддержка кошачьих колоний.
- Создание благотворительных проектов (только для суперюзеров)
- Получение списка всех проектов
- Обновление и удаление проектов (только для суперюзеров)
- Создание пожертвований пользователями
- Получение списка всех пожертвований (только для суперюзеров)
- Получение истории пожертвований текущего пользователя
- Автоматическое распределение средств между проектами
POST /google/
— Формирование гугл таблицы для закрытых проектов с периодом сборов средств.
POST /projects/
— Создание нового проекта.GET /projects/
— Получение списка всех проектов.DELETE /projects/{project_id}
— Удаление проекта.PATCH /projects/{project_id}
— Обновление проекта.
POST /donations/
— Создание нового пожертвования.GET /donations/
— Получение списка всех пожертвований (для суперюзеров).GET /donations/my
— Получение списка пожертвований текущего пользователя.
- Клонируйте репозиторий:
git clone https://github.com/ShiroyashaSG/CharityOps.git
- Перейдите в директорию проекта:
cd CharityOps
- Cоздайте и активируйте виртуальное окружение:
py -3.10 -m venv venv source venv\Scripts\activate # Для Linux: venv/bin/activate
- Установите зависимости из файла requirements.txt:
python -m pip install --upgrade pip pip install -r requirements.txt
- Примените миграции:
alembic upgrade head
- Добавить и настроить файл .env в корневой директории проекта:
Пример .env:
nano .env
APP_TITLE=<your_title> DESCRIPTION=<your_description> DATABASE_URL=<your_database_url> SECRET=<your_secret_key>
- Запустите сервер:
uvicorn app.main:app --reload
POST /charity_project/
Authorization: Bearer <access_token>
Content-Type: application/json
{
"name": "Кошачья клиника",
"description": "Фонд на операцию",
"full_amount": 10000
}
GET /charity_project/
PATCH /charity_project/1
Authorization: Bearer <access_token>
Content-Type: application/json
{
"full_amount": 12000
}
DELETE /charity_project/1
Authorization: Bearer <access_token>
POST /donation/
Authorization: Bearer <access_token>
Content-Type: application/json
{
"full_amount": 5000
}
GET /donation/my
Authorization: Bearer <access_token>
GET /donation/
Authorization: Bearer <access_token>
POST /google/
Authorization: Bearer <access_token>
Аутентификация реализована через JWT-токены. Для получения токена используйте /auth/jwt/login
, а для регистрации — /auth/register
.
После запуска приложение доступно по адресу:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
Для запуска тестов:
pytest
- Python 3.10+
- FastAPI — веб-фреймворк для создания API
- SQLAlchemy + AsyncSession — асинхронная работа с БД
- Alembic — миграции базы данных
- SQLite — БД по умолчанию (можно изменить на PostgreSQL и др.)
- Pydantic — валидация данных
- Uvicorn — ASGI сервер
- Aiogoogle — Ассинхронная бабота с GoogleAPI