Приложение на Nest.js должно работать аналогично ранее созданному.
В файле Readme.md должна быть таблица со сравнением производительности Nestjs express vs Nestjs fastify
- Соответствующий POST-запрос на эндпоинт
/fileпозволяет загрузить файл и сохранить его на сервере с приложением плюс 30 баллов - GET-запрос на эндпоинт
/file/:filenameпозволяет получить загруженный на сервер файл плюс 30 баллов - Приходящие со стороны клиента DTO валидируются с использованием
ValidationPipelineплюс 30 баллов
Guardsдолжны использоваться для работы с авторизацией/аутентификацией плюс 30 баллов- В приложении должны использоваться модули для разбиения структуры приложения на различные части (
User,Board,Task,File) плюс 30 баллов Exception filtersдолжны использоваться для обработки исключений в приложении плюс 30 баллов- Для работы с базой данных должна использоваться ORM, совместимая с Nest.js (
@nestjs/typeorm, Prisma, и т.д.) плюс 30 баллов - Для логирования должен использоваться встроенный
Loggerили кастомная имплементация плюс 30 баллов - Все внешние зависимости для модулей/классов должны предоставляться с помощью механизма
dependency injectionплюс 30 баллов - В зависисимости от переменной окружения
USE_FASTIFYNest.jsдолжен использовать илиexpressилиfastifyплюс 30 баллов - Необходимо сравнить производительность
Nest.jsс использованиемexpressиfastify(можно использовать для этих целей artillery) плюс 30 баллов
- Наличие изменений в тестах либо в workflow минус 200 баллов
- Внесение изменений в репозиторий после дедлайна не считая коммиты, вносящие изменения только в
Readme.mdи другую документацию) минус 30% от максимального балла за задание (для этого задания 99 баллов) - За отсутствие отдельной ветки для разработки минус 20 баллов
- За отсутствие
Pull Requestминус 20 баллов - За неполную информацию в описании
Pull Request(отсутствует либо некорректен один из 3 обязательных пунктов) минус 10 баллов - За каждую ошибку линтера при запуске
npm run lintна основе локального конфига минус 10 баллов (именноerrors, неwarnings) - За каждый непроходящий тест npm run test:auth минус 20 баллов
- Меньше 3 коммитов (не считая коммиты, вносящие изменения только в
Readme.mdи другую документацию) — минус 20 баллов
- Для проведения load testing берем один модуль нашего приложения и тестриуем все CRUD методы нашего ресурса (какой ресурс вы будете тестировать вы можете выбрать сами). Если для тестируемого эндпоинта необходима авторизация, то необходимо получить токен заранее и передвать его с каждым запросом.
Вот пример репорта, полученного с помощью vegeta, который вы должны прикрепить в ваш Readme.md (инструмент для load tesing может использоваться любой)
| Requests | [total, rate, throughput] | 65584, 6558.34, 6558.26 |
| Duration | [total, attack, wait] | 10s, 10s, 130.149µs |
| Latencies | [min, mean, 50, 90, 95, 99, max] | 122.225µs, 151.803µs, 147.911µs, 160.265µs, 164.189µs, 194.74µs, 3.094ms |
| Success | [ratio] | 100.00% |
| Status Codes | [code:count] | 200:65584 |
| Requests | [total, rate, throughput] | 118489, 11848.94, 11848.84 |
| Duration | [total, attack, wait] | 10s, 10s, 80.298µs |
| Latencies | [min, mean, 50, 90, 95, 99, max] | 63.858µs, 83.763µs, 81.544µs, 88.909µs, 92.922µs, 136.839µs, 8.852ms |
| Success | [ratio] | 100.00% |
| Status Codes | [code:count] | 200:118489 |