diff --git a/.idea/caches/deviceStreaming.xml b/.idea/caches/deviceStreaming.xml
new file mode 100644
index 00000000..f883ea2f
--- /dev/null
+++ b/.idea/caches/deviceStreaming.xml
@@ -0,0 +1,1462 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/deviceManager.xml b/.idea/deviceManager.xml
new file mode 100644
index 00000000..91f95584
--- /dev/null
+++ b/.idea/deviceManager.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/markdown.xml b/.idea/markdown.xml
new file mode 100644
index 00000000..c61ea334
--- /dev/null
+++ b/.idea/markdown.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 9c8e7400..49f7d9bd 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,5 @@
-
-
+
\ No newline at end of file
diff --git a/src/main/kotlin/Main.kt b/src/main/kotlin/Main.kt
index aade54c5..e67cdeb8 100644
--- a/src/main/kotlin/Main.kt
+++ b/src/main/kotlin/Main.kt
@@ -1,3 +1,5 @@
-fun main(args: Array) {
- println("Hello World!")
-}
\ No newline at end of file
+import archive.showArchiveMenu
+
+fun main() {
+ showArchiveMenu()
+}
diff --git a/src/main/kotlin/archive/Archive.kt b/src/main/kotlin/archive/Archive.kt
new file mode 100644
index 00000000..b61d2693
--- /dev/null
+++ b/src/main/kotlin/archive/Archive.kt
@@ -0,0 +1,8 @@
+package archive
+
+import note.Note
+
+data class Archive(
+ val name: String,
+ val notes: MutableList = mutableListOf()
+)
diff --git a/src/main/kotlin/archive/ArchiveMenu.kt b/src/main/kotlin/archive/ArchiveMenu.kt
new file mode 100644
index 00000000..5ed3fbb6
--- /dev/null
+++ b/src/main/kotlin/archive/ArchiveMenu.kt
@@ -0,0 +1,41 @@
+package archive
+
+import menu.Menu
+import storage.Storage
+import note.showNotesMenu
+import java.util.Scanner
+import kotlin.system.exitProcess
+
+fun showArchiveMenu() {
+ val scanner = Scanner(System.`in`)
+
+ while (true) {
+ val menu = Menu("Список архивов:")
+
+ menu.addItem("Создать архив") {
+ print("Введите название архива: ")
+ val name = scanner.nextLine().trim()
+
+ if (name.isEmpty()) {
+ println("Ошибка: имя архива не может быть пустым.")
+ return@addItem
+ }
+
+ Storage.archives.add(Archive(name))
+ println("Архив \"$name\" создан.")
+ }
+
+ Storage.archives.forEach { archive ->
+ menu.addItem(archive.name) {
+ showNotesMenu(archive)
+ }
+ }
+
+ menu.addItem("Выход из программы") {
+ println("Завершение работы.")
+ exitProcess(0)
+ }
+
+ menu.show()
+ }
+}
diff --git a/src/main/kotlin/menu/menu.kt b/src/main/kotlin/menu/menu.kt
new file mode 100644
index 00000000..4d8fd03f
--- /dev/null
+++ b/src/main/kotlin/menu/menu.kt
@@ -0,0 +1,40 @@
+package menu
+
+import java.util.Scanner
+
+class Menu(
+ private val title: String,
+ private val items: MutableList Unit>> = mutableListOf()
+) {
+ private val scanner = Scanner(System.`in`)
+
+ fun addItem(name: String, action: () -> Unit) {
+ items.add(name to action)
+ }
+
+ fun show() {
+ while (true) {
+ println(" $title ")
+ items.forEachIndexed { index, item ->
+ println("${index + 1}. ${item.first}")
+ }
+
+ print("Введите номер пункта: ")
+ val input = scanner.nextLine()
+
+ val choice = input.toIntOrNull()
+ if (choice == null) {
+ println("Ошибка: нужно вводить цифру.")
+ continue
+ }
+
+ if (choice !in 1..items.size) {
+ println("Ошибка: пункта с таким номером нет.")
+ continue
+ }
+
+ items[choice - 1].second.invoke()
+ break
+ }
+ }
+}
diff --git a/src/main/kotlin/note/Note.kt b/src/main/kotlin/note/Note.kt
new file mode 100644
index 00000000..711c0450
--- /dev/null
+++ b/src/main/kotlin/note/Note.kt
@@ -0,0 +1,6 @@
+package note
+
+data class Note(
+ val name: String,
+ val content: String
+)
diff --git a/src/main/kotlin/note/NotesMenu.kt b/src/main/kotlin/note/NotesMenu.kt
new file mode 100644
index 00000000..56186818
--- /dev/null
+++ b/src/main/kotlin/note/NotesMenu.kt
@@ -0,0 +1,46 @@
+package note
+
+import archive.Archive
+import menu.Menu
+import java.util.Scanner
+
+fun showNotesMenu(archive: Archive) {
+ val scanner = Scanner(System.`in`)
+ var exit = false
+
+ while (!exit) {
+ val menu = Menu("Заметки архива \"${archive.name}\"")
+
+ menu.addItem("Создать заметку") {
+ print("Введите название заметки: ")
+ val name = scanner.nextLine().trim()
+ if (name.isEmpty()) {
+ println("Ошибка: имя заметки не может быть пустым.")
+ return@addItem
+ }
+
+ print("Введите текст заметки: ")
+ val content = scanner.nextLine().trim()
+ if (content.isEmpty()) {
+ println("Ошибка: текст заметки не может быть пустым.")
+ return@addItem
+ }
+
+ archive.notes.add(Note(name, content))
+ println("Заметка \"$name\" создана.")
+ }
+
+ archive.notes.forEach { note ->
+ menu.addItem(note.name) {
+ println("\n=== ${note.name} ===")
+ println(note.content)
+ }
+ }
+
+ menu.addItem("Назад") {
+ exit = true
+ }
+
+ menu.show()
+ }
+}
diff --git a/src/main/kotlin/storage/Storage.kt b/src/main/kotlin/storage/Storage.kt
new file mode 100644
index 00000000..98b3e283
--- /dev/null
+++ b/src/main/kotlin/storage/Storage.kt
@@ -0,0 +1,7 @@
+package storage
+
+import archive.Archive
+
+object Storage {
+ val archives = mutableListOf()
+}