# Amwork Backend Onboarding

<br />

### Estimated onboarding time: 15h

<br />

## 0. Изучение принципов функционирования системы, основные модули, конструктор, почта и чат (3h)

- Обзор системы - [Видео](https://youtu.be/4ja2NV0jzi4);

- Миссия и ЦКП (аналогично, нужен доступ) – [Документ](https://docs.google.com/document/d/1Cr4F3NGfqmaKGa1thj6ZEmk3qBEuTAJOpXvTWnHcSHQ/edit#heading=h.583bnomucdu0);

- Должностная инструкция бэкенд-разработчика (аналогично, нужен доступ) – TBD;

- Как давать и получать обратную связь – [Документ](https://docs.google.com/document/d/199JyxIyxR32FzkCbMSqdT5UgY8fsNb93KhXXV8SvV5E/edit);

- Глоссарий терминологии – [Документ](https://docs.google.com/document/d/1-F13hYkrgAkKiEF4qiYQN3ewqOpIxxbhIOQAnUkK8h8/edit);

– Правило итеративного рефакторинга – [Статья](https://habr.com/ru/companies/piter/articles/431670/).

- Cоздать несколько новых **секций** в системе, организовать разные **связи**, тонкую настройку;
- Изучить базовые поля карточки сущности, фид, задачи;
- Рассмотреть **раздел настроек**, поменять глобальные настройки аккаунта.

<br />

## 1. Введение, настройка окружения (3h)

- **Установка необходимых библиотек**

Для работы с бэкендом необходимо установить менеджер пакетов [Yarn](https://v3.yarnpkg.com/getting-started/install).

- **Клонирование репозитория** с проектом, установка зависимостей:

```bash
# Создание папки проекта
mkdir amwork
cd amwork

# Клонирование репозитория
git clone git@gitlab.amwork.app:amwork/backend.git
cd backend

# Установка зависимостей
yarn
```

- **Запуск проекта**, изучение скриптов в `package.json`:

```bash
# Запуск проекта в режиме development
yarn start:dev

# Сборка проекта
yarn build

# Запуск проекта в режиме production
yarn start:prod

# Запуск линтера
yarn lint

# Запуск применения миграций TypeORM
yarn to:rm

# Создание новой миграции TypeORM
yarn to:cm MigrationName

```

<br />

## 2. Изучение построения директорий, разбивку на модули, названия файлов (3h)

- Посмотреть на **структуру директорий**, разобраться, какие компоненты находятся в каких директориях, какие файлы в них находятся, какие названия файлов используются:

```mathematica
migrations
├── archive
│   └── ...
└── ...
src
├── app.module.ts
├── common
│   ├── constants
│   │   └── ...
│   ├── decorators
│   │   └── ...
│   └── ...
│
├── database
│   ├── services
│   ├── transformers
│   └── ...
│
├── documentation
│
├── middleware
│
├── modules
│   ├── iam
│   │   └── ...
│   ├── multichat
│   │   └── ...
│   └── ...
│
├── OldStyleModules
└── ...
```

- Изучить **нейминги** файлов и структурных компонентов. Обратить внимание на то что нейминг в старых модулях отличается от стандарта для _NestJs_. Все новые модули и доработки должны соответствовать неймингу новых модулей (стандартам _NestJs_).

<br />

## 3. Изучение структуры базы данных (2h)

- Схема структуры таблиц (нужен доступ) – [Документ](https://drive.google.com/file/d/1MOVtOJ8TLtT3h-cI5CqLcdqzBbRz-5fB/view?usp=sharing);
- Изучить **актуальную** схему базы данных.

<br />

## 4. Общие вопросы по системе, консультации по работе с проектом (4h)
