summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormnik01 <maksimgrinberg01@gmail.com>2025-09-10 02:40:17 +0500
committermnik01 <maksimgrinberg01@gmail.com>2025-09-10 02:40:17 +0500
commitae30615df5e464c167d010414aef61c20076b8e0 (patch)
tree844ec9b1546014438b06b49e5b92b2140d695500
initial
-rw-r--r--.gitignore3
-rw-r--r--assets/.DS_Storebin0 -> 6148 bytes
-rw-r--r--assets/icons/favicon.svg51
-rw-r--r--assets/icons/logo.svg43
-rw-r--r--assets/images/nojs.pngbin0 -> 10623 bytes
-rw-r--r--assets/images/paper-cut.pngbin0 -> 9689533 bytes
-rw-r--r--assets/images/paper-texture.pngbin0 -> 1202576 bytes
-rw-r--r--assets/monero-qr.pngbin0 -> 135433 bytes
-rw-r--r--assets/phone.pngbin0 -> 86095 bytes
-rw-r--r--public/robots.txt0
-rw-r--r--public/rss.xml0
-rw-r--r--public/sitemap.xml0
-rw-r--r--src/.DS_Storebin0 -> 6148 bytes
-rw-r--r--src/pages/404.html26
-rw-r--r--src/pages/computer-literacy-book-progress.html37
-rw-r--r--src/pages/index.html113
-rw-r--r--src/pages/posts/mobile-phones.html87
-rw-r--r--src/partials/book-progress-banner.html22
-rw-r--r--src/partials/common-section.html40
-rw-r--r--src/partials/footer.html30
-rw-r--r--src/partials/header.html14
-rw-r--r--src/partials/sidebar.html1
22 files changed, 467 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..84621c7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+build/
+tailwindcss
+jelly-cms
diff --git a/assets/.DS_Store b/assets/.DS_Store
new file mode 100644
index 0000000..d7532f1
--- /dev/null
+++ b/assets/.DS_Store
Binary files differ
diff --git a/assets/icons/favicon.svg b/assets/icons/favicon.svg
new file mode 100644
index 0000000..d638dd1
--- /dev/null
+++ b/assets/icons/favicon.svg
@@ -0,0 +1,51 @@
+<svg width="112" height="108" viewBox="0 0 112 108" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_74_2)">
+<rect width="112" height="108" fill="white"/>
+<path d="M37 0H0V4H37V0Z" fill="black"/>
+<path d="M4 4H0V108H4V4Z" fill="black"/>
+<path d="M68 104H4V108H68V104Z" fill="black"/>
+<path d="M112 104H74V108H112V104Z" fill="black"/>
+<path d="M112 0H108V104H112V0Z" fill="black"/>
+<path d="M108 0H44V4H108V0Z" fill="black"/>
+<path d="M48 4H44V14H48V4Z" fill="black"/>
+<path d="M69 14H65V24H69V14Z" fill="black"/>
+<path d="M92 25H88V36H92V25Z" fill="black"/>
+<path d="M58 4H54V22H58V4Z" fill="black"/>
+<path d="M25 22H21V36H25V22Z" fill="black"/>
+<path d="M102 14H98V42H102V14Z" fill="black"/>
+<path d="M102 66H98V94H102V66Z" fill="black"/>
+<path d="M92 72H88V84H92V72Z" fill="black"/>
+<path d="M25 72H21V84H25V72Z" fill="black"/>
+<path d="M40 36H33V72H40V36Z" fill="black"/>
+<path d="M79 36H72V72H79V36Z" fill="black"/>
+<path d="M47 83H43V95H47V83Z" fill="black"/>
+<path d="M15 64H11V95H15V64Z" fill="black"/>
+<path d="M58 88H54V104H58V88Z" fill="black"/>
+<path d="M68 97H64V108H68V97Z" fill="black"/>
+<path d="M44 10H11V14H44V10Z" fill="black"/>
+<path d="M15 14H11V46H15V14Z" fill="black"/>
+<path d="M25 42H15V46H25V42Z" fill="black"/>
+<path d="M58 21H21V25H58V21Z" fill="black"/>
+<path d="M92 21H75V25H92V21Z" fill="black"/>
+<path d="M102 42H87V46H102V42Z" fill="black"/>
+<path d="M108 52H87V56H108V52Z" fill="black"/>
+<path d="M102 10H65V14H102V10Z" fill="black"/>
+<path d="M102 62H87V66H102V62Z" fill="black"/>
+<path d="M102 94H64V98H102V94Z" fill="black"/>
+<path d="M92 84H54V88H92V84Z" fill="black"/>
+<path d="M37 84H21V88H37V84Z" fill="black"/>
+<path d="M44 72H30V77H44V72Z" fill="black"/>
+<path d="M43 31H30V36H43V31Z" fill="black"/>
+<path d="M83 31H70V36H83V31Z" fill="black"/>
+<path d="M83 72H68V77H83V72Z" fill="black"/>
+<path d="M47 94H11V98H47V94Z" fill="black"/>
+<path d="M25 62H11V66H25V62Z" fill="black"/>
+<path d="M25 52H4V56H25V52Z" fill="black"/>
+<path d="M53.5 73.5L40 42L38.5 36.5L43 31L56.5 62L69.5 31H72.5L75 36L58.5 73.5H53.5Z" fill="black"/>
+</g>
+<defs>
+<clipPath id="clip0_74_2">
+<rect width="112" height="108" fill="white"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/assets/icons/logo.svg b/assets/icons/logo.svg
new file mode 100644
index 0000000..0ab62df
--- /dev/null
+++ b/assets/icons/logo.svg
@@ -0,0 +1,43 @@
+<svg width="112" height="108" viewBox="0 0 112 108" fill="none" xmlns="http://www.w3.org/2000/svg">
+<rect width="37" height="4" fill="black"/>
+<rect y="4" width="4" height="104" fill="black"/>
+<rect x="4" y="104" width="64" height="4" fill="black"/>
+<rect x="74" y="104" width="38" height="4" fill="black"/>
+<rect x="108" width="4" height="104" fill="black"/>
+<rect x="44" width="64" height="4" fill="black"/>
+<rect x="44" y="4" width="4" height="10" fill="black"/>
+<rect x="65" y="14" width="4" height="10" fill="black"/>
+<rect x="88" y="25" width="4" height="11" fill="black"/>
+<rect x="54" y="4" width="4" height="18" fill="black"/>
+<rect x="21" y="22" width="4" height="14" fill="black"/>
+<rect x="98" y="14" width="4" height="28" fill="black"/>
+<rect x="98" y="66" width="4" height="28" fill="black"/>
+<rect x="88" y="72" width="4" height="12" fill="black"/>
+<rect x="21" y="72" width="4" height="12" fill="black"/>
+<rect x="33" y="36" width="7" height="36" fill="black"/>
+<rect x="72" y="36" width="7" height="36" fill="black"/>
+<rect x="43" y="83" width="4" height="12" fill="black"/>
+<rect x="11" y="64" width="4" height="31" fill="black"/>
+<rect x="54" y="88" width="4" height="16" fill="black"/>
+<rect x="64" y="97" width="4" height="11" fill="black"/>
+<rect x="11" y="10" width="33" height="4" fill="black"/>
+<rect x="11" y="14" width="4" height="32" fill="black"/>
+<rect x="15" y="42" width="10" height="4" fill="black"/>
+<rect x="21" y="21" width="37" height="4" fill="black"/>
+<rect x="75" y="21" width="17" height="4" fill="black"/>
+<rect x="87" y="42" width="15" height="4" fill="black"/>
+<rect x="87" y="52" width="21" height="4" fill="black"/>
+<rect x="65" y="10" width="37" height="4" fill="black"/>
+<rect x="87" y="62" width="15" height="4" fill="black"/>
+<rect x="64" y="94" width="38" height="4" fill="black"/>
+<rect x="54" y="84" width="38" height="4" fill="black"/>
+<rect x="21" y="84" width="16" height="4" fill="black"/>
+<rect x="30" y="72" width="14" height="5" fill="black"/>
+<rect x="30" y="31" width="13" height="5" fill="black"/>
+<rect x="70" y="31" width="13" height="5" fill="black"/>
+<rect x="68" y="72" width="15" height="5" fill="black"/>
+<rect x="11" y="94" width="36" height="4" fill="black"/>
+<rect x="11" y="62" width="14" height="4" fill="black"/>
+<rect x="4" y="52" width="21" height="4" fill="black"/>
+<path d="M53.5 73.5L40 42L38.5 36.5L43 31L56.5 62L69.5 31H72.5L75 36L58.5 73.5H53.5Z" fill="black"/>
+</svg>
diff --git a/assets/images/nojs.png b/assets/images/nojs.png
new file mode 100644
index 0000000..d22a738
--- /dev/null
+++ b/assets/images/nojs.png
Binary files differ
diff --git a/assets/images/paper-cut.png b/assets/images/paper-cut.png
new file mode 100644
index 0000000..5d12eac
--- /dev/null
+++ b/assets/images/paper-cut.png
Binary files differ
diff --git a/assets/images/paper-texture.png b/assets/images/paper-texture.png
new file mode 100644
index 0000000..a23737f
--- /dev/null
+++ b/assets/images/paper-texture.png
Binary files differ
diff --git a/assets/monero-qr.png b/assets/monero-qr.png
new file mode 100644
index 0000000..9de624f
--- /dev/null
+++ b/assets/monero-qr.png
Binary files differ
diff --git a/assets/phone.png b/assets/phone.png
new file mode 100644
index 0000000..917512b
--- /dev/null
+++ b/assets/phone.png
Binary files differ
diff --git a/public/robots.txt b/public/robots.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/public/robots.txt
diff --git a/public/rss.xml b/public/rss.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/public/rss.xml
diff --git a/public/sitemap.xml b/public/sitemap.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/public/sitemap.xml
diff --git a/src/.DS_Store b/src/.DS_Store
new file mode 100644
index 0000000..7524bed
--- /dev/null
+++ b/src/.DS_Store
Binary files differ
diff --git a/src/pages/404.html b/src/pages/404.html
new file mode 100644
index 0000000..5f5054d
--- /dev/null
+++ b/src/pages/404.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html class="h-full" lang="ru">
+
+<head>
+ <title>Страница не найдена</title>
+
+ <!-- OG -->
+ <meta property="og:title" content="TODO" />
+ <meta property="og:description" content="TODO" />
+ <meta property="og:image" content="TODO" />
+ <meta property="og:url" content="https://mnik01-blog.mlibren.com" />
+ <meta property="og:type" content="website" />
+ <!-- OG -->
+
+ <meta charset="UTF-8">
+ <!-- TODO: replace with static css -->
+ <script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+</head>
+
+<body class="flex h-screen w-screen items-center flex-col gap-4 justify-center">
+ <a href="/"><img width="96" height="96" src="/assets/icons/logo.svg" alt="logo letter M"></a>
+ <h1 class="underline underline-offset-6 decoration-indigo-600 decoration-wavy text-2xl first-letter:capitalize font-serif">страница не найдена</h1>
+</body>
+
+</html> \ No newline at end of file
diff --git a/src/pages/computer-literacy-book-progress.html b/src/pages/computer-literacy-book-progress.html
new file mode 100644
index 0000000..e019943
--- /dev/null
+++ b/src/pages/computer-literacy-book-progress.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html class="h-full" lang="ru">
+
+<head>
+ <title>Компьютерная безопасность книга</title>
+ <link rel="icon" href="/assets/icons/logo.svg" type="image/svg+xml">
+ <!-- OG -->
+ <meta property="og:title" content="TODO" />
+ <meta property="og:description" content="TODO" />
+ <meta property="og:image" content="TODO" />
+ <meta property="og:url" content="https://mnik01-blog.mlibren.com" />
+ <meta property="og:type" content="website" />
+ <!-- OG -->
+
+ <meta charset="UTF-8">
+ <!-- TODO: replace with static css -->
+ <script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+</head>
+
+<body class="relative">
+ <div class="fixed top-0 translate-x-12 translate-y-10 z-40 right-0">
+ <span class="font-bold text-black rotate-45 w-[200px] text-center block bg-yellow-400">В разработке</span>
+ </div>
+ <!-- %include.header% -->
+ <main>
+ <div class="py-12 mx-auto container max-sm:px-5">
+ <h1 class="text-3xl mb-4 font-medium font-serif">Компьюетрная грамотность</h1>
+ <p>TODO</p>
+ <a class="mt-4 underline underline-offset-6 decoration-yellow-500 decoration-[0.07rem] decoration-wavy first-letter:capitalize block" href="/">← На главную</a>
+ </div>
+ <!-- %include.common-section% -->
+ </main>
+ <!-- %include.footer% -->
+</body>
+
+</html> \ No newline at end of file
diff --git a/src/pages/index.html b/src/pages/index.html
new file mode 100644
index 0000000..0a87d64
--- /dev/null
+++ b/src/pages/index.html
@@ -0,0 +1,113 @@
+<!DOCTYPE html>
+<html class="h-full" lang="ru">
+
+<head>
+ <title>Максим Никонов личная страница</title>
+ <link rel="icon" href="/assets/icons/favicon.svg" type="image/svg+xml">
+ <!-- OG -->
+ <meta property="og:title" content="TODO" />
+ <meta property="og:description" content="TODO" />
+ <meta property="og:image" content="TODO" />
+ <meta property="og:url" content="https://mnik01-blog.mlibren.com" />
+ <meta property="og:type" content="website" />
+ <!-- OG -->
+
+ <meta charset="UTF-8">
+ <!-- TODO: replace with static css -->
+ <script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+</head>
+
+<body class="relative">
+ <div class="fixed top-0 translate-x-12 translate-y-10 z-40 right-0">
+ <span class="font-bold text-black rotate-45 w-[200px] text-center block bg-yellow-400">В разработке</span>
+ </div>
+ <!-- %include.book-progress-banner% -->
+ <!-- %include.header% -->
+ <main>
+ <div class="mx-auto flex flex-col-reverse py-12 md:grid gap-4 grid-cols-12 container max-sm:px-5">
+ <section class="col-span-9">
+ <ul class="space-y-10">
+ <li>
+ <article>
+ <header>
+ <h1 class="text-2xl first-letter:capitalize">понял смысл last.fm спустя пять лет</h1>
+ <div class="flex flex-wrap gap-2 mt-2">
+ <time class="text-zinc-600 text-sm">UTC 01:56 09.09.25</time>
+ <a href="#" class="flex items-center justify-center bg-pink-200 rounded-lg hover:underline px-1.5 text-pink-600 first-letter:capitalize text-xs">музыка</a>
+ </div>
+ </header>
+ <main class="space-y-2 mt-4">
+ <p>Когда я впервые зарегистрировался на Last.fm, мне казалось, что это просто ещё один плеер со статистикой. Несколько недель я смотрел на графики прослушиваний и топы исполнителей, но не видел в этом никакой особой пользы. Со временем интерес угас, а аккаунт превратился в мёртвый архив случайных треков.
+ </p><p>
+ И только спустя пять лет я понял, что Last.fm — это не про «текущий момент», а про память. Это как дневник, который ведётся автоматически: фиксирует все музыкальные периоды, эксперименты с жанрами, случайные открытия. Когда смотришь назад, видишь не просто список песен, а целую историю жизни, связанную с конкретными мелодиями.
+ </p><p>
+ Теперь я воспринимаю Last.fm как инструмент для саморефлексии. Музыка всегда была фоном событий, а сервис неожиданно стал картой этого фона. Он показывает, как менялся мой вкус, какие периоды были важными и какие альбомы оказались со мной надолго. Это не про алгоритмы и рекомендации, а про возможность оглянуться назад и увидеть себя другого.</p>
+ </main>
+ <a class="mt-4 underline underline-offset-6 decoration-yellow-500 decoration-[0.07rem] decoration-wavy first-letter:capitalize block" href="/posts/ponial-last-fm-spustia-5-let.html">продолжить чтение →</a>
+ </article>
+ </li>
+ <li>
+ <article>
+ <header>
+ <h1 class="text-2xl first-letter:capitalize">какими, по-моему, должны быть мобильные телефоны</h1>
+ <div class="flex flex-wrap gap-2 mt-2">
+ <time class="text-zinc-600 text-sm">UTC 01:56 12.09.25</time>
+ <a href="#" class="flex items-center justify-center bg-orange-200 rounded-lg px-1.5 text-orange-600 first-letter:capitalize hover:underline text-xs">hardware</a>
+ <a href="#" class="flex items-center justify-center bg-yellow-200 rounded-lg px-1.5 text-yellow-600 first-letter:capitalize hover:underline text-xs">software</a>
+ <a href="#" class="flex items-center justify-center bg-blue-200 rounded-lg px-1.5 text-blue-600 first-letter:capitalize hover:underline text-xs">linux</a>
+ </div>
+ </header>
+ <main class="space-y-2 mt-4">
+ <img width="192" height="192" class="border border-zinc-200 mr-4 float-left" src="/assets/phone.png" />
+ <p>Когда я впервые зарегистрировался на Last.fm, мне казалось, что это просто ещё один плеер со статистикой. Несколько недель я смотрел на графики прослушиваний и топы исполнителей, но не видел в этом никакой особой пользы. Со временем интерес угас, а аккаунт превратился в мёртвый архив случайных треков.
+ </p><p>
+ И только спустя пять лет я понял, что Last.fm — это не про «текущий момент», а про память. Это как дневник, который ведётся автоматически: фиксирует все музыкальные периоды, эксперименты с жанрами, случайные открытия. Когда смотришь назад, видишь не просто список песен, а целую историю жизни, связанную с конкретными мелодиями.
+ </p><p>
+ Теперь я воспринимаю Last.fm как инструмент для саморефлексии. Музыка всегда была фоном событий, а сервис неожиданно стал картой этого фона. Он показывает, как менялся мой вкус, какие периоды были важными и какие альбомы оказались со мной надолго. Это не про алгоритмы и рекомендации, а про возможность оглянуться назад и увидеть себя другого.</p>
+ </main>
+ <a class="mt-4 underline underline-offset-6 decoration-yellow-500 decoration-[0.07rem] decoration-wavy first-letter:capitalize block" href="/posts/mobile-phones.html">продолжить чтение →</a>
+ </article>
+ </li>
+ </ul>
+ </section>
+ <aside class="col-span-3">
+ <form class="flex outline-offset-4 outline-yellow-600/50 has-focus:outline-2" action="/search" method="get" role="search">
+ <input
+ class="border focus:outline-0 grow text-sm pl-3 border-zinc-200 h-10"
+ type="search"
+ id="search"
+ name="q"
+ required
+ >
+ <button class="px-6 cursor-pointer first-letter:capitalize bg-zinc-200 text-sm" type="submit">поиск</button>
+ </form>
+ <nav class="max-md:hidden pt-6">
+ <span class=" capitalize">публикации</span>
+ <ul class="space-y-2 mt-2">
+ <li><a class="text-sm hover:underline first-letter:capitalize block text-zinc-600" href="#">понял смысл last.fm спустя пять лет</a></li>
+ <li><a class="text-sm hover:underline first-letter:capitalize block text-zinc-600" href="#">какими, по-моему, должны быть мобильные телефоны</a></li>
+ <li><a class="text-sm hover:underline first-letter:capitalize block text-zinc-600" href="#">Слепая подпись. Разбор криптографического алгоритма</a></li>
+ <li><a class="text-sm hover:underline first-letter:capitalize block text-zinc-600" href="#">как учителя стали мелкими чиновниками</a></li>
+ <li><a class="text-sm hover:underline first-letter:capitalize block text-zinc-600" href="#">рецензия на демо игры "Смерть Царя"</a></li>
+ </ul>
+ </nav>
+ <nav class="pt-6">
+ <span class=" capitalize">категории</span>
+ <ul id="tags-aside" class="flex flex-wrap gap-2 mt-2">
+ <li><a href="#" class="flex items-center justify-center bg-blue-200 rounded-lg px-1.5 text-blue-600 first-letter:capitalize text-xs hover:underline w-fit">linux</a></li>
+ <li><a href="#" class="flex items-center justify-center bg-zinc-200 rounded-lg px-1.5 text-zinc-600 first-letter:capitalize text-xs hover:underline w-fit">приватность</a></li>
+ <li><a href="#" class="flex items-center justify-center bg-orange-200 rounded-lg px-1.5 text-orange-600 first-letter:capitalize text-xs hover:underline w-fit">hardware</a></li>
+ <li><a href="#" class="flex items-center justify-center bg-yellow-200 rounded-lg px-1.5 text-yellow-600 first-letter:capitalize text-xs hover:underline w-fit">software</a></li>
+ <li><a href="#" class="flex items-center justify-center bg-pink-200 rounded-lg px-1.5 text-pink-600 first-letter:capitalize text-xs hover:underline w-fit">музыка</a></li>
+ <li><a href="#" class="flex items-center justify-center bg-sky-200 rounded-lg px-1.5 text-sky-600 first-letter:capitalize text-xs hover:underline w-fit">смартфоны</a></li>
+ </ul>
+ </nav>
+ </aside>
+ </div>
+ <!-- %include.common-section% -->
+ </main>
+ <!-- %include.footer% -->
+</body>
+
+</html> \ No newline at end of file
diff --git a/src/pages/posts/mobile-phones.html b/src/pages/posts/mobile-phones.html
new file mode 100644
index 0000000..cb4c9c3
--- /dev/null
+++ b/src/pages/posts/mobile-phones.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<html class="h-full" lang="ru">
+
+<head>
+ <title>Максим Никонов личная страница</title>
+ <link rel="icon" href="/assets/icons/logo.svg" type="image/svg+xml">
+ <!-- OG -->
+ <meta property="og:title" content="TODO" />
+ <meta property="og:description" content="TODO" />
+ <meta property="og:image" content="TODO" />
+ <meta property="og:url" content="https://mnik01-blog.mlibren.com" />
+ <meta property="og:type" content="website" />
+ <!-- OG -->
+
+ <meta charset="UTF-8">
+ <!-- TODO: replace with static css -->
+ <script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+</head>
+
+<body class="relative">
+ <div class="fixed top-0 translate-x-12 translate-y-10 z-40 right-0">
+ <span class="font-bold text-black rotate-45 w-[200px] text-center block bg-yellow-400">В разработке</span>
+ </div>
+ <!-- %include.book-progress-banner% -->
+ <!-- %include.header% -->
+ <main>
+ <div class="mx-auto flex flex-col-reverse py-12 md:grid gap-4 grid-cols-12 container max-sm:px-5">
+ <section class="col-span-9">
+ <article>
+ <header>
+ <h1 class="text-2xl font-serif first-letter:capitalize">какими, по-моему, должны быть мобильные телефоны</h1>
+ <div id="tags" class="flex flex-wrap gap-2 mt-2">
+ <time class="text-zinc-600 text-sm">GTM+5 01:56 08.09.25</time>
+ <a href="#" class="flex items-center justify-center bg-orange-200 rounded-lg px-1.5 text-orange-600 first-letter:capitalize hover:underline text-xs">hardware</a>
+ <a href="#" class="flex items-center justify-center bg-yellow-200 rounded-lg px-1.5 text-yellow-600 first-letter:capitalize hover:underline text-xs">software</a>
+ <a href="#" class="flex items-center justify-center bg-blue-200 rounded-lg px-1.5 text-blue-600 first-letter:capitalize hover:underline text-xs">linux</a>
+ <a href="#" class="flex items-center justify-center bg-sky-200 rounded-lg px-1.5 text-sky-600 first-letter:capitalize hover:underline text-xs">смартфоны</a>
+ </div>
+ </header>
+ <main class="space-y-2 mt-4">
+ <img width="192" height="192" class="border border-zinc-200 mr-4 float-left" src="/assets/phone.png" />
+ TODO
+ </main>
+ <a class="mt-4 underline underline-offset-6 decoration-yellow-500 decoration-[0.07rem] decoration-wavy first-letter:capitalize block" href="/posts/ponial-last-fm-spustia-5-let.html">продолжить чтение →</a>
+ </article>
+ </section>
+ <aside class="col-span-3">
+ <form class="flex outline-offset-4 outline-yellow-600/50 has-focus:outline-2" action="/search" method="get" role="search">
+ <input
+ class="border focus:outline-0 grow text-sm pl-3 border-zinc-200 h-10"
+ type="search"
+ id="search"
+ name="q"
+ required
+ >
+ <button class="px-6 cursor-pointer first-letter:capitalize bg-zinc-200 text-sm" type="submit">поиск</button>
+ </form>
+ <nav class="max-md:hidden pt-6">
+ <span class=" capitalize">публикации</span>
+ <ul class="space-y-2 mt-2">
+ <li><a class="text-sm hover:underline first-letter:capitalize block text-zinc-600" href="#">понял смысл last.fm спустя пять лет</a></li>
+ <li><a class="text-sm hover:underline first-letter:capitalize block text-zinc-600" href="#">какими, по-моему, должны быть мобильные телефоны</a></li>
+ <li><a class="text-sm hover:underline first-letter:capitalize block text-zinc-600" href="#">Слепая подпись. Разбор криптографического алгоритма</a></li>
+ <li><a class="text-sm hover:underline first-letter:capitalize block text-zinc-600" href="#">как учителя стали мелкими чиновниками</a></li>
+ <li><a class="text-sm hover:underline first-letter:capitalize block text-zinc-600" href="#">рецензия на демо игры "Смерть Царя"</a></li>
+ </ul>
+ </nav>
+ <nav class="pt-6">
+ <span class=" capitalize">категории</span>
+ <ul id="tags-aside" class="flex flex-wrap gap-2 mt-2">
+ <li><a href="#" class="flex items-center justify-center bg-blue-200 rounded-lg px-1.5 text-blue-600 first-letter:capitalize text-xs hover:underline w-fit">linux</a></li>
+ <li><a href="#" class="flex items-center justify-center bg-zinc-200 rounded-lg px-1.5 text-zinc-600 first-letter:capitalize text-xs hover:underline w-fit">приватность</a></li>
+ <li><a href="#" class="flex items-center justify-center bg-orange-200 rounded-lg px-1.5 text-orange-600 first-letter:capitalize text-xs hover:underline w-fit">hardware</a></li>
+ <li><a href="#" class="flex items-center justify-center bg-yellow-200 rounded-lg px-1.5 text-yellow-600 first-letter:capitalize text-xs hover:underline w-fit">software</a></li>
+ <li><a href="#" class="flex items-center justify-center bg-pink-200 rounded-lg px-1.5 text-pink-600 first-letter:capitalize text-xs hover:underline w-fit">музыка</a></li>
+ <li><a href="#" class="flex items-center justify-center bg-sky-200 rounded-lg px-1.5 text-sky-600 first-letter:capitalize text-xs hover:underline w-fit">смартфоны</a></li>
+ </ul>
+ </nav>
+ </aside>
+ </div>
+ <!-- %include.common-section% -->
+ </main>
+ <!-- %include.footer% -->
+</body>
+
+</html> \ No newline at end of file
diff --git a/src/partials/book-progress-banner.html b/src/partials/book-progress-banner.html
new file mode 100644
index 0000000..3d52164
--- /dev/null
+++ b/src/partials/book-progress-banner.html
@@ -0,0 +1,22 @@
+<!-- Banner -->
+<a href="/computer-literacy-book-progress.html" class="font-serif block relative overflow-clip">
+ <!-- Binary numbers with gradient overlay -->
+ <div class="absolute inset-0 z-0">
+ <!-- Binary numbers -->
+ <div class="absolute flex text-5xl scale-105 tabular-nums text-black/20 flex-col right-0 top-0 -translate-y-3">
+ <span class="translate-x-0">10101011001010100101101011010100101</span>
+ <span class="translate-x-24">01010110101101001010101101001010110</span>
+ <span class="translate-x-8">11010010101010110100101011010101001</span>
+ <span class="translate-x-16">00101011010010101010101101001011010</span>
+ <span class="translate-x-2">10100101010110101001011010101010011</span>
+ </div>
+ <!-- Gradient overlay -->
+ <div class="absolute inset-0 bg-gradient-to-r from-white max-md:from-35% to-white/0"></div>
+ </div>
+
+ <!-- Text content on top -->
+ <div class="relative z-10 mx-auto py-12 h-54 container max-sm:px-5 flex flex-col justify-between">
+ <h1 class="capitalize text-3xl">Компьютерная<br/>грамотность</h1>
+ <span class="underline block first-letter:capitalize">Следить за прогрессом выхода книги</span>
+ </div>
+</a> \ No newline at end of file
diff --git a/src/partials/common-section.html b/src/partials/common-section.html
new file mode 100644
index 0000000..7183892
--- /dev/null
+++ b/src/partials/common-section.html
@@ -0,0 +1,40 @@
+<section class="bg-gradient-to-b pb-12 from-zinc-900 to-black text-white font-serif">
+ <div class="mx-auto space-y-12 pt-24 pb-32 container max-sm:px-5 ">
+ <section id="support" class="grid grid-cols-1 md:grid-cols-3">
+ <span class="block mb-6 first-letter:capitalize text-2xl">поддержать</span>
+ <div class="grid grid-cols-1 sm:grid-cols-2 md:contents">
+ <div class="flex gap-5">
+ <span class="text-yellow-300 capitalize">monero</span>
+ <div class="space-y-3">
+ <img class="invert" width="192" height="192" src="/assets/monero-qr.png">
+ <div class="max-w-[192px] border overflow-x-scroll grow text-sm pb-3 border-zinc-200">83FnHA4VUDBWiTwkqBJssTTV6DaE5NBnoaW2iRTLMMPBeykwgY8EK1U76RjJVLe6YYFgkkWfvMeH3fxVDkFT7GHfFxbRqte</div>
+ </div>
+ </div>
+ <div class="flex gap-5 max-sm:mt-6">
+ <span class="text-yellow-300 capitalize">bitcoin</span>
+ <div class="space-y-3">
+ <img class="invert" width="192" height="192" src="/assets/monero-qr.png">
+ <div class="max-w-[192px] border overflow-x-scroll grow text-sm pb-3 border-zinc-200">83FnHA4VUDBWiTwkqBJssTTV6DaE5NBnoaW2iRTLMMPBeykwgY8EK1U76RjJVLe6YYFgkkWfvMeH3fxVDkFT7GHfFxbRqte</div>
+ </div>
+ </div>
+ </div>
+ </section>
+ <section>
+ <span class="block first-letter:capitalize text-2xl mb-3">публичные ключи</span>
+ <span>GPG</span>
+ <span>PGP</span>
+ </section>
+ <section>
+ <span class="block first-letter:capitalize text-2xl mb-3">принять участие</span>
+ <span>smtp email</span>
+ <span>поддомен</span>
+ <span>дизайн разработка сайта</span>
+ </section>
+ <section>
+ <span class="block first-letter:capitalize text-2xl mb-3">доступ к веб-сайту</span>
+ <span>Tor</span>
+ <span>Clear net</span>
+ <span>Spartran</span>
+ </section>
+ </div>
+</section> \ No newline at end of file
diff --git a/src/partials/footer.html b/src/partials/footer.html
new file mode 100644
index 0000000..1044aba
--- /dev/null
+++ b/src/partials/footer.html
@@ -0,0 +1,30 @@
+<footer class="relative font-serif">
+ <img class="w-full" src="/assets/images/paper-texture.png" alt="paper cut texture">
+ <div class="relative pb-8 pt-24 overflow-y-clip">
+ <img class="absolute object-fill w-full h-full z-[-1] top-0 left-0" src="/assets/images/paper-cut.png" alt="paper texture">
+ <div class="mx-auto flex gap-8 flex-wrap container max-sm:px-5">
+ <a class="min-w-16" href="/"><img width="96" height="96" src="/assets/icons/logo.svg" alt="logo letter M"></a>
+ <ul class="flex gap-8 flex-wrap">
+ <li>
+ <p class="text-xl first-letter:capitalize mb-3">техническое</p>
+ <ul class="space-y-1.5">
+ <li><a class="underline" href="/rss.xml">RSS лента</a></li>
+ <li><a class="block underline first-letter:capitalize" href="/sitemap.xml">карта сайта</a></li>
+ <div class="flex items-center gap-3">
+ <p class="shrink first-letter:capitalize inline-block">веб-сайт работает без JavaScript</p>
+ <img class="size-8 shrink-0" width="32" height="32" alt="js must die icon" src="/assets/images/nojs.png">
+ </div>
+ </ul>
+ </li>
+ <li id="contact">
+ <p class="text-xl first-letter:capitalize mb-3">связь</p>
+ <ul class="space-y-1.5">
+ <li><span>XMPP Jabber: mnik01@yax.im</span></li>
+ <li><a class="underline" href="mailto:mnik01@mlibren.com">Эл. почта: mnik01@mlibren.com</a></li>
+ </ul>
+ </li>
+ </ul>
+ </div>
+ <span class="w-full mt-32 inline-block text-sm text-center">Дизайн и разработка веб-сайтов Максим Никонов (c) 2025 <a class="underline" href="mailto:mnik01@mlibren.com">mnik01@mlibren.com</a></span>
+ </div>
+</footer> \ No newline at end of file
diff --git a/src/partials/header.html b/src/partials/header.html
new file mode 100644
index 0000000..5be1296
--- /dev/null
+++ b/src/partials/header.html
@@ -0,0 +1,14 @@
+<header class="py-12 border-b border-zinc-200 flex flex-col gap-4 items-center">
+ <a href="/"><img width="96" height="96" src="/assets/icons/logo.svg" alt="logo letter M"></a>
+ <nav>
+ <ul class="flex justify-center text-zinc-600 text-sm gap-4 flex-wrap">
+ <li><a class="block first-letter:capitalize hover:underline" href="#">портфолио</a></li>
+ <li><a class="block first-letter:capitalize hover:underline" href="#">обо мне</a></li>
+ <li><a class="block first-letter:capitalize hover:underline" href="#">резюме</a></li>
+ <li><a class="block first-letter:capitalize hover:underline" href="#">публикации</a></li>
+ <li><a class="block first-letter:capitalize hover:underline" href="#">гостевая книга</a></li>
+ <li><a class="block first-letter:capitalize hover:underline" href="#contact">связь</a></li>
+ <li><a class="block first-letter:capitalize hover:underline" href="#support">поддержать</a></li>
+ </ul>
+ </nav>
+</header> \ No newline at end of file
diff --git a/src/partials/sidebar.html b/src/partials/sidebar.html
new file mode 100644
index 0000000..927137e
--- /dev/null
+++ b/src/partials/sidebar.html
@@ -0,0 +1 @@
+sidebar.html \ No newline at end of file