Nestjs backend application
Целью тестового задания является проверка наличия знаний у кандидата или способности к самостоятельному изучению технологий и инструментов, требуемых для выполнения задания.
- Задание должно быть решено на Typescript
- Использовать фреймворк NestJS
- Использовать PostgreSQL в качестве базы данных
- Использовать TypeORM для работы с БД
- Использовать Queues для работы с MQ c използованием Redis
- Использовать Socket.io для обеспечивающая двустороннюю связь между клиентами и серверами в режиме реального времени
- Использовать Swagger
- Использовать Docker. Создайте docker-compose.yaml с помощью которого можно было запустит вес проект
- В результате выполнения задачи должен быть реализован GraphQL API с ипользованием code-first подхода
- Использовать фреймворк Vue3 для Dashboard, шаблон дизайна на ваше усмотрение.
Перед вами стоит задача - разработать бэкенд и фронтэнд для хранения личного расписания, состоящего из множества мероприятий.
- Мероприятие должно иметь следующие поля:
- Дата начала
- Дата окончания
- Наименование
- Описание
- У пользователя должна быть возможность
- Привязать мероприятие к местоположению
- Создание мероприятия
- Редактирование мероприятия
- Удаление мероприятия
- Получение списка мероприятий с фильтрами по:
- Интервалу дат
- Привязанной сущности местоположения
- Создание местоположения
- Редактирование местоположения
- Удаление местоположения
- Получение списка доступных местоположений
Добавить в API авторизацию при помощи JWT и сделать так, чтобы множество пользователей могло вести свои личные расписания одновременно.
При проверке тестового задания, в первую очередь, мы проверим функциональность приложения, соответствие техническому заданию, а код — соответствует ли он лучшим практикам, файловой структуре, чистоте и читабельности кода.
Если есть сомнения по деталям - принимайте решение сами, но в свой файл README.md рекомендуем записывать вопросы и принятые по ним решения. В будущем мы можем обсудить это во время интервью. Если у тебя есть
Certainly! Here's an explanation of the task in Uzbek language:
Test vazifa maqsadi, kandidatning bilimlarini yoki kerakli texnologiyalarni va vositalarni o'z-o'zini o'rganish qobiliyatini tekshirishdir, qo'llaniladigan yechimni bajarish uchun.
- Vazifa TypeScriptda hal qilingan bo'lishi kerak.
- NestJS freymvorkidan foydalanish.
- Bazaga PostgreSQLni ishlatish.
- Bazaga ishlash uchun TypeORMni ishlatish.
- Habarni tashqariga yetkazish uchun Queuesni, Redisdan foydalanish bilan ishlating.
- Mijozlar va serverlar o'rtasida real vaqtda ikkita yo'nalishli aloqani ta'minlash uchun Socket.ioni ishlatish.
- Swaggerni ishlatish.
- Dockerni ishlatish. Loyiha o'rnatilishi oson bo'lishi uchun
docker-compose.yaml
yaratish. - Natijada, vazifa natijasida kod-avvali yondashuvni qo'llaydigan GraphQL APIni amalga oshirilishi kerak.
- Dashboard uchun dizayn shabloniga o'z do'stingiz bo'yicha Vue3 freymvorkidan foydalanish.
Vazifa - bir nechta tadbirlardan iborat shaxsiy jadvalni saqlash uchun backend va frontendni rivojlantirishdir.
- Tadbir quyidagi maydonlarga ega bo'lishi kerak:
- Boshlanish san'ati
- Yakunlanish san'ati
- Ism
- Ta'rif
- Foydalanuvchiga quyidagi imkoniyatlar berilishi kerak:
- Tadbirni joylangan manzilga bog'lash
- Tadbir yaratish.
- Tadbirni tahrirlash.
- Tadbirni o'chirish.
- Tadbirlar ro'yxatini quyidagi parametrlar bo'yicha olish:
- Sana oraliqi
- Bog'langan joylashuv entiteti
- Joylashuvni yaratish.
- Joylashuvni tahrirlash.
- Joylashuvni o'chirish.
- mavjud joylashuvlarni ro'yxatini olish.
Agar siz JWT asosida autentifikatsiyani amalga oshirishni xohlaysiz:
-
Lozim bo'lgan paketlarni o'rnatish:
npm install @nestjs/jwt passport passport-jwt
-
Autentifikatsiya xizmatini va JWT strategiyasini yaratish.
-
GraphQL resolverylar yoki REST endpointlari uchun autentifikatsiya himoyalari amalga oshirish.
Test vazifasini tekshirishda, avvalo, ilova funktsionali, texnik talablar, va kodning fayl tuzilishi, kodning toza va o'qilishi talab etiladigan ta'limotlarga muvofiqlikni tekshiriladi.
Agar ma'lumotlarda, tafsilotlarda qiyinliklar bo'lsa, o'z qaroringizni qabul qiling, ammo savollaringiz va qabul qilingan qarorlaringizni o'z README.md faylingizda yozishni maslahat beramiz. Kelasi davlatda, muloqot o'tkazish va savollaringizni muloqotda baham ko'rishimiz mumkin. Agar sizda savollar bo'lsa, ularni so'rasangiz, iltimos, so'rang.