backend сервис "Another Knowelege Base"
Схема БД описана в db.xml просмотреть можно на сайте https://sql.toad.cz/? -> "Сохранить/Загрузить"->Скопировать содержимое файла и вставить в поле "Ввод/вывод"->"Загрузить XML" Импортируйте Настройки Postman
- Another Knowelege Base.postman_collection.json - Postman Collection v2.1
- AnotherKnowelegeBase.postman_environment - Postman Environment
Варианты запуска:
- запуск в DockerCompose
cd Another-Knowelege-Base
docker-compose -f .\docker-compose-dev.yml up --build
- запуск в node.js + mongoDB - предполагается что установлена и доступна по 127.0.0.1:27017/knowelege
cd Another-Knowelege-Base
npm i
npm start
Тестовое задание
Требуется написать backend сервис "Another Knowelege Base", который:
- хранил статьи базы знаний. Статья должна иметь следующие аттрибуты:
- заголовок
- содержание
- тэги статьи
- признак "публичная" / "внутренняя"
- любый другие атрибуты на усмотрение разработчика или если они требуются для реализации
- позволял через REST интерфейс добавлять статьи / изменять атрибуты статей / удалять статьи
- позволял через REST интрефейс получать статьи
- по одной
- списком
- списком с фильтрацией по тегам
- хранил и авторизовывал пользователей. Пользователь должен иметь следующие втрибуты:
- емайл
- любые другие атрибуты на усмотрение разработчика или если они требуются для реализации
- осуществлял контроль доступа к статьям и операциям над ними
- авторизованные пользователи могут создавать, изменять, удалять статьи и пользователей
- неавторизованный пользователи могут лишь получать статьи, у которых установлен атрибут "публичная" и не могут создавать / изменять / удалять статьи и пользователей
Решение должно быть предоставлено в виде git репозитория / архива с проектом (zip/tar.gz/tar.bz), который должлен содержать:
- исходный код
- инструкции по сборке / разворачиванию приложения и его зависимостей
- любые другие файлы при необходимости
При решении задания:
- использовать только nodeJS (JS/TS по выбору)
- можно использовать любые DB, но с тем пониманием, чтобы предоставить обоснование сделанного выбора по требованию
- можно использовать любые библиотеки, но с тем пониманием, чтобы предоставить обоснование сделанного выбора по требованию
Тесты:
- на усмотрение разработчика, но с тем пониманием, чтобы предоставить обоснование сделанного выбора по требованию