Knowledge Base Manager — это полностековое приложение для управления документами, аудиториями, страницами и их зависимостями (Impact Analysis). Проект построен на базе современной микросервисной/монорепозиторной архитектуры с использованием Turborepo.
Самый быстрый и надежный способ запустить проект со всеми зависимостями (Backend + Frontend + База данных) — использовать Docker.
Выполните в корневой папке проекта следующую команду:
docker-compose up --buildПосле запуска сервисы будут доступны по адресам:
- Фронтенд (UI): http://localhost:3000
- Бэкенд (API): http://localhost:3001
- Swagger документация API: http://localhost:3001/api/docs
Примечание: При запуске через Docker база данных SQLite автоматически разворачивается и заполняется тестовыми данными (seed).
Если вы хотите запустить проект без Docker для дальнейшей разработки, убедитесь, что у вас установлен Node.js (v20+) и Yarn.
- Установите все зависимости в корне проекта:
yarn install- Запустите проект в режиме разработки одной командой (через Turborepo):
yarn devКоманда yarn dev одновременно поднимет:
- NestJS API на порту
3001(в режиме watch) - Next.js Web на порту
3000(в режиме watch)
Monorepo: Turborepo, Yarn Workspaces Backend: NestJS, Prisma ORM, SQLite, TypeScript Frontend: Next.js 16 (App Router), React 19, Redux Toolkit (RTK Query), Ant Design Инструменты: Docker, ESLint, TypeScript Strict Mode
TestTask/
├── apps/
│ ├── api/ # Бэкенд на NestJS
│ └── web/ # Фронтенд на Next.js
├── packages/
│ ├── eslint-config/ # Общие настройки линтера
│ ├── shared-types/ # Общие типы интерфейсов между API и WEB
│ └── tsconfig/ # Общие конфигурации TypeScript
├── docker-compose.yml # Файл развертывания проекта
└── package.json # Конфигурация Workspace
- Архитектура монорепозитория: Развернут проект на базе Turborepo и Yarn Workspaces. Выделены общие пакеты (настройки ESLint, TypeScript и
@kb/shared-typesдля сквозной типизации между фронтендом и бэкендом). - Backend (NestJS): Реализовано REST API с использованием Prisma ORM и базы данных SQLite. Настроена генерация начальных данных (seed) для быстрого старта.
- Frontend (Next.js & React): Создан пользовательский интерфейс с применением App Router, Ant Design и Redux Toolkit (RTK Query).
- Модульность и UI: Сложные интерфейсы (например, дашборды) декомпозированы на изолированные переиспользуемые компоненты с инкапсулированными стилями через SCSS Modules.
- Инфраструктура: Проект полностью докеризован (
docker-compose), что позволяет запускать всю связку (БД, API, Web) одной командой.
- Тестирование: Фокус был сделан на реализации базового функционала, архитектуры монорепозитория и сквозной типизации. Из-за сжатых сроков на покрытие кода Unit- и E2E-тестами времени не хватило (заготовки тестов были удалены для сохранения чистоты кодовой базы).
- Аутентификация и безопасность: Не реализована система авторизации (например, JWT), так как приоритет отдавался основной бизнес-логике (управление документами и аудиториями).
- Глубокая обработка ошибок и оптимизация: Не везде внедрены
Error Boundariesна фронтенде и расширенные глобальные фильтры исключений на бэкенде. Оптимизация рендеринга также была отложена.
- База данных: Миграция с локальной SQLite на полноценную PostgreSQL для production-использования.
- Масштабируемость Frontend: Переход на методологию Feature-Sliced Design (FSD) для более четкого разделения зон ответственности в UI.
- CI/CD и Качество кода: Внедрение пайплайнов (GitHub Actions) для автоматической сборки, линтинга и проверки типов, а также написание сквозных тестов на Playwright или Cypress.
- UI/UX: Интеграция Storybook для разработки и документирования дизайн-системы.