Features • Tech stack • How To Use • Documentation • Additional material
- Authentication by JWT token
- Authorization by phone number. First request to enter phone number.
- Simulate sending a 4-digit authorization code (1-2 sec delay on the server) using celery task
- In the user's profile, the user has the opportunity to enter one other person's invite code (when entering it, check for existence).
- In the user's profile the list of users (phone numbers) who have entered the current user's invite code is displayed.
- Redoc
- Swagger
- flower for celery task monitoring
Use Docker
-
Firstly clone repo
git clone [email protected]:mrKazzila/test_python_dev_Hammer_Systems.git
-
Prepare env with make
make prepare_docker_env
-
Run docker compose with make
make docker_run
-
Stop docker compose with make
make docker_stop
Local commands
-
Firstly clone repo
git clone [email protected]:mrKazzila/test_python_dev_Hammer_Systems.git
-
Prepare local env with make
make prepare_local_env
-
Settings Poetry with make
make poetry_setup
-
Run project dependencies, migrations, & run test server with make
make django_run
-
Run Redis Server
make redis_run
-
Run Celery
make celery_run
-
Run test with make
make test
-
Run pre-commit with make
make test_linters
API Documentation
POST
| Getting an authentication code: http://localhost:8000/api/v1/auth/signup/
Example:
-
Request
{ "username": "Jhon", "phone_number": "12345678901" }
-
Response
{ "code": "1236" }
POST
| Getting an authentication token and referral code: http://localhost:8000/api/v1/auth/code/
Example:
-
Request
{ "code": "1236" }
-
Response
{ "token": "bssiyw-f169337fbe692e91f373200fd087e533", "referral code": "Qz3Isl" }
GET
| Getting the users list: http://localhost:8000/api/v1/users/
Example:
-
Response
[ { "username": "Zak", "phone_number": "29535315881", "referral_code": "Qz3Isl", "used_referral_code": "", "referral_users_list": [ { "phone": "19535315881" } ] }, { "username": "Jhon", "phone_number": "19535315881", "referral_code": "fxmSIJ", "used_referral_code": "Qz3Isl", "referral_users_list": [] } ]
POST
| Creating user: http://localhost:8000/api/v1/users/
Example:
-
Request
{ "username": "Nick", "phone_number": "49535315881", "referral_code": "oxtSIn", "used_referral_code": "" }
-
Response
{ "username": "Nick", "phone_number": "49535315881", "referral_code": "oxtSIn", "used_referral_code": "", "referral_users_list": [] }
GET
| Getting a user: http://localhost:8000/api/v1/users/<username>/
Example:
-
Response
{ "username": "Jhon", "phone_number": "19535315881", "referral_code": "fxmSIJ", "used_referral_code": "Qz3Isl", "referral_users_list": [] }
PATCH
| Update user info: http://localhost:8000/api/v1/users/<username>/
Example:
-
Request
{ "username": "makwcy", "phone_number": "29535713841", "referral_code": "pfvIfl", "used_referral_code": "", "referral_users_list": [] }
-
Response
{ "username": "makwcy", "phone_number": "29535713841", "referral_code": "pfvIfl", "used_referral_code": "", "referral_users_list": [] }
PUT
| Update user info: http://localhost:8000/api/v1/users/<username>/
Example:
-
Request
{ "username": "makwcy", "phone_number": "29535713841", "referral_code": "pfvIfl", "used_referral_code": "", "referral_users_list": [] }
-
Response
{ "username": "makwcy", "phone_number": "29535713841", "referral_code": "pfvIfl", "used_referral_code": "", "referral_users_list": [] }
DELETE
| Delete user: http://localhost:8000/api/v1/users/<username>/
Example:
-
Response
{ "username": "makwcy", "phone_number": "29535713841", "referral_code": "pfvIfl", "used_referral_code": "", "referral_users_list": [] }