- Нужно написать CRUD(аббривиатура от Create Read Update Delete) приложение: небольшое хранилище заметок(требования к нему - ниже)
- Написать тесты на ваше приложение(требуемое покрытие - 20%)
- Настроить CI/CD
- Ваше приложение доступно из интернета
- Приложение работает согласно требованиям
- У вас есть CI, он работает корректно
- В CI настроены 3 джобы: build(проверяет что ваш код билдится), test(гоняет по вашему коду тесты и проверяет, что они успешно проходят), lint(гоняет линтеры по вашему коду)
- По умолчанию в golangci-lint использовано 10 линтеров. Создайте свой конфигурационный файл, и включите помимо 10 дефолтных, еще 15 наиболее полезных на ваш взгляд линтеров (полный список линтеров тут https://golangci-lint.run/usage/linters/)
- При мерже/пуше в мастер должна срабатывать 4ая джоба: deploy, которая будет раскладывать ваше приложение на сервер
Здесь требования к вашему приложению, что вы будете деплоить на сервер. Приложение небольшое и несложное, основная задача дз будет именно в ci/cd. Хранить данные можно в памяти.
Оперировать нужно сущностью Note с полями:
- ID - число, инкрементальный ID
- Text - строка, текст заметки
- CreatedAt - время создания(изменяется только бекендом, с клиента не передаем)
- UpdatedAt - время последнего обновления(изменяется только бекендом, с клиента не передаем)
Ваше приложение должно принимать и отвечать в только в json формате. Также оно должно удовлетворять следующей апишке:
- GET /note/{id} - получить Note по id
- POST /note - создать Note
- PUT /note/{id} - изменить Note по id
- DELETE /note/{id} - удаляем Note по id
- GET /note - получить список Note, запрос должен уметь обрабатывать query-параметр: order_by("id","text","created_at","updated_at"), который указывает, что перед отдачей список нужно отсортировать по такому-то полю