Реферальная система (Django, DRF)
Описание работы сервиса
- Зарегистрироваться в системе по номеру телефона.
- Верифицировать номер телефона вводом 4-х значного кода.
- В личном кабинете сохранить инвайт-код пригласившего Вас Пользователя.(Необязательно)
- Для приглашения в сервис другого пользователя необходимо передать ему Ваш инвайт-код, и он должен сохранить его в ЛК.
- В дальнейшем для входа в систему использовать номер телефона, указанный при регистрации.
- Просматривать список приглашенных Вами пользователей в таблице "Ваши рефералы"
- Ознакомиться с документацией по работе API во вкладках "Swagger", "ReDoc".
Демонстрация работы сервиса (Django Templates + Bootstrap 5 ): Я участвую!🚀
[Код версии приложения без шаблонов (API с Swagger UI & ReDoc)]
Краткая инструкция по запуску и настройке сервиса
Стэк:
- Django и Django REST framework.
- PostgreSQL
- Docker и Docker-compose
Сущности проекта:
- TemporaryUser - модель для сохранения данных неподтвержденных Пользователей
- User - модель подтвержденного пользователя
Таблица ендпоинтов
HTTP Verb | Scope | Semantics | URL |
---|---|---|---|
POST | Login | Enter Phone - get Code | http://127.0.0.1:8000/api/accounts/code |
POST | Verification | Enter Phone and Code - get Tokens | http://127.0.0.1:8000/api/accounts/verify |
GET | Profile | View Profile | http://127.0.0.1:8000/api/service/profile |
PUT/PATCH | InviteCode | Provide Invite Code | http://127.0.0.1:8000/api/service/profile |
Авторизация:
- После верификации 4-х значного кода для Пользователя создаются JWT токены (по стандарту: Access и Refresh)
- Токен необходимо передавать в заголовке 'Authorization': 'Bearer TOKEN'
- Данная версия API не предусматривает получения нового Access токена по истечении срока действия - т.е. необходимо пройти повторную авторизацию с помощью номера телефона и 4-х значного кода верификации
Запуск проекта на локальной машине:
- Создать папку для проекта
- Создать в папке виртуальное окужение для Python 3.10 и активировать его
- Клонировать репозитории в папку и установить зависимости из файла requirements.txt
- Создать .env файл с данными для переменных окружения по образцу из env.example
- Внести необходимые Вам изменения в settings.py
- Собрать статику в неоходимую вам папку: python3 manage.py collectstatic
- Запустить контейнер с PostgreSQL с помощью файла docker-compose.yml
- Произвести миграции с помощью команд: python3 manage.py makemigrations и python3 manage.py migrate
- Создать Супер Пользователя -python3 manage.py createsuperuser - ввести данные для полей: Phone, Passcode(любой код), Password(ограничения Django)
- Запустить сервер: python3 manage.py runserver