Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Knowledge Base Manager

Knowledge Base Manager — это полностековое приложение для управления документами, аудиториями, страницами и их зависимостями (Impact Analysis). Проект построен на базе современной микросервисной/монорепозиторной архитектуры с использованием Turborepo.

🚀 Запуск проекта одной командой (Docker)

Самый быстрый и надежный способ запустить проект со всеми зависимостями (Backend + Frontend + База данных) — использовать Docker.

Выполните в корневой папке проекта следующую команду:

docker-compose up --build

После запуска сервисы будут доступны по адресам:

Примечание: При запуске через Docker база данных SQLite автоматически разворачивается и заполняется тестовыми данными (seed).


🛠 Запуск проекта для локальной разработки (Node.js)

Если вы хотите запустить проект без Docker для дальнейшей разработки, убедитесь, что у вас установлен Node.js (v20+) и Yarn.

  1. Установите все зависимости в корне проекта:
yarn install
  1. Запустите проект в режиме разработки одной командой (через 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 для разработки и документирования дизайн-системы.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages