An open API service indexing awesome lists of open source software.

https://github.com/meteopavel/crowdfunding_api

🎉🔧 RESTful API для групповых денежных сборов. Позволяет создавать, управлять и отслеживать сборы, а также делать пожертвования.
https://github.com/meteopavel/crowdfunding_api

celery django django-rest-framework docker nginx pillow postgresql python3 redis uvicorn

Last synced: 5 months ago
JSON representation

🎉🔧 RESTful API для групповых денежных сборов. Позволяет создавать, управлять и отслеживать сборы, а также делать пожертвования.

Awesome Lists containing this project

README

          
















Logo

Crowdfunding API 🎉



🔧 RESTful API для групповых денежных сборов. Позволяет создавать, управлять и отслеживать сборы, а также делать пожертвования.



Демо версия
·
Сообщить об ошибке
·
Предложить улучшение


## Особенности ✨
- Полноценный CRUD для управления сборами 🛠️
- Асинхронная отправка email-уведомлений 📧
- Поддержка загрузки изображений для обложек сборов 🖼️
- Документация API через Swagger 📚
- Кэширование данных с использованием Redis ⚡
- Менеджмент-команда для загрузки моковых данных 🛠️
- Запуск проекта в Docker 🐳
- Расширяемая архитектура для добавления новых функций 🔧

## Технологический стек 💻
- Backend : Django 5.2, Django REST Framework
- База данных : PostgreSQL
- Кэширование : Redis
- Асинхронные задачи : Celery
- Обработка изображений : Pillow
- Контейнеризация : Docker
- Веб-сервер : Nginx
- Документация : Swagger (drf-yasg)

## Установка и запуск 🚀
1. Клонируйте репозиторий:
```bash
git clone https://github.com/meteopavel/Crowdfunding_API.git
cd Crowdfunding_API
```
2. Создайте .env файл:
- Скопируйте .env.example в .env:
```bash
cp .env.example .env
```
- Заполните .env файл согласно вашим настройкам (например, данные для подключения к базе данных, Redis и SMTP).
4. Запустите проект с помощью Docker:
```bash
docker-compose up --build
```
4. API будет доступно по адресу:

http://localhost:8000

## Документация API 📚
Для просмотра документации API перейдите по адресу:

http://localhost:8000/swagger/

## Регистрация и использование JWT-токенов в API
### Регистрация пользователя
1. Откройте Swagger UI
2. Найдите эндпоинт /register/
3. Введите данные для регистрации (например, username, email, password)
4. Нажмите "Execute"

После успешной регистрации пользователь получит письмо на указанный email с двумя токенами:

- Access Token : Используется для авторизации в API.
- Refresh Token : Используется для обновления Access Token.

### Авторизация через Swagger
Для выполнения запросов к защищенным эндпоинтам (например, /api/collects/ или /api/payments/) необходимо использовать Access Token.

Как авторизоваться в Swagger:
1. Откройте Swagger UI
2. В правом верхнем углу нажмите кнопку Authorize
3. В открывшемся окне в поле "Value" введите ваш Access Token в формате:
```
Bearer <ваш_access_token>
```
Например:

```
Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
```

4. Нажмите "Authorize", затем "Close"

Теперь вы можете выполнять запросы к защищенным эндпоинтам от имени авторизованного пользователя.

## Менеджмент-команда для загрузки моковых данных 🛠️
Добавлена команда load_mock_data, которая генерирует тестовые данные для сборов и платежей. Это удобно для тестирования API или демонстрации функционала.
```bash
python manage.py load_mock_data
```

## Автор
[Павел Найденов](https://github.com/meteopavel)