https://github.com/devstackq/binaryx-task
https://github.com/devstackq/binaryx-task
Last synced: 7 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/devstackq/binaryx-task
- Owner: devstackq
- Created: 2021-09-14T10:05:11.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2021-09-17T08:56:52.000Z (over 4 years ago)
- Last Synced: 2024-12-28T07:43:24.335Z (over 1 year ago)
- Language: Go
- Size: 26.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.MD
Awesome Lists containing this project
README
ТЕСТОВОЕ ЗАДАНИЕ
Стек:
● Go
● PostgreSQL
● Docker
● Ubuntu 20.04
Необходимо реализовать REST API сервер на языке Go.
API должен принимать запросы и ответы в JSON.
Предусмотреть защиту API от атаки CSRF.
Надо реализовать 2 самопридуманные монеты fBTC, fETH (f - fake).
Для создания сущностей валют можно использовать мок (пародия на реальные
монеты BTC и ETH соответственно).
Для создания адреса кошелька можно использовать рандомный hash.
Для запуска бэкенда использовать Docker и его команды.
Необходимо сделать такие API endpoints:
1 Регистрация пользователя
Доступен всем.
Пароль от 8 до 50 знаков.
Добавить DNS валидацию домена в email.
Имя и фамилия допускается только Unicode и только символы.
Для пароля использовать алгоритм bcrypt или pbkdf2.
После регистрации пользователя, создаем кошельки каждой
монеты с соответствующими адресами. По умолчанию давать
пользователю по 100 монет каждой валюты.
2 Аутентификация и авторизация пользователя
Доступен всем.
Допускать имейлы только с настоящим доменом.
Для авторизации на API использовать JWT токен.
3 Список кошельков
Доступен только авторизованным.
API должен возвращать кошельки fBTC, fETH с адресами и балансами. Эти данные
должны быть фейковыми.
4 Перевод средств
Доступен только авторизованным.
Осуществлять только внутренний перевод средств с адреса на адрес.
5 Список транзакций -
Доступен только авторизованным.
API должен отдавать список транзакций с обязательными полями: сумма, комиссия,
дата транзакции, название валюты, адрес отправителя, адрес получателя.
Постраничная пагинация списка.
how to run:
prepare image:
docker build --tag projectx .
run image as container:
docker run --detach --publish 8081:8081 projectx