diff --git a/public/admin/config.yml b/public/admin/config.yml
index f56e384..fd5970f 100644
--- a/public/admin/config.yml
+++ b/public/admin/config.yml
@@ -6,9 +6,8 @@ backend:
base_url: https://stepanovplaton.ru
auth_endpoint: oauth
-# Явно указываем site_url для правильного формирования OAuth callback URL
-# Это предотвращает добавление порта 8091 к OAuth ссылкам
site_url: https://stepanovplaton.ru
+
media_folder: "public/images"
public_folder: "/images"
collections:
@@ -39,7 +38,7 @@ collections:
- { label: "Title", name: "title", widget: "string" }
- { label: "Description", name: "description", widget: "text" }
- { label: "Image", name: "image", widget: "image", required: false }
- - { label: "Category", name: "category", widget: "select", options: ["library","ai","software","website","game"] }
+ - { label: "Category", name: "category", widget: "select", options: ["proud","older","other"] }
- { label: "Tech Stack", name: "techStack", widget: "list", default: [] }
- { label: "Status", name: "status", widget: "select", options: ["completed","in-progress","planned"] }
- { label: "Live Demo", name: "liveDemo", widget: "string", required: false }
@@ -59,7 +58,7 @@ collections:
- { label: "Name", name: "name", widget: "string" }
- { label: "Description", name: "description", widget: "text" }
- { label: "Icon", name: "icon", widget: "string" }
- - { label: "Category", name: "category", widget: "select", options: ["ai","backend","client","frontend","database","engines","tools","others"] }
+ - { label: "Category", name: "category", widget: "select", options: ["ai","frontend","backend","native","devops","ide","tools","others"] }
- { label: "Level", name: "level", widget: "select", options: ["beginner","intermediate","advanced","expert"] }
- label: "Experience"
name: "experience"
diff --git a/public/admin/index.html b/public/admin/index.html
new file mode 100644
index 0000000..9a59462
--- /dev/null
+++ b/public/admin/index.html
@@ -0,0 +1,97 @@
+
+
+
+
+
+ Content Manager
+
+
+
+
+
+
+
diff --git a/src/components/musicPlayer.svelte b/src/components/musicPlayer.svelte
index b1b58d1..2f259aa 100644
--- a/src/components/musicPlayer.svelte
+++ b/src/components/musicPlayer.svelte
@@ -51,7 +51,7 @@ let currentTime = $state(0);
// 歌曲总时长
let duration = $state(0);
// 音量
-let volume = $state(0.5);
+let volume = $state(0.15);
// 是否静音
let isMuted = $state(false);
// 是否正在加载
diff --git a/src/i18n/i18nKey.ts b/src/i18n/i18nKey.ts
index 3968cc2..2a1b213 100644
--- a/src/i18n/i18nKey.ts
+++ b/src/i18n/i18nKey.ts
@@ -70,9 +70,8 @@ enum I18nKey {
projects = "projects",
projectsSubtitle = "projectsSubtitle",
projectsAll = "projectsAll",
- projectsWeb = "projectsWeb",
- projectsMobile = "projectsMobile",
- projectsDesktop = "projectsDesktop",
+ projectsProud = "projectsProud",
+ projectsOlder = "projectsOlder",
projectsOther = "projectsOther",
projectTechStack = "projectTechStack",
projectLiveDemo = "projectLiveDemo",
@@ -95,11 +94,11 @@ enum I18nKey {
skills = "skills",
skillsSubtitle = "skillsSubtitle",
skillsAI = "skillsAI",
- skillsBackend = "skillsBackend",
- skillsClient = "skillsClient",
skillsFrontend = "skillsFrontend",
- skillsDatabase = "skillsDatabase",
- skillsEngines = "skillsEngines",
+ skillsBackend = "skillsBackend",
+ skillsNative = "skillsNative",
+ skillsDevOps = "skillsDevOps",
+ skillsIDE = "skillsIDE",
skillsTools = "skillsTools",
skillsOthers = "skillsOthers",
skillLevel = "skillLevel",
diff --git a/src/i18n/languages/ru.ts b/src/i18n/languages/ru.ts
index f57e029..ed772d5 100644
--- a/src/i18n/languages/ru.ts
+++ b/src/i18n/languages/ru.ts
@@ -73,10 +73,9 @@ export const ru: Translation = {
[Key.projects]: "Проекты",
[Key.projectsSubtitle]: "Мое портфолио проектов",
[Key.projectsAll]: "Все",
- [Key.projectsWeb]: "Веб-приложения",
- [Key.projectsMobile]: "Мобильные приложения",
- [Key.projectsDesktop]: "Десктопные приложения",
- [Key.projectsOther]: "Другое",
+ [Key.projectsProud]: "Проекты, которыми я горжусь",
+ [Key.projectsOlder]: "Более старые проекты, которые показывают мой путь",
+ [Key.projectsOther]: "Прочие начинания",
[Key.projectTechStack]: "Технологический стек",
[Key.projectLiveDemo]: "Живая демонстрация",
[Key.projectSourceCode]: "Исходный код",
@@ -97,14 +96,14 @@ export const ru: Translation = {
// Страница навыков
[Key.skills]: "Навыки",
[Key.skillsSubtitle]: "Мои технические навыки и экспертиза",
- [Key.skillsAI]: "AI разработка",
- [Key.skillsBackend]: "Backend разработка",
- [Key.skillsClient]: "Client разработка",
- [Key.skillsFrontend]: "Frontend разработка",
- [Key.skillsDatabase]: "База данных",
- [Key.skillsEngines]: "Движки",
- [Key.skillsTools]: "Инструменты разработки",
- [Key.skillsOthers]: "Другие навыки",
+ [Key.skillsAI]: "ИИ",
+ [Key.skillsFrontend]: "Frontend",
+ [Key.skillsBackend]: "Backend",
+ [Key.skillsNative]: "Native",
+ [Key.skillsDevOps]: "DevOps",
+ [Key.skillsIDE]: "IDE",
+ [Key.skillsTools]: "Инструменты",
+ [Key.skillsOthers]: "Прочее",
[Key.skillLevel]: "Уровень владения",
[Key.skillLevelBeginner]: "Начинающий",
[Key.skillLevelIntermediate]: "Средний",
diff --git a/src/pages/projects.astro b/src/pages/projects.astro
index 9da2e8b..f6f3e26 100644
--- a/src/pages/projects.astro
+++ b/src/pages/projects.astro
@@ -44,12 +44,10 @@ const projectsByCategory = categories.reduce(
// 获取分类文本的国际化翻译
const getCategoryText = (category: string) => {
switch (category) {
- case "web":
- return i18n(I18nKey.projectsWeb);
- case "mobile":
- return i18n(I18nKey.projectsMobile);
- case "desktop":
- return i18n(I18nKey.projectsDesktop);
+ case "proud":
+ return i18n(I18nKey.projectsProud);
+ case "older":
+ return i18n(I18nKey.projectsOlder);
case "other":
return i18n(I18nKey.projectsOther);
case UNCATEGORIZED:
diff --git a/src/pages/skills.astro b/src/pages/skills.astro
index 2dd5065..47d779c 100644
--- a/src/pages/skills.astro
+++ b/src/pages/skills.astro
@@ -45,16 +45,16 @@ const getCategoryText = (category: string) => {
switch (category) {
case "ai":
return i18n(I18nKey.skillsAI);
- case "server":
- return i18n(I18nKey.skillsBackend);
- case "client":
- return i18n(I18nKey.skillsClient);
- case "web":
+ case "frontend":
return i18n(I18nKey.skillsFrontend);
- case "database":
- return i18n(I18nKey.skillsDatabase);
- case "engines":
- return i18n(I18nKey.skillsEngines);
+ case "backend":
+ return i18n(I18nKey.skillsBackend);
+ case "native":
+ return i18n(I18nKey.skillsNative);
+ case "devops":
+ return i18n(I18nKey.skillsDevOps);
+ case "ide":
+ return i18n(I18nKey.skillsIDE);
case "tools":
return i18n(I18nKey.skillsTools);
case "others":
diff --git a/src/utils/projects.ts b/src/utils/projects.ts
index bda46b8..4844ba2 100644
--- a/src/utils/projects.ts
+++ b/src/utils/projects.ts
@@ -7,7 +7,7 @@ export interface Project {
title: string;
description: string;
image: string;
- category: "library" | "ai" | "software" | "website" | "game";
+ category: "proud" | "older" | "other";
techStack: string[];
status: "completed" | "in-progress" | "planned";
demoUrl?: string;
diff --git a/src/utils/skills.ts b/src/utils/skills.ts
index 64a73bf..165906f 100644
--- a/src/utils/skills.ts
+++ b/src/utils/skills.ts
@@ -7,7 +7,7 @@ export interface Skill {
name: string;
description: string;
icon: string; // Iconify icon name
- category: "ai" | "backend" | "client" | "frontend" | "database" | "engines" | "tools" | "others";
+ category: "ai" | "frontend" | "backend" | "native" | "devops" | "ide" | "tools" | "others";
level: "beginner" | "intermediate" | "advanced" | "expert";
experience: {
years: number;
@@ -35,12 +35,12 @@ export const getSkillStats = () => {
};
const byCategory = {
ai: skillsData.filter((s) => s.category === "ai").length,
- backend: skillsData.filter((s) => s.category === "backend").length,
- client: skillsData.filter((s) => s.category === "client").length,
frontend: skillsData.filter((s) => s.category === "frontend").length,
- database: skillsData.filter((s) => s.category === "database").length,
+ backend: skillsData.filter((s) => s.category === "backend").length,
+ native: skillsData.filter((s) => s.category === "native").length,
+ devops: skillsData.filter((s) => s.category === "devops").length,
+ ide: skillsData.filter((s) => s.category === "ide").length,
tools: skillsData.filter((s) => s.category === "tools").length,
- engines: skillsData.filter((s) => s.category === "engines").length,
others: skillsData.filter((s) => s.category === "others").length,
};
return { total, byLevel, byCategory };