Для багатьох розробників створення графічного інтерфейсу для невеликих утиліт мовою Python часто стає надлишковим процесом, який займає більше часу, ніж написання самої бізнес-логіки. Kajetk розв'язав цю проблему, розробивши систему, де декоратор @tool() автоматично генерує маніфест JSON Schema на основі підказок типів аргументів функції. Цей підхід дозволяє перетворювати невеликі скрипти на доступні через браузер інструменти, якими легко ділитися з іншими користувачами, не вимагаючи від них налаштування локального середовища чи інсталяції залежностей.
Головна перевага Nix SDK полягає у відсутності потреби в ручному проектуванні фронтенду. Використовуючи декоратор, програміст просто описує вхідні дані через спеціальні віджети, як-от поля введення тексту, випадаючі списки або перемикачі. Система самостійно створює інтерфейс користувача, валідує дані та забезпечує зв'язок між клієнтською частиною та серверною логікою. Це рішення ідеально підходить для швидкої розробки внутрішніх корпоративних інструментів або публічних сервісів для обробки файлів та тексту, де швидкість розгортання є пріоритетом.
Технічна архітектура та робота системи
Архітектура проекту базується на поєднанні трьох компонентів: Python-бібліотеки, бекенду на FastAPI та фронтенду на Next.js. Коли функція позначається декоратором, бібліотека інспектує її структуру для створення детального опису схеми даних. Цей маніфест передається фронтенду, який динамічно рендерить форму за допомогою бібліотеки компонентів Mantine. Наприклад, тип textarea автоматично стає текстовою областю, а логічний тип bool перетворюється на перемикач (Switch). Таким чином, розробник отримує готовий продукт без написання жодного рядка коду на JavaScript.
Виконання коду відбувається в ізольованих потоках за допомогою asyncio.to_thread(), що дозволяє уникнути блокування основного циклу подій FastAPI під час важких обчислень. Для складних завдань, що тривають тривалий час, передбачено використання WebSocket для передачі статусу прогресу в реальному часі. Важливою особливістю є безпека обробки файлів: вони завантажуються як тимчасові дані, зберігаються лише на час виконання скрипта і видаляються відразу після отримання результату, що гарантує приватність та економить дисковий простір сервера.
Можливості та підтримувані інструменти
Nix SDK вже використовується для роботи низки сервісів на платформі nix.tech. Серед реалізованих рішень є інструменти для валідації JSON та XML, конвертації CSV у JSON, а також дедуплікації даних. Завдяки автоматичній генерації SEO-оптимізованих сторінок, кожен такий інструмент отримує власну посадкову сторінку з метаданими та FAQ, що робить їх видимими для пошукових систем без додаткових зусиль. Наразі система підтримує кілька основних типів інтерфейсних елементів:
- Textarea для введення великих обсягів тексту або коду;
- Dropdown для вибору параметрів із заздалегідь визначеного списку;
- Switch для активації або деактивації певних опцій логіки;
- File upload для завантаження та подальшої обробки документів чи зображень.
Перспективи розвитку
"Декорована функція Python автоматично стає вебзастосунком. Жодного React. Жодних ендпоінтів API. Жодної маршрутизації", — зазначає розробник Kajetk у своєму описі проекту. Такий підхід відображає сучасний тренд на спрощення технологічного стека для вирішення прикладних задач. У майбутньому проект може отримати глибшу інтеграцію з хмарними провайдерами для автоматичного розгортання в один клік, що зробить мову Python ще більш привабливим вибором для швидкого створення повноцінних вебсервісів.