diff --git a/astro.config.mjs b/astro.config.mjs
index e762ba5..a4034fb 100644
--- a/astro.config.mjs
+++ b/astro.config.mjs
@@ -1,5 +1,9 @@
// @ts-check
import { defineConfig } from 'astro/config';
+import tailwindcss from '@tailwindcss/vite';
-// https://astro.build/config
-export default defineConfig({});
+export default defineConfig({
+ vite: {
+ plugins: [tailwindcss()]
+ }
+});
\ No newline at end of file
diff --git a/biome.json b/biome.json
new file mode 100644
index 0000000..fe05d88
--- /dev/null
+++ b/biome.json
@@ -0,0 +1,34 @@
+{
+ "$schema": "https://biomejs.dev/schemas/2.4.13/schema.json",
+ "vcs": {
+ "enabled": true,
+ "clientKind": "git",
+ "useIgnoreFile": true
+ },
+ "files": {
+ "includes": ["**", "!!**/dist"]
+ },
+ "formatter": {
+ "enabled": true,
+ "indentStyle": "tab"
+ },
+ "linter": {
+ "enabled": true,
+ "rules": {
+ "recommended": true
+ }
+ },
+ "javascript": {
+ "formatter": {
+ "quoteStyle": "double"
+ }
+ },
+ "assist": {
+ "enabled": true,
+ "actions": {
+ "source": {
+ "organizeImports": "on"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
index 9e2a993..46b5717 100644
--- a/package.json
+++ b/package.json
@@ -15,6 +15,12 @@
"preinstall": "node ./scripts/enforce-pnpm.mjs"
},
"dependencies": {
- "astro": "^5.16.10"
+ "@tailwindcss/vite": "^4.2.4",
+ "@webtui/css": "^0.1.7",
+ "astro": "^6.1.8",
+ "tailwindcss": "^4.2.4"
+ },
+ "devDependencies": {
+ "@biomejs/biome": "2.4.13"
}
}
\ No newline at end of file
diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro
new file mode 100644
index 0000000..80907c2
--- /dev/null
+++ b/src/layouts/Layout.astro
@@ -0,0 +1,16 @@
+---
+import "../styles/global.css";
+---
+
+
+
+
+
+
+
+ NikitaPozd Dev
+
+
+
+
+
diff --git a/src/pages/demo.astro b/src/pages/demo.astro
new file mode 100644
index 0000000..f2a4c72
--- /dev/null
+++ b/src/pages/demo.astro
@@ -0,0 +1,749 @@
+---
+// src/pages/index.astro
+// Для полноценного проекта лучше вынести WebTUI-импорты в src/styles/global.css
+// и подключить файл в root layout, но этот single-file макет можно сразу вставить
+// в Astro для быстрого старта.
+
+const articles = [
+ {
+ title: "Нативный light/dark без лишнего JS",
+ tag: "CSS / UI",
+ meta: "06.04.2026",
+ desc: "Разбор переключения темы, системных предпочтений и аккуратной деградации интерфейса.",
+ },
+ {
+ title: "Astro + WebTUI: терминальный UI без боли",
+ tag: "ASTRO / WEBTUI",
+ meta: "02.04.2026",
+ desc: "Как подключить стили, разнести слои и не потерять читаемость в гибридном интерфейсе.",
+ },
+ {
+ title: "React-архитектура для pet-проектов",
+ tag: "REACT / TS",
+ meta: "27.03.2026",
+ desc: "Минимальный, но живучий сетап: фичи, shared-слой, UI-кит и понятные контракты.",
+ },
+];
+
+const projects = [
+ {
+ title: "UI System",
+ type: "DESIGN SYSTEM",
+ status: "ONLINE",
+ desc: "Компоненты и паттерны для React / Solid с единым visual language.",
+ },
+ {
+ title: "Lab Notes",
+ type: "BLOG",
+ status: "SYNCED",
+ desc: "Статьи, заметки и эксперименты по фронтенду, DX и интерфейсам.",
+ },
+ {
+ title: "Experiments",
+ type: "PLAYGROUND",
+ status: "WIP",
+ desc: "Графика, WebGPU, 3D и интерактивные эксперименты.",
+ },
+];
+
+const contacts = ["GitHub", "Telegram", "Email", "LinkedIn"];
+---
+
+
+
+
+
+ Никита Поздняков — Frontend Engineer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ personal node / online
+
+
Никита Поздняков
+
+ Фронтенд-разработчик. Делаю быстрые, аккуратные интерфейсы на React,
+ TypeScript, Next.js и Astro. Люблю дизайн-системы, терминальную эстетику и
+ чуть-чуть киберпанка.
+
+
+
+
+
+ status
+ v0.01
+
+ stack React / TS
+ focus DX / UI
+ mode building
+ location remote
+
+
+
+
+
Статьи 013
+
Проекты 008
+
Опыт с UI 06+
+
+
+
+ Смотреть статьи
+ Открыть проекты
+
+
+
+
+
+
+ mission feed
+ active
+
+
+
Собрать личный сайт с сильной визуальной системой
+
Показать статьи, проекты и стек без визуального шума
+
Смешать WebTUI и HUD Watch Dogs в современный лендинг
+
+
+
+
+
+ quick links
+ sync
+
+
+ {contacts.map((item) => (
+
{item}
+ ))}
+
+
+
+
+
+
+
+
+
+
+
+ Мне нравится делать интерфейсы, в которых есть структура, ритм и понятная
+ логика. Люблю, когда дизайн не спорит с контентом, а усиливает его.
+
+
+ Этот макет опирается на спокойную структуру персонального сайта, но сверху
+ добавляет HUD-слои, статусы, терминальные компоненты и акцентные панели в
+ духе ctOS.
+
+
+
+
+ {['Next.js', 'TypeScript', 'Design Systems', 'Astro', 'Accessibility', 'Motion'].map((item) => (
+ {item}
+ ))}
+
+
+
+
+
+
+
articles.log
+
Последние статьи
+
+
Все записи
+
+
+
+ {articles.map((article) => (
+
+
+ {article.tag}
+ {article.meta}
+
+ {article.title}
+ {article.desc}
+
+ ))}
+
+
+
+
+
+
+
+
projects.map
+
Избранные проекты
+
+
3 active nodes
+
+
+
+ {projects.map((project) => (
+
+
+ {project.type}
+ {project.status}
+
+ {project.title}
+ {project.desc}
+
+
+ ))}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/index.astro b/src/pages/index.astro
index d59f4f7..639fce5 100644
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -1,16 +1,7 @@
---
+import Layout from "../layouts/Layout.astro";
+---
----
-
-
-
-
-
-
-
- Astro
-
-
- Nikita Pozd Main Site
-
-
+
+ Hello WebTUI
+
diff --git a/src/pages/ui.astro b/src/pages/ui.astro
new file mode 100644
index 0000000..a715f9b
--- /dev/null
+++ b/src/pages/ui.astro
@@ -0,0 +1,48 @@
+---
+import Layout from "../layouts/Layout.astro";
+---
+
+
+
+ Heading 1
+ Heading 2
+ Heading 3
+ Heading 4
+ Heading 5
+ Heading 6
+
+ Summary title
+ Accordion content
+
+
+
+
+
Are you sure you want to delete this?
+
+ Cancel
+ Delete
+
+
+
+ Open Dialog
+
+
+
+
+
\ No newline at end of file
diff --git a/src/styles/global.css b/src/styles/global.css
new file mode 100644
index 0000000..e33475d
--- /dev/null
+++ b/src/styles/global.css
@@ -0,0 +1,15 @@
+@layer theme, base, components, utilities;
+@import "tailwindcss";
+
+@import "@webtui/css/base.css" layer(base);
+
+/* utilities */
+@import "@webtui/css/utils/box.css" layer(utilities);
+
+/* components */
+@import "@webtui/css/components/typography.css" layer(components);
+
+@import "@webtui/css/components/button.css" layer(components);
+@import '@webtui/css/components/accordion.css' layer(components);
+@import '@webtui/css/components/dialog.css' layer(components);
+