@@ -3,126 +3,25 @@ import { ArrowRight, Bot, Brain, BrainCircuit, Code2, Database, ExternalLink, Gi
33
44import { buttonVariants } from "@/components/ui/button" ;
55import { cn } from "@/lib/utils" ;
6+ import { getTrackDefinitions , type TrackIconKey } from "@/lib/tracks" ;
67
78export const dynamic = "force-static" ;
89
9- const tracks = [
10- // Keep cards in the same order as sidebar section ordering for predictable navigation.
11- {
12- title : "Python" ,
13- subtitle : "Практики по OOP, тестированию и функциональному стилю" ,
14- href : "/docs/python" ,
15- icon : Code2
16- } ,
17- {
18- title : "AI" ,
19- subtitle : "Ноутбуки Notebook1..Notebook8 по курсу ИИ" ,
20- href : "/docs/ai" ,
21- icon : Bot
22- } ,
23- {
24- title : "BigData" ,
25- subtitle : "Практики по анализу данных, классификации и кластеризации" ,
26- href : "/docs/bigdata" ,
27- icon : Database
28- } ,
29- {
30- title : "Java" ,
31- subtitle : "24 практики по ООП, коллекциям, MVC и паттернам" ,
32- href : "/docs/java" ,
33- icon : Brain
34- } ,
35- {
36- title : "Algorithms" ,
37- subtitle : "Методические материалы и структурированные разборы" ,
38- href : "/docs/algorithms" ,
39- icon : Sigma
40- } ,
41- {
42- title : "Процедурное программирование" ,
43- subtitle : "Базовые конструкции, декомпозиция и процедурный стиль" ,
44- href : "/docs/procedural-programming" ,
45- icon : Code2
46- } ,
47- {
48- title : "Объектно ориентированное программирование" ,
49- subtitle : "Классы, инкапсуляция, наследование и полиморфизм" ,
50- href : "/docs/object-oriented-programming" ,
51- icon : Brain
52- } ,
53- {
54- title : "Структуры и алгоритмы обработки данных (часть 1)" ,
55- subtitle : "Введение в структуры данных и базовые алгоритмы" ,
56- href : "/docs/data-structures-and-algorithms-part-1" ,
57- icon : Sigma
58- } ,
59- {
60- title : "React" ,
61- subtitle : "Компонентная разработка и построение интерфейсов" ,
62- href : "/docs/react" ,
63- icon : Bot
64- } ,
65- {
66- title : "Структуры и алгоритмы обработки данных (часть 2)" ,
67- subtitle : "Продвинутые алгоритмы и анализ производительности" ,
68- href : "/docs/data-structures-and-algorithms-part-2" ,
69- icon : Sigma
70- } ,
71- {
72- title : "Конфигурационное управление" ,
73- subtitle : "Версионирование, окружения и управление изменениями" ,
74- href : "/docs/configuration-management" ,
75- icon : GitPullRequest
76- } ,
77- {
78- title : "Анализ и концептуальное моделирование систем (часть 1)" ,
79- subtitle : "Системный анализ, требования и концептуальные модели" ,
80- href : "/docs/systems-analysis-and-conceptual-modeling-part-1" ,
81- icon : Database
82- } ,
83- {
84- title : "Технология разработки программных приложений (часть 1)" ,
85- subtitle : "Процессы, паттерны и практики разработки приложений" ,
86- href : "/docs/software-application-development-part-1" ,
87- icon : Code2
88- } ,
89- {
90- title : "Интернет вещей" ,
91- subtitle : "IoT-архитектуры, обмен данными и интеграции устройств" ,
92- href : "/docs/internet-of-things" ,
93- icon : Bot
94- } ,
95- {
96- title : "Моделирование бизнес процессов" ,
97- subtitle : "Модели процессов, роли, события и оптимизация" ,
98- href : "/docs/business-process-modeling" ,
99- icon : Database
100- } ,
101- {
102- title : "Разработка баз данных" ,
103- subtitle : "Проектирование схем, SQL и практика работы с БД" ,
104- href : "/docs/database-development" ,
105- icon : Database
106- } ,
107- {
108- title : "Тестирование и верификация ПО" ,
109- subtitle : "Unit/Integration тестирование и контроль качества" ,
110- href : "/docs/software-testing-and-verification" ,
111- icon : ListChecks
112- } ,
113- {
114- title : "Системное администрирование" ,
115- subtitle : "Серверы, сервисы, сети и эксплуатация инфраструктуры" ,
116- href : "/docs/system-administration" ,
117- icon : Brain
118- } ,
119- {
120- title : "Управление проектами" ,
121- subtitle : "Планирование, сроки, риски и командные процессы" ,
122- href : "/docs/project-management" ,
123- icon : GitPullRequest
124- }
125- ] ;
10+ const iconByKey : Record < TrackIconKey , typeof Bot > = {
11+ bot : Bot ,
12+ brain : Brain ,
13+ code2 : Code2 ,
14+ database : Database ,
15+ gitPullRequest : GitPullRequest ,
16+ listChecks : ListChecks ,
17+ sigma : Sigma
18+ } ;
19+
20+ const tracks = getTrackDefinitions ( ) . map ( ( track ) => ( {
21+ ...track ,
22+ href : `/docs/${ track . id } ` ,
23+ icon : iconByKey [ track . iconKey ]
24+ } ) ) ;
12625
12726const publicationRules = [
12827 {
@@ -255,8 +154,8 @@ export default function HomePage() {
255154 < div className = "mb-4 inline-flex rounded-lg border border-border/70 bg-background/70 p-2 text-muted-foreground transition-colors group-hover:text-primary" >
256155 < Icon className = "size-5" />
257156 </ div >
258- < h2 className = "text-base font-semibold leading-snug tracking-tight break-words " > { track . title } </ h2 >
259- < p className = "mt-2 break-words text-sm leading-6 text-muted-foreground" > { track . subtitle } </ p >
157+ < h2 className = "break-words text-base font-semibold leading-snug tracking-tight" > { track . title } </ h2 >
158+ < p className = "mt-2 break-words text-sm leading-6 text-muted-foreground" > { track . homeSubtitle } </ p >
260159 < span className = "mt-auto pt-5 inline-flex items-center gap-1.5 text-sm text-primary" >
261160 Перейти
262161 < ArrowRight className = "size-3.5" />
0 commit comments