Данные // Нужно синхронизировать в базу рейты криптовалют BTC/ETH/BCH. В качестве источника данных можно использовать https://www.cryptocompare.com/api/ (не используя сторонние либы для реализации работы по расписанию)
Данные обновляются каждые 15 секунд. Значение захардкожено в DataController.init().
Калькулятор(REST API) // Клиент может может отправить сумму в криптовалюте ее символ и время расчета, мы должны вернуть ему сумму в USD по ближайшему рейту на это время. Если время не передал то отдаем по последнему.
Заходим на http://localhost:8080/rates?sum=сумма_крипты&crypto=имя_крипты×tamp=YYYY-MM-DD HH24:MI:SS
Соответственно, поле timestamp можно проигнорировать, тогда будет возвращено ближайшее к текущему моменту значение стоимости крипты
Делаем простую веб страницу с 3 рейтами валют и обновлением их по сокету. Т.е. отправляем каждый новый рейт на фронты по сокету.(по верстке заморачиваться не надо главное логика)
Заходим на http://localhost:8080/static/websocket_test.html
Начальные данные появятся через секунду, далее обновление каждые 15 секунд.
Добавить возможность принудительного обновления всех рейтов через сокет на определенный таймстемп. Т.е. мы отправляем похожий запрос как через REST API(calc) только через сокеты со значением timestamp и все значения обновляются на фронтах на рейты ближайшее на это время время.
Там же (http://localhost:8080/static/websocket_test.html) в инпут вводим timestamp в формате YYYY-MM-DD HH24:MI:SS и жмем "Send". Данные по заданному времени будут выведены ниже.