diff --git a/server/routers/kfu-m-24-1/eng-it-lean/units/data/job-interview.md b/server/routers/kfu-m-24-1/eng-it-lean/units/data/job-interview.md
new file mode 100644
index 0000000..0868ec1
--- /dev/null
+++ b/server/routers/kfu-m-24-1/eng-it-lean/units/data/job-interview.md
@@ -0,0 +1,70 @@
+### Цель урока:
+Изучение ключевых слов и фраз, связанных с процессом трудоустройства, а также освоение базовой структуры диалога на собеседовании.
+
+### Лексика:
+**Базовая лексика:**
+1. **Job interview** – собеседование при приеме на работу
+2. **Resume / CV** – резюме
+3. **Cover letter** – сопроводительное письмо
+4. **Interviewer** – интервьюер
+5. **Application form** – анкета при приеме на работу
+6. **Salary** – зарплата
+7. **Benefits** – льготы
+
+**Расширенная лексика:**
+1. **To apply for a job** – подавать заявку на работу
+2. **To be offered the job** – получить предложение о работе
+3. **To negotiate salary** – вести переговоры о зарплате
+4. **To accept the offer** – принять предложение
+5. **To decline the offer** – отклонить предложение
+6. **To resign from your current position** – подать заявление об уходе с текущей работы
+7. **To start working at the company** – начать работать в компании
+8. **Probation period** – испытательный срок
+9. **References** – рекомендации
+10. **Work experience** – опыт работы
+
+### Грамматический фокус:
+**Правило:**
+Структура простого вопроса на английском языке:
+- Общий вопрос: "Do you have any questions?"
+- Специальный вопрос: "What are your strengths and weaknesses?"
+
+**Пример:**
+Общий вопрос: "How do you feel about this job opportunity?"
+Специальный вопрос: "Can you tell me about your previous work experience?"
+
+**Типичные ошибки и как их избежать:**
+Ошибка: Неправильное использование порядка слов в вопросах.
+Решение: Практиковать построение вопросов до автоматизма.
+
+### Контекстуализация:
+**Текст для анализа:**
+"I'm applying for the position of a marketing manager at XYZ Company. Here is my resume."
+"Thank you for considering me. Can you please tell me more about the responsibilities of this role?"
+"Sure, let me give you an overview."
+
+### Упражнения:
+**Письменное задание:**
+Составьте список из 5 вопросов, которые вы бы задали на собеседовании. Используйте простые вопросы и специальные вопросы.
+
+**Устная практика:**
+Ролевая игра: один студент играет роль интервьюера, другой – кандидата на должность. Меняйтесь ролями.
+
+**Аналитическое задание:**
+Найдите и исправьте ошибки в следующем письме:
+"Dear HR Manager,
+
+My name is John Smith and I am writing to apply for the position of Sales Representative at ABC Inc. I enclose my resume for your review.
+
+I believe that my skills and experiences make me an ideal candidate for this position. In my current role as a sales representative at XYZ Corp, I have consistently met or exceeded my sales targets. Additionally, I possess strong communication and negotiation skills which will enable me to effectively represent your products and services.
+
+If you would like to schedule an interview, please contact me at your convenience. Thank you for your time and consideration.
+
+Best regards,
+John Smith"
+
+### Домашнее задание:
+**Текстовые задачи:**
+1. Написать сопроводительное письмо для конкретной вакансии, используя расширенную лексику.
+2. Составить резюме для воображаемой должности, включая все необходимые разделы.
+3. Перевести текст собеседования на английский язык, сохраняя структуру и смысл.
\ No newline at end of file
diff --git a/server/routers/kfu-m-24-1/eng-it-lean/units/data/unit-2.md b/server/routers/kfu-m-24-1/eng-it-lean/units/data/unit-2.md
new file mode 100644
index 0000000..ca55259
--- /dev/null
+++ b/server/routers/kfu-m-24-1/eng-it-lean/units/data/unit-2.md
@@ -0,0 +1,74 @@
+# Цель урока
+
+Изучение структуры документации программы с блоком кода.
+
+## Лексика
+
+### Базовая лексика:
+
+- Documentation – документация
+- Code block – блок кода
+- Description – описание
+- Function – функция
+- Variable – переменная
+- Comment – комментарий
+
+### Расширенная лексика:
+
+- API – интерфейс прикладного программирования
+- Method – метод
+- Class – класс
+- Library – библиотека
+- Framework – фреймворк
+
+## Грамматический фокус
+
+Правило: Структура документации программы должна включать краткое описание, блок кода и примеры использования.
+
+Пример:
+
+Documentation for a program typically includes the following sections:
+
+1. **Description**: A brief overview of what the program does and its purpose.
+2. **Code Block**: The actual code that implements the functionality described in the first section.
+3. **Examples**: One or more examples demonstrating how to use the features described in the documentation.
+
+Типичные ошибки и как их избежать: Ошибки могут возникнуть из-за недостаточного описания функционала или неправильного форматирования кода. Чтобы избежать этого, важно тщательно проработать каждый раздел документации и убедиться, что все примеры корректны и понятны.
+
+## Контекстуализация
+
+Текст для анализа:
+
+**Description**: This is a simple Python script that calculates the average value of a list of numbers.
+
+**Code Block**: 
+```python
+def calculate_average(numbers):
+    """Calculate the average value of a list of numbers"""
+    return sum(numbers)/len(numbers)
+```
+
+Примеры использования:
+
+```python
+# Example usage
+numbers = [10, 20, 30]
+average = calculate_average(numbers)
+print("The average value of the list", numbers, "is", average)
+```
+
+## Упражнения
+
+Письменное задание: Написать документацию для простой функции на языке Python, которая принимает список чисел и возвращает среднее значение. Включить описание, код блока и пример использования.
+
+Устная практика: Ролевой диалог между разработчиком и техническим писателем о структуре и содержании документации программы.
+
+Аналитическое задание: Проанализировать существующую документацию программы и найти ошибки или неясности. Предложить улучшения.
+
+## Домашнее задание
+
+Текстовые задачи:
+
+- Написать документацию для другой функции на языке Python, используя правильную структуру.
+- Исправить ошибки в существующей документации программы.
+- Перевести фрагмент документации на русский язык, сохраняя точность и стиль.
diff --git a/server/routers/kfu-m-24-1/eng-it-lean/units/data/units.json b/server/routers/kfu-m-24-1/eng-it-lean/units/data/units.json
index 88e5812..d0a4dd7 100644
--- a/server/routers/kfu-m-24-1/eng-it-lean/units/data/units.json
+++ b/server/routers/kfu-m-24-1/eng-it-lean/units/data/units.json
@@ -1 +1 @@
-[{"id":0,"filename":"unit-1","name":"Unit 1: Multifunctional Verbs: Be, Have, and Do"}]
\ No newline at end of file
+[{"id":1,"filename":"unit-1","name":"Unit 1: Multifunctional Verbs: Be, Have, and Do"},{"id":2,"filename":"unit-2","name":"Документация программы"},{"id":3,"fileName":"job-interview","name":"Job Interview"}]
\ No newline at end of file
diff --git a/server/routers/kfu-m-24-1/eng-it-lean/units/index.js b/server/routers/kfu-m-24-1/eng-it-lean/units/index.js
index 8e131a5..4824386 100644
--- a/server/routers/kfu-m-24-1/eng-it-lean/units/index.js
+++ b/server/routers/kfu-m-24-1/eng-it-lean/units/index.js
@@ -10,33 +10,37 @@ router.get('/', (req, res) => {
 });
 
 router.put('/', (req, res) => {
-	const newUnit = req.body
+  const newUnit = req.body;
 
-	if (!newUnit) {
-		return res.status(400).send('No new unit to be added')
-	}
+  if (!newUnit) {
+    return res.status(400).send('No new unit to be added');
+  }
 
-	if (!data) {
-		return res.status(500).send('No data to be updated')
-	}
+  if (!data) {
+    return res.status(500).send('No data to be updated');
+  }
 
-	data.push({ "id": data.length, ...newUnit })
+  const newId = data.length + 1;
+  const fileName = newUnit.name.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
+  fs.writeFileSync(path.join(__dirname, 'data', `${fileName}.md`), newUnit.content);
 
-	fs.writeFileSync(path.join(__dirname, 'data', 'units.json'), JSON.stringify(data));
-	res.status(200).send(data);
+  data.push({ id: newId, fileName: fileName, name: newUnit.name });
+
+  fs.writeFileSync(path.join(__dirname, 'data', 'units.json'), JSON.stringify(data));
+  res.status(200).send(data);
 });
 
 router.delete('/:id', (req, res) => {
-	const id = parseInt(req.params.id);
-	const index = data.findIndex((unit) => unit.id === id);
+  const id = parseInt(req.params.id);
+  const index = data.findIndex((unit) => unit.id === id);
 
-	if (index < 0) {
-		return res.status(404).send('Not found');
-	}
+  if (index < 0) {
+    return res.status(404).send('Not found');
+  }
 
-	data.splice(index, 1);
-	fs.writeFileSync(path.join(__dirname, 'data', 'units.json'), JSON.stringify(data));
-	res.send({ message: `Unit with ID ${id} deleted` });
+  data.splice(index, 1);
+  fs.writeFileSync(path.join(__dirname, 'data', 'units.json'), JSON.stringify(data));
+  res.send({ message: `Unit with ID ${id} deleted` });
 });
 
 router.get('/:id', (req, res) => {