Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Варіанти
Варіант 1. Щоденник подій
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Щоденник подій»: список, деталі, редагування, SQLite через Exposed. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Щоденник подій»: список, деталі, редагування, SQLite через Exposed. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Щоденник подій»: список, деталі, редагування, SQLite через Exposed. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 2. Домашня бібліотека
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Домашня бібліотека»: каталог, деталі книги, видачі друзям. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Домашня бібліотека»: каталог, деталі книги, видачі друзям. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Домашня бібліотека»: каталог, деталі книги, видачі друзям. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 3. Трекер витрат
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Трекер витрат»: категорії, записи, звіт за місяць. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Трекер витрат»: категорії, записи, звіт за місяць. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Трекер витрат»: категорії, записи, звіт за місяць. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 4. Кулінарна книга
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Кулінарна книга»: рецепти, пошук, додавання інгредієнтів. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Кулінарна книга»: рецепти, пошук, додавання інгредієнтів. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Кулінарна книга»: рецепти, пошук, додавання інгредієнтів. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 5. Облік тренувань
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Облік тренувань»: вправи, підходи, історія прогресу. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Облік тренувань»: вправи, підходи, історія прогресу. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Облік тренувань»: вправи, підходи, історія прогресу. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 6. Контакти
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Контакти»: CRUD, групи, пошук за іменем. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Контакти»: CRUD, групи, пошук за іменем. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Контакти»: CRUD, групи, пошук за іменем. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 7. Завдання команди
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Завдання команди»: проєкти, задачі, зміна статусів. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Завдання команди»: проєкти, задачі, зміна статусів. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Завдання команди»: проєкти, задачі, зміна статусів. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 8. Вивчення слів
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Вивчення слів»: словник, картки, статистика прогресу. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Вивчення слів»: словник, картки, статистика прогресу. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Вивчення слів»: словник, картки, статистика прогресу. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 9. Фільмотека
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Фільмотека»: переглянуті фільми, оцінки, фільтри. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Фільмотека»: переглянуті фільми, оцінки, фільтри. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Фільмотека»: переглянуті фільми, оцінки, фільтри. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 10. Домашній інвентар
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Домашній інвентар»: речі за кімнатами, пошук. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Домашній інвентар»: речі за кімнатами, пошук. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Домашній інвентар»: речі за кімнатами, пошук. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 11. Щоденник настрою
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Щоденник настрою»: записи, статистика за тиждень. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Щоденник настрою»: записи, статистика за тиждень. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Щоденник настрою»: записи, статистика за тиждень. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 12. Облік автомобіля
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Облік автомобіля»: заправки, ТО, витрати на пробіг. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Облік автомобіля»: заправки, ТО, витрати на пробіг. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Облік автомобіля»: заправки, ТО, витрати на пробіг. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 13. Шкільний журнал
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Шкільний журнал»: класи, учні, оцінки, середні бали. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Шкільний журнал»: класи, учні, оцінки, середні бали. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Шкільний журнал»: класи, учні, оцінки, середні бали. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 14. Бронювання аудиторій
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Бронювання аудиторій»: аудиторії, слоти, перевірка конфліктів. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Бронювання аудиторій»: аудиторії, слоти, перевірка конфліктів. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Бронювання аудиторій»: аудиторії, слоти, перевірка конфліктів. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 15. Редактор вікторин
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Редактор вікторин»: набори питань, проходження, результати. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Редактор вікторин»: набори питань, проходження, результати. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Редактор вікторин»: набори питань, проходження, результати. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 16. Прийом ліків
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Прийом ліків»: розклад прийому й залишки ліків. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Прийом ліків»: розклад прийому й залишки ліків. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Прийом ліків»: розклад прийому й залишки ліків. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 17. Колекція ігор
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Колекція ігор»: платформи, статус проходження, рейтинг. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Колекція ігор»: платформи, статус проходження, рейтинг. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Колекція ігор»: платформи, статус проходження, рейтинг. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 18. Навчальний магазин
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Навчальний магазин»: каталог, кошик, історія замовлень. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Навчальний магазин»: каталог, кошик, історія замовлень. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Навчальний магазин»: каталог, кошик, історія замовлень. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 19. Турнір
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Турнір»: команди, матчі, автоматична таблиця. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Турнір»: команди, матчі, автоматична таблиця. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Турнір»: команди, матчі, автоматична таблиця. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 20. Планувальник подорожей
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Планувальник подорожей»: поїздки, пункти маршруту, бюджет. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Планувальник подорожей»: поїздки, пункти маршруту, бюджет. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Планувальник подорожей»: поїздки, пункти маршруту, бюджет. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 21. Сімейний бюджет
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Сімейний бюджет»: рахунки, доходи й витрати, підсумки. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Сімейний бюджет»: рахунки, доходи й витрати, підсумки. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Сімейний бюджет»: рахунки, доходи й витрати, підсумки. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 22. Облік лабораторних робіт
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Облік лабораторних робіт»: дисципліни, роботи, дедлайни. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Облік лабораторних робіт»: дисципліни, роботи, дедлайни. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Облік лабораторних робіт»: дисципліни, роботи, дедлайни. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 23. Садівник
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Садівник»: рослини, графік поливу, нагадування. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Садівник»: рослини, графік поливу, нагадування. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Садівник»: рослини, графік поливу, нагадування. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 24. Щоденник читача
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Щоденник читача»: книги, прогрес читання, цитати. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Щоденник читача»: книги, прогрес читання, цитати. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Щоденник читача»: книги, прогрес читання, цитати. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 25. Трекер звичок
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Трекер звичок»: звички, щоденні відмітки, серії. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Трекер звичок»: звички, щоденні відмітки, серії. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Трекер звичок»: звички, щоденні відмітки, серії. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 26. Обладнання кафедри
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Обладнання кафедри»: обладнання, видачі, повернення. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Обладнання кафедри»: обладнання, видачі, повернення. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Обладнання кафедри»: обладнання, видачі, повернення. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 27. Замовлення в ресторані
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Замовлення в ресторані»: столики, страви, рахунки. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Замовлення в ресторані»: столики, страви, рахунки. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Замовлення в ресторані»: столики, страви, рахунки. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 28. Прокат спорядження
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Прокат спорядження»: спорядження, клієнти, оренди. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Прокат спорядження»: спорядження, клієнти, оренди. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Прокат спорядження»: спорядження, клієнти, оренди. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 29. Волонтерські години
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Волонтерські години»: заходи, учасники, звіт годин. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Волонтерські години»: заходи, учасники, звіт годин. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Волонтерські години»: заходи, учасники, звіт годин. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Варіант 30. Домашні улюбленці
1. Початковий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Домашні улюбленці»: тварини, щеплення, візити до ветеринара. Реалізувати список та додавання основної сутності через ViewModel зі StateFlow, а дані надати репозиторієм у пам’яті. Користувач вводить назву й предметне поле, бачить новий рядок або помилку; UI не змінює MutableStateFlow напряму.
2. Базовий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Домашні улюбленці»: тварини, щеплення, візити до ветеринара. Реалізувати список, деталі й форму редагування з типобезпечним id маршруту, ручним передаванням репозиторію Exposed/SQLite та валідацією ViewModel. Після успішного запису оновлювати список, при помилці зберігати чернетку; невідомий id показувати явно. Перевірити Back, Cancel і повторне відкриття файлу.
3. Високий рівень. Створити самостійний desktop-застосунок Kotlin/Compose «Домашні улюбленці»: тварини, щеплення, візити до ветеринара. Побудувати MVVM із репозиторієм-інтерфейсом, SQLite-реалізацією, маршрутами списку/деталей/редагування та станами loading/data/error. Реалізувати предметний звіт, транзакційну складену дію й захист від повторного натискання. Додати --db=path, --help, --report=from:to для звіту без GUI: вирівняна таблиця та підсумки, помилки до stderr, коди 0/2/1. Написати тести ViewModel із fake і SQLite-тести відкату, ключів та міграції; перевірити збереження після перезапуску.
Порядок виконання та захисту роботи
- Визначити маршрути, UiState та предметний інтерфейс репозиторію.
- Передати залежності через конструктори; не створювати БД в UI.
- Виконувати JDBC поза Main, зберігати чернетку при помилці.
- Перевірити невідомий id, повернення, повторне натискання й збій БД.
- Запустити тести ViewModel із fake та інтеграційні тести SQLite.
- Перевірити збереження після перезапуску й описати шлях до даних.