- Клонировать репозиторий:
https://github.com/Lazarus-Phoenix/PhoneInvite/tree/feature
cd PhoneInvite
- Запустить Docker контейнеры: (Аккуратнее с кнопками! , запускается с окна ниже напрямую из README)
docker-compose down -v
docker-compose build --no-cache
docker-compose upPOST /auth/login/
Content-Type: application/json
{
"phone": "+79999999999"
}POST /auth/verify/
Content-Type: application/json
{
"phone": "+79999999999",
"SMS-code": "1234"
}GET /profile/
Authorization: Token вставь свой токен сюдаPOST /profile/
Content-Type: application/json
Authorization: Token вставь свой токен сюда
{
"invite_code": "ABC123" <--- сообщаешь инвайт код того под кого записываешься реферралом(если он дал его тебе)
}В данно композиции возможно через Postman/Newman Если нужно тестировать API вручную или автоматизированно:
Используйте коллекции в Postman.
Экспортируйте её из :n
Docker test Collection.postman_collection.jsonn
Runsrver test Collection.postman_collection.jsonn
Запускайте автоматически через Newman:
Доступна по адресу: http://localhost:8000/redoc/ в режиме разработки n
Доступна по адресу: http://0.0.0.0:8000/redoc/ в режиме запущенного контейнера n\
Доступна в корне проекта: n
Docker test Collection.postman_collection.jsonn
Runsrver test Collection.postman_collection.jsonn\
Описание реализованных задач:
В рамках данного проекта разработанна реферальная система, которая позволяет пользователям регистрироваться и авторизовываться по номеру телефона, а также использовать и распространять инвайт-коды. Эта система будет имеет минимальный интерфейс взаимодействия для тестирования(через Postman), однако вся логика работы с пользователями и их инвайт-кодами тщательно проработана и задокументирована.
Цель проекта — обеспечить простой и надежный механизм авторизации и реферальной системы, который можно легко тестировать и интегрировать в другие системы.
** Логика и API для следующего функционала:**
-
Авторизация по номеру телефона:
- Пользователь вводит свой номер телефона для авторизации.n
в данном исполнении реализованн псевдо SMS-code sender n\ - Система имитирует отправку 4-значного кода авторизации (с задержкой на сервере 1-2 секунды).
- Пользователь вводит свой номер телефона для авторизации.n
Вместо иммитации можно использовать реальные сервисы по отправке СМС кодов, например, этот В коде этого проекта предусмотренны переменные окружения для взаимодействия с API подобных сервисов
-
Пользователь вводит полученный код для завершения процесса авторизации.
-
Если пользователь ранее не авторизовывался, его данные записываются в базу данных.
-
Запрос на профиль пользователя:
-
При первой авторизации пользователю присваивается случайно сгенерированный 6-значный инвайт-код, состоящий из цифр и символов.
-
В профиле у пользователя должна быть возможность ввести чужой инвайт-код, при этом проверяется его существование в системе.
-
В профиле можно активировать только один инвайт-код. Если пользователь уже активировал инвайт-код, он отображается в соответствующем поле при запросе своего профиля пользователем.
-
API профиля выводит список пользователей (номеров телефона), которые ввели инвайт-код текущего пользователя.
-
-
API документация:
-
Реализована и описана в README.md API для всего функционала, включая примеры запросов и ответов.
-
Документировано API с использованием ReDoc для удобной и понятной автодокументации.
-
-
Интерфейс:
- Реализован взаимодействием через Postman
-
Контейнеризация:
- Проект завернут в Docker для демонстрации запускается через docker-compose.
-
Язык программирования:
- Python
-
Фреймворк:
- Django, DRF для реализации веб-сервера
-
База данных:
- PostgreSQL для хранения данных
-
Контейнеризация:
- Docker для контейнеризации приложения
-
Документация:
- В корне проекта файл README.md с описанием структуры проекта, инструкциями по установке и запуску, а также описанием API.
-
Качество кода:
-
Стандарты PEP8 для Python кода.
-
Весь код храниться в удаленном Git репозитории.
-