Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/kaschenkkko/referralsysapi

Referral system API built with FastAPI. The API provides functionality for handling referral codes and ensuring users can only have one active code at a time.
https://github.com/kaschenkkko/referralsysapi

api fastapi python referral-system

Last synced: 30 days ago
JSON representation

Referral system API built with FastAPI. The API provides functionality for handling referral codes and ensuring users can only have one active code at a time.

Awesome Lists containing this project

README

        


RefSystem API







# Документация API
RefSystem - [API redoc](https://kaschenkkko.github.io/ReferralSysAPI/)

# Техническое задание проекта:

Необходимо разработать простой RESTful API сервис для реферальной системы.

# Функциональные требования:
- Регистрация и аутентификация пользователя (JWT, Oauth 2.0).
- Аутентифицированный пользователь должен иметь возможность создать или удалить свой реферальный код.Одновременно может быть активен только 1 код. При создании кода обязательно должен быть задан его срок годности.
- Возможность получения реферального кода по email адресу реферера.
- Возможность регистрации по реферальному коду в качестве реферала.
- Получение информации о рефералах по id реферера.
- UI документация (Swagger/ReDoc).

# Запуск проекта:

- Клонируйте репозиторий.
- Перейдите в папку **infra** и создайте в ней файл **.env** с переменными окружения:
```
DB_HOST=db
DB_PORT=5432
DB_NAME=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=password
JWT_SECRET_KEY=secret_key
```
- Из папки **infra** запустите docker-compose:
```
~$ docker-compose up -d --build
```
- В контейнере **backend** выполните миграции:
```
~$ docker-compose exec backend alembic upgrade head
```

Документация к API будет доступна по url-адресу [localhost:8000/redoc](http://localhost:8000/redoc)

Админка будет доступна по url-адресу [localhost:8000/admin](http://localhost:8000/admin)