Бэкенд для проекта KNTista
- отслеживание активности на факультете:
- возможность заполнить справочники БД данными
- CRUD-операции со всеми сущностями
- создание DOCX-отчётов об активности
- параметризованный поиск по всем таблицам с пагинацией
- документация Swagger
- интеграция CI/CD
- авторизация JWT и OAuth
- логирование
- кеширование ответов сервера
- покрытие тестами
- Node.js — платформа для запуска JavaScript
- SWC — веб-сборщик (более быстрый, чем стандартный Babel)
- pnpm — пакетный менеджер
- TypeScript — язык программирования
- NestJS — основной бэкенд-фреймворк
- Fastify — фреймворк под капотом NestJS (более быстрый, чем стандартный Express)
- Drizzle — ORM
- Jest — фреймворк для тестирования
- Swagger — инструмент документирования API
- ESLint — статический анализатор кода
- Prettier — форматировщик кода
- Docker — платформа для контейнеризации
- Клонируйте репозиторий и перейдите в его папку.
- Создайте файл
.env
на основе .env.template и настройте все описанные там сервисы.
В частности сервер PostrgeSQL можно поднять как вручную, так и через Docker compose командой
docker-compose up -d
- Заполнить справочные таблицы данными можно командой:
Warning
Эта команда очистит все данные справочных таблиц перед их заполнением!
pnpm db:seed
Остальные данные можно внести в графическом режиме, открыв Drizzle Studio:
pnpm db:studio
- Установите Docker.
- Запустите сборку образа:
docker build -t kntista-api .
- Теперь запускать образ можно командой:
docker run -d --name kntista-api-standalone -p 3000:3000 kntista-api
- Установите Node.js и пакетный менеджер pnpm.
- Установите зависимости:
pnpm i
- Соберите проект:
pnpm build
- Теперь запускать проект можно командой:
pnpm start:prod
Запуск сервера в режиме отладки осуществляется командой:
pnpm start:debug
Документация API в Swagger UI, где его можно будет протестировать, при запуске на локалхосте со стандартными параметрами доступна по ссылке https://localhost:3000/docs.
Прочие скрипты, необходимые для запуска линтера, форматировщика, тестов и т. д. находятся в файле package.json.