Тема 5 · урок 1 з 2 · наскрізний проєкт STARTUP LAUNCH · 120 хвилин
У тебе вже є сервер, бриф, таблиця ринку, аналітика, бренд і пітч. За шість уроків ти ухвалив кілька десятків рішень. Серед них — чому саме ця аудиторія, звідки взялося число ринку, чому ціна така, а не інша. Частина цих рішень уже зникла — вони жили в чаті, у голові й у вкладках браузера.
Сьогодні ти заводиш базу знань продукту: місце, де живуть рішення,
джерела й нотатки, які інакше губляться. Спочатку як робочу базу в Notion,
потім — як теку простих текстових файлів ~/www/kb/.
Вони відкриються й через десять років без жодної підписки.
~/www/kb/ з восьми нотаток і здати її
на автоперевірку.Слова Markdown, front-matter і YAML поки нічого не означають — розберемо кожне тоді, коли воно знадобиться.
| Етап | Хв | Що робимо |
|---|---|---|
| Розігрів: «збережу в закладки» | 10 | чому 200 закладок — це не база знань |
| Атомарна нотатка | 10 | один довгий файл проти восьми маленьких |
| Markdown: синтаксис | 15 | таблиця синтаксису, живий редактор із двома панелями |
| Front-matter | 15 | YAML-паспорт нотатки, валідатор на цій сторінці |
| Чому текст переживає сервіси | 10 | .md проти документа в хмарі |
| Notion / Evernote / Obsidian | 15 | п’ять критеріїв і доля даних при закритті сервісу |
| Практика: база в Notion | 25 | властивості, три вигляди, ≥ 8 записів із джерелами |
Практика: експорт у kb/*.md | 15 | імена у kebab-case, front-matter, заливка по FTP |
| Автоперевірка й підсумок | 5 | check11 5, п’ятий сегмент ракети |
.md загалом на кілька десятків кілобайт. Наскрізний критерій
no_media діє й сьогодні: скриншотів сторінок Notion у
~/www/kb/ бути не має.Три ситуації, у яких пам’ять не рятує
Через місяць ти не пам’ятаєш, чому обрав саме цю ціну. Пам’ятаєш результат — 340 грн — і не пам’ятаєш, що під ним було: опитування, ціна конкурента, розрахунок маржі. Коли цифру доводиться захищати, ти або вигадуєш пояснення заднім числом, або мовчиш.
Новий учасник команди питає те саме двічі. Кожне «а чому ми не робимо Х?» коштує тобі десяти хвилин переказу того, що вже обговорювали. Записане рішення відповідає за тебе: посилання замість переказу.
Джерела треба знайти, коли їх спитають на захисті. «Ринок 4 мільйони» без посилання — це не число, а враження. Журі не перевіряє твою чесність, воно перевіряє, чи ти взагалі знаєш, звідки взялося те, що показуєш.
| Чат / закладки | База знань |
|---|---|
| Пошук знаходить слова: «ціна» трапляється в 40 повідомленнях | Пошук знаходить рішення: одна нотатка з висновком і причиною |
| Порядок — хронологічний: свіже зверху, важливе будь-де | Порядок — смисловий: теги, статус, зв’язки між нотатками |
| Немає стану: незрозуміло, чи це ще ідея, чи вже рішення | Є status: чернетка / перевірено / відхилено |
| Немає походження: цифра є, джерела немає | Є source: посилання, документ або «інтерв’ю, дата» |
| Живе в сервісі, з якого його не витягнеш цілим | Живе файлами у твоїй теці на твоєму сервері |
Через півроку на захисті тебе питають: звідки взялася цифра 340 грн у твоєму пітчі. Де вона має бути записана, щоб ти знайшов її за десять секунд?
Чому довгий документ «про все» не працює
Найчастіша перша спроба виглядає так: файл все-про-конкурентів.md
на дванадцять екранів, де вперемішку ціни, функції, відгуки й твої здогади.
Він здається зручним: усе в одному місці. Але з ним неможливо зробити нічого
з того, заради чого база знань потрібна.
Такий файл не має одного тегу: він одночасно про ціни, про ринок і про ризики. Він не має одного статусу: половина перевірена, половина — здогад. На нього не можна послатися точно: посилання веде «у файл», а не в думку. І його ніхто не перечитує — зокрема ти сам.
status один;У тебе один файл все-про-конкурентів.md на 12 екранів.
На уроці 8 треба поставити посилання саме на абзац про ціни конкурента Б.
Що з цим не так?
Кілька службових символів замість панелі кнопок
Markdown придумав Джон Ґрубер 2004 року з простою метою. Текст із розміткою
має лишатися читабельним, навіть якщо його ніхто не обробляв. Тому заголовок —
це #, список — дефіс, а жирний — зірочки. Ти бачиш і те, що
написано, і те, як воно буде виглядати.
Значків у Markdown десятки, але в робочій нотатці ти щоразу користуєшся тими самими одинадцятьма. Вони в таблиці нижче.
Вивчати їх напам’ять не треба. Один раз напиши нотатку з таблицею перед очима — і наступного разу рука зробить сама.
Одне спільне правило варто помітити зараз: майже скрізь потрібен
пробіл після значка. #Заголовок лишиться текстом,
а # Заголовок стане заголовком.
| Що треба | Як пишеш | Примітка |
|---|---|---|
| Заголовки | # H1, ## H2, ### H3 | решітка й обов’язковий пробіл після неї |
| Жирний | **текст** | дві зірочки з кожного боку |
| Курсив | *текст* | одна зірочка з кожного боку |
| Маркований список | - пункт | дефіс, пробіл, текст |
| Нумерований список | 1. пункт | номери можна не рахувати вручну |
| Посилання | [текст](адреса) | спершу текст у квадратних, потім адреса в круглих |
| Код у рядку | `fixed_costs` | зворотні лапки, не звичайні |
| Блок коду | три зворотні лапки на окремому рядку до і після | усе всередині лишається як є |
| Цитата | > текст | для чужих слів і застережень |
| Горизонтальна лінія | --- на порожньому рядку | ті самі три дефіси, що й у front-matter |
| Таблиця | | A | B | і рядок | --- | --- | | розширення GFM, не базовий Markdown |
- [ ] і закреслення прийшли з GitHub Flavored Markdown, а спільний
«мінімум, який усі розуміють однаково», описує специфікація CommonMark. Тому
таблиця, яка гарно виглядає в Obsidian, може не спрацювати в дуже простому
конвертері — це нормально й це варто знати заздалегідь.Ти написав у нотатці *важливо*, а очікував жирний шрифт.
Що вийде насправді і як зробити жирний?
Кілька рядків YAML на початку файлу, які роблять теку базою даних
Перед самим текстом нотатки ставлять кілька службових рядків: дата, теги,
статус. Зверху й знизу їх відділяє рядок із трьох дефісів — ---.
Цей блок називають front-matter, тобто «те, що спереду».
Частиною Markdown він не є. Це домовленість інструментів: її ввели
генератори сайтів, а підхопили редактори нотаток. Усередині рядки пишуть
однаково — ключ: значення. Такий запис зветься YAML.
Навіщо він потрібен. Без цих кількох рядків тека kb/ — просто
вісім текстів. З ними тека стає базою, з якою можна працювати.
Нотатки шикуються за датою — це поле date. Лишаються тільки
потрібні за темою — це tags. Ховаються ті, що ще не перевірені —
це status: verified. А з усього разом збирається сторінка
kb/index.html. Саме це ти робитимеш на уроці 8.
check11 5 ключі — title,
date, tags. source і status
перевірка не вимагає — редактор нижче теж позеленіє на них, щойно заповниш.
Але без цих двох полів нотатка не відповідає на два головні питання:
звідки це і чи можна на це спиратися.Помилки тут бувають двох різних видів, і плутати їх не варто.
Перший вид — файл узагалі не читається. Таких випадків два:
title:Чому ціна без пробілу після двокрапки й порожній рядок
перед першим ---. Програма спиняється й прямо каже, що не змогла.
Другий вид гірший, бо мовчазний. Файл читається бездоганно, помилки немає — просто в полі опиняється не те, що ти мав на увазі.
Так, tags: ринок дає один рядок замість списку тегів.
date: 24.09.2026 дає рядок, який не сортується за датою.
А status: no перетворюється на «ні» замість слова «no».
Червоне ти побачиш в обох випадках. Але в другому доведеться самому шукати, де саме розійшлися задум і результат.
| Написано | Що виходить | Як треба |
|---|---|---|
tags: ринок | рядок «ринок», а не список | tags: [ринок, аналіз] |
title:Чому ціна | помилка розбору: після двокрапки потрібен пробіл | title: Чому ціна |
date: 24.09.2026 | рядок, який не сортується і не порівнюється | date: 2026-09-24 |
status: no | у багатьох парсерах — логічне false, а не слово | status: "no" або інше слово |
порожній рядок перед першим --- | front-matter не розпізнається взагалі | --- має бути першим рядком |
yes, no, on,
off, true, false як логічні значення.
Класичний випадок: код країни Норвегії NO у списку перетворюється
на false. Специфікація YAML 1.2 звузила цей список до
true/false, але поширені парсери (зокрема PyYAML
за замовчуванням) досі працюють за правилами 1.1. Правило просте: слово,
яке має лишитися словом, бери в лапки.У твоїй нотатці написано tags: ринок. YAML парситься без
помилок, а check11 5 усе одно показує червоне. Чому?
У front-matter є рядок published: no. Скрипт, який збирає
покажчик, бачить у цьому полі не слово «no», а False.
Що сталося?
Той самий текст, що поїде в ~/www/kb/
Ліва панель — те, що фізично лежить у файлі. Права — те, у що це перетворюється. Панель нижче окремо розбирає front-matter і показує, яких обов’язкових полів бракує. Переписуй приклад під свій продукт: це чернетка першої з восьми нотаток.
Розбір Markdown тут спрощений — рівно той набір, що потрібен нотатці: заголовки, жирний, курсив, списки, посилання, код, цитати, таблиці й лінії. Складніші випадки (вкладені списки, зображення, HTML усередині Markdown) редактор навмисно не показує.
~/www/kb/.Файл, який відкриється й через десять років
.md — це звичайний текст. Його відкриє Блокнот, будь-який
редактор коду, термінал на сервері, телефон і програма, якої ще не написали.
Для цього не потрібні ані підписка, ані інтернет, ані те, щоб компанія-автор
формату досі існувала.
Документ у хмарі — це не файл, а послуга. Поки послуга надається, усе чудово: спільне редагування, коментарі, історія версій. Та послуга може припинитися, подорожчати або просто закритися разом з акаунтом. Тоді в тебе лишається рівно те, що ти встиг вивантажити. І рівно в тому вигляді, у якому сервіс віддає вивантаження.
| Критерій | Тека .md | Документ у хмарі |
|---|---|---|
| Чим відкривається | будь-яким редактором тексту | своїм сервісом або його експортом |
| Потрібен інтернет | ні | як правило, так |
| Пошук по всій базі | grep, редактор, сервер | пошук самого сервісу |
| Історія змін | сама не ведеться; git або копії | вбудована, зручна |
| Спільне редагування | складно, потрібні окремі інструменти | найсильніший бік |
| Публікація на своєму сайті | конвертується скриптом (урок 8) | експорт і чистка розмітки |
| Що буде через 10 років | той самий файл відкриється так само | залежить від того, чи існує сервіс |
Два рядки цієї таблиці варті окремого слова.
Історія змін у теки .md сама не з’являється. Переписав файл —
попередній варіант зник назавжди. Хочеш історію — або тримай копії з датою
в імені, або постав git.
А спільне редагування — те місце, де хмара виграє начисто. Двом людям
правити один .md одночасно незручно, і жоден трюк цього
не виправить.
Учитель просить здати базу знань так, щоб її можна було відкрити через десять років — без підписки й без конкретної програми. Що ти здаєш?
П’ять критеріїв, за якими це взагалі можна порівнювати
Notion живе в браузері. Кожна нотатка там — сторінка, і до сторінки можна причепити поля: тип, статус, теги. Коли сторінок назбирується багато, Notion показує їх як таблицю, дошку або календар — на твій вибір. Писати вдвох можна одразу, нічого не налаштовуючи. Але самі дані лежать на серверах сервісу, а не в тебе.
Evernote працює радше як склад. Ти складаєш туди все, що зустрів: нотатники, теги, а розширення браузера зберігає чужу сторінку цілком. Це зручно, коли головне — нічого не загубити. Зв’язувати між собою власні думки в ньому виходить гірше.
Obsidian — це редактор, який відкриває твою власну теку
з файлами .md на диску. Акаунт не потрібен, інтернет теж.
Нотатки чіпляються одна до одної звичайними посиланнями всередині тексту.
Синхронізацію між пристроями й публікацію продають окремо. Але тека
з файлами лишається твоєю в будь-якому разі.
| Задача | Що доречно | Чому |
|---|---|---|
| Працювати над базою вдвох на уроці | Notion | одночасне редагування, властивості, вигляди — без налаштування |
| Зберегти сторінку конкурента цілком | Evernote або збереження в файл | архівна модель: узяв і поклав |
| Тримати те, що має пережити модуль | .md у kb/ | формат нікому не належить |
| Зв’язувати нотатки між собою (урок 8) | Obsidian або просто файли | посилання всередині тексту, які працюють і на сервері |
| Показати вчителю одним посиланням | Notion зараз, сабдомен після уроку 8 | у хмарі — доступ за посиланням, у себе — власна адреса |
Ви робите проєкт удвох, пишете одночасно, і половину нотаток треба показати вчителю одним посиланням уже сьогодні. Що обираєш і чому?
Сервіс оголосив, що безкоштовний тариф закривається за 30 днів. У кого з трьох користувачів найменше роботи цього вечора?
Чому пробіли й кирилиця створять проблеми саме на сервері
Локально ім’я Аналіз ринку.md виглядає нормально. Але
на уроці 8 ця нотатка стане сторінкою за адресою
http://91.219.61.4/s/<логін>/kb/…, а в URL немає ані пробілів,
ані кирилиці: браузер кодує кожен «незручний» байт трьома символами.
%20, кожна кирилична літера — двома байтами UTF-8, тобто
шістьма символами. Файл відкриється, але посилання перестане бути читабельним,
а частина інструментів на такому імені спіткнеться.kebab-case;competitor-b-pricing.md,
а не note3.md;Конкуренти 3f2a9c1b….md:
хеш прибираєш повністю.tags: [ціна, ризик] цілком нормальний. Ім’я файлу стає адресою —
тому воно латиницею. Редактор вище підказує ім’я, транслітеруючи заголовок
за офіційними правилами українсько-латинської транслітерації.Ти назвав файл Аналіз ринку.md і поклав у ~/www/kb/.
Посилання на нього з покажчика не працює. Чому?
Ти експортував базу з Notion. Файли звуться
Конкуренти 3f2a9c1b4e….md. Що робиш перед заливкою на сервер?
Сторінка стежить за повнотою front-matter і показує, які теми ще не покриті
Вісім карток — вісім типів нотаток, без яких база знань продукту неповна. Заповнюй під свій продукт: тут не буває правильної відповіді, буває заповнена або порожня. Знизу — готовий текст усіх front-matter, який можна скопіювати у файли.
Це поки що заготовки. У кожному файлі під front-matter
треба дописати саму нотатку. Інакше файл не набере 400 байт, і
check11 5 порахує його заглушкою.
У тебе вісім нотаток, але сім із них мають тег стартап.
Перевірка вимагає, щоб жоден тег не покривав більше 60 % нотаток, —
і теку не зараховує. Що це означає по суті?
kb/Виконуй по черзі. Галочки зберігаються — сторінку можна закрити.
.md
Якщо ти створюєш нотатку через PowerShell, > note.md запише
файл у UTF-16, а -Encoding utf8 у Windows PowerShell 5.1 додасть
на початок BOM. І те, і те ламає front-matter: парсер бачить перед
--- невидимі байти й вирішує, що блоку немає. Або зберігай
із редактора в «UTF-8 без BOM», або пиши так:$p = "$HOME\kb\pricing-decision.md" $t = Get-Content .\draft.md -Raw [IO.File]::WriteAllText($p, $t, (New-Object Text.UTF8Encoding $false))
# працює тільки з латиницею; кириличні імена перейменовуй за підказкою редактора
for f in *.md; do mv "$f" "$(echo "$f" | tr ' A-Z' '-a-z')"; done
.md: спершу в ~/upload/,
далі у ~/www/kb/. Скриншоти бази й вигляди Notion учитель
дивиться очно на твоєму екрані — у ~/www/ їм місця немає.check11 5, перша частинаСистема прочитає твою теку ~/www/kb/, спробує
розібрати front-matter кожного файлу як YAML і подивиться на імена.
Спроби не обмежені.
Демонстраційний режим: результат згенеровано для показу.
На сервері ця кнопка запускає check11 5 від імені учня
і читає ~/.progress/11-5.json.
kb/index.md, зв’язки між нотатками
й згенерований kb/index.html. Тому нотатки, зроблені абияк
сьогодні, доведеться переробляти наступного разу.kb/ і пояснюєш,
яке рішення продукту вона підпирає.Це те, що бачить учитель, коли виставляє оцінку.
| Складник | Вага | Результат |
|---|
~/www/kb/ до десяти. Дві нові
мають бути про те, чого сьогодні не було. Наприклад, відхилена ідея
й термін, який ти сам плутав.kb/index.md як карта змісту (MOC) і скрипт, який перетворює
теку .md на справжню сторінку kb/index.html
на твоєму сабдомені. Що краще названі й розмічені сьогоднішні файли,
то менше роботи буде тоді.Формати й специфікації перевіряються за первинними джерелами, умови сервісів — за їхніми офіційними сторінками. Перевіряти дозволено й корисно: тарифи змінюються, специфікації — рідко.
ключ: значення, списки, лапки —
yaml.org · YAML 1.2.2 specificationyes, no, on, off
як логічні значення в YAML 1.1 — джерело «норвезької проблеми» —
yaml.org · type/bool,
pyyaml.org · документація PyYAML--- на початку файлу —
jekyllrb.com · Front Matter.md
у теці на диску; властивості нотатки — той самий YAML front-matter —
help.obsidian.md · Properties,
obsidian.md.enex (власний XML) —
help.evernote.com · довідка, розділ про експорт нотаток;
умови тарифів — evernote.com/compare-plansРРРР-ММ-ДД — RFC 3339, профіль ISO 8601.
datatracker.ietf.org · RFC 3339Числа в прикладах нотаток (340 грн, 180 грн змінних витрат,
34 з 50 в опитуванні, 420 грн у конкурента) — ілюстративні. Вони
складені так, щоб узгоджуватися між собою й з арифметикою уроку 4
(340 − 180 = 160). Із реального дослідження вони не походять.
У своїх нотатках підставляєш власні числа зі свого
data/market.csv. Довжина адреси 76 проти 22 символів
порахована для конкретних імен Аналіз ринку.md і
market-analysis.md. Оцінки трьох інструментів у матриці
стосуються моделі роботи, а не якості застосунків. Конкретних лімітів
безкоштовних тарифів тут свідомо немає: вони змінюються, і їх звіряють
за посиланнями вище. Повний перелік джерел із поясненнями —
у файлі urok-07-джерела.md поруч із цією сторінкою.