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 };