Начало работы:

О проекте:

Цель - реализовать простой и удобный движок для обменников криптовалют.
Язык, на котором написан движок - Kotlin. Он быстро работает и имеет удобные функции, которые часто нужны (filter, map). Также в нем есть поддержка потоков, это позволяет сделать одновременную загрузку курсов с нескольких бирж.

Основные функции:

Сайт и админка - это отдельный проект. Он реализован на React и JavaScript. Но вы можете выбрать любой другой язык.

API:

API создавалось с учетом принципов REST. Я старался сохранить тот же маршрут, например /api/options, но добавить несколько методов: GET для чтения данных с сервера, PUT для добавления новых записей, POST для обновления существующих и DELETE для удаления.

Метод GET доступен всем, кто может заходить в панель управления.
PUT, POST, DELETE - только для ролей, которые имеют соответствующие права.
Также есть маршруты с методом GET, которые открыты всему миру. Их можно открывать без прохождения аутентификации (не нужно вводить логин и пароль и получать cookie). Подробнее о правах..

Ответ на запрос всегда отправляется в формате JSON.

{
  "type": "error",  
  "message": "An unexpected server error occurred",
  "data": null,
  "action": null
}

Если это предусмотрено маршрутом, data может быть разбит на страницы.

{  
  "total": 100,
  "page": 1,
  "pageSize": 25,
  "items": []
}

У каждого маршрута могут быть разные HTTP-коды. Общее правило:

При отправке запросов на редактирование (PUT, POST, DELETE) в лог-файле делается отметка - какой пользователь и в какое время это сделал.

Отладка:

Если в работе приложения возникли проблемы, можно включить отладку в файле logback.xml. Для этого в конце файла level="info" нужно заменить на level="debug":

    <root level="info">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>

Применяется популярная библиотека log4j. Файлы хранятся в папке logs. Каждый день создается новый файл. Можно выбрать другой интервал или сжимать их в архив.