KyryloКирило

ProjectsПроєкти

What I'm working on, what I've built, and what I learned along the way.Над чим працюю, що вже зробив і чого навчився дорогою.

Dispatch

Dispatch is a planner I'm building for myself: a native macOS and iPhone app that keeps my tasks on my own devices first and syncs them second. It's early: it runs, it's not finished, and it's already the most complicated thing I've written.

The rule I set at the start is that it never has to ask the network for permission. Every write lands in SwiftData locally and works offline; Supabase carries it to the other device afterwards, and realtime updates are a nudge to refresh rather than the thing recovery depends on.

The half I actually find interesting is letting an AI agent use it. Dispatch speaks MCP, but an agent never gets my account; it gets a scope that's explicit, short-lived, revocable, and narrower than my workspace, and every write it makes is checked against that scope and recorded.

A few decisions so far:

Continue readingЧитати далі

Dispatch — це планер, який я роблю для себе: нативний застосунок для macOS та iPhone, що тримає мої задачі спершу на моїх власних пристроях, а вже потім синхронізує їх. Він на ранній стадії: запускається, але не готовий, і це вже найскладніше, що я писав.

Правило, яке я поставив на початку, — застосунок ніколи не має питати дозволу в мережі. Кожен запис одразу лягає локально у SwiftData й працює офлайн; Supabase доносить його до іншого пристрою вже потім, а realtime-оновлення — це поштовх оновитися, а не те, на чому тримається відновлення даних.

Половина, яка мені справді цікава, — дати застосунку користуватися AI-агенту. Dispatch говорить через MCP, але агент ніколи не отримує мій акаунт — він отримує дозвіл, який є явним, короткочасним, відкличним і вужчим за мій робочий простір, і кожен його запис перевіряється на відповідність цьому дозволу та записується в журнал.

Кілька рішень, які вже прийняті:

Continue readingЧитати далі

This websiteЦей сайт

The site you're reading is itself the first project. It's a Next.js site where my Obsidian vault is the CMS: create a folder with a main.md and it becomes a page in the sidebar; drop a note into that folder and it becomes a post with its own URL. Hitting save in Obsidian auto-commits to GitHub, Vercel rebuilds, and the change is live in about a minute.

Obsidian write a note GitHub git auto-push Vercel static build kryloss.com live in ~1 min Obsidian write a note GitHub git auto-push Vercel static build kryloss.com live in ~1 min Obsidian пишеш нотатку GitHub автопуш у git Vercel статична збірка kryloss.com онлайн за ~1 хв Obsidian пишеш нотатку GitHub автопуш у git Vercel статична збірка kryloss.com онлайн за ~1 хв
How a note becomes a pageЯк нотатка стає сторінкою

A few decisions I'm happy with:

  • No database. Content is markdown in git: versioned, portable, free.
  • Fully static. Every page is pre-rendered at build time, so it's fast and there's nothing to hack at runtime. Fitting, for a future security person.
  • Pluggable page styles. Each section declares a type (posts, music, people, projects) and the code maps it to a layout; this page is the projects type.
  • Obsidian syntax works. Wiki links, image embeds with widths, even Apple Music links that turn into players.
Continue readingЧитати далі

Сайт, який ти зараз читаєш, і є першим проєктом. Це сайт на Next.js, де моє сховище Obsidian і є CMS: створюєш папку з main.md — і вона стає сторінкою в бічній панелі; кидаєш нотатку в цю папку — і вона стає дописом із власною адресою. Натискаю «зберегти» в Obsidian, зміни автоматично комітяться в GitHub, Vercel перезбирає сайт, і приблизно за хвилину все вже онлайн.

Obsidian write a note GitHub git auto-push Vercel static build kryloss.com live in ~1 min Obsidian write a note GitHub git auto-push Vercel static build kryloss.com live in ~1 min Obsidian пишеш нотатку GitHub автопуш у git Vercel статична збірка kryloss.com онлайн за ~1 хв Obsidian пишеш нотатку GitHub автопуш у git Vercel статична збірка kryloss.com онлайн за ~1 хв
How a note becomes a pageЯк нотатка стає сторінкою

Кілька рішень, якими я задоволений:

  • Жодної бази даних. Контент — це markdown у git: версійований, портативний, безкоштовний.
  • Повністю статичний. Кожна сторінка згенерована наперед під час збірки, тож усе швидко і немає чого зламати в рантаймі. Доречно для майбутнього безпечника.
  • Змінні стилі сторінок. Кожен розділ оголошує свій type (posts, music, people, projects), а код зіставляє його з макетом — ця сторінка має тип projects.
  • Синтаксис Obsidian працює. Вікі-посилання, вбудовані зображення із заданою шириною і навіть посилання на Apple Music, які перетворюються на плеєр.
Continue readingЧитати далі