Initial commit (secrets removed)

This commit is contained in:
Ali Arghyani
2025-11-04 09:09:29 +03:30
commit e1bc3d8adf
182 changed files with 17578 additions and 0 deletions
+7
View File
@@ -0,0 +1,7 @@
<template>
<UContainer>
<UAlert color="yellow" variant="soft" title="Blog disabled">
Nuxt Content is temporarily disabled. Blog post rendering will be restored later.
</UAlert>
</UContainer>
</template>
+22
View File
@@ -0,0 +1,22 @@
<template>
<section class="py-10">
<UContainer>
<div class="mb-8 flex flex-wrap items-center justify-between gap-4">
<div>
<p class="text-sm uppercase tracking-wide text-primary-500 dark:text-primary-300">{{ t('blog.explore') }}</p>
<h1 class="text-3xl font-semibold">{{ t('sections.blog') }}</h1>
</div>
</div>
<div class="rounded-xl border border-dashed border-gray-300 p-8 text-center text-gray-500 dark:border-gray-700 dark:text-gray-300">
Nuxt Content is temporarily disabled. Blog will be back soon.
</div>
</UContainer>
</section>
</template>
<script setup lang="ts">
const { locale, t } = useI18n()
// Blog listing requires @nuxt/content which is disabled for now
</script>
+56
View File
@@ -0,0 +1,56 @@
<template>
<div class="max-w-6xl mx-auto pt-24">
<!-- Above-the-fold content only (improves LCP by reducing initial render work) -->
<Hero />
<!-- Below-the-fold sections rendered on server for SEO (SSR) -->
<!-- <TagGroups /> -->
<Skills />
<AIStack />
<SoftSkills />
<LanguageSkills />
<WorkExperience />
<EducationList />
<RecommendationsCarousel />
<ProjectsList />
</div>
</template>
<script setup lang="ts">
import { ref, onMounted, defineAsyncComponent } from 'vue'
import Hero from '@/components/portfolio/Hero.vue'
const TagGroups = defineAsyncComponent(() => import('@/components/portfolio/TagGroups.vue'))
const Skills = defineAsyncComponent(() => import('@/components/portfolio/Skills.vue'))
const AIStack = defineAsyncComponent(() => import('@/components/portfolio/AIStack.vue'))
const SoftSkills = defineAsyncComponent(() => import('@/components/portfolio/SoftSkills.vue'))
const LanguageSkills = defineAsyncComponent(() => import('@/components/portfolio/LanguageSkills.vue'))
const WorkExperience = defineAsyncComponent(() => import('@/components/portfolio/WorkExperience.vue'))
const EducationList = defineAsyncComponent(() => import('@/components/portfolio/EducationList.vue'))
const RecommendationsCarousel = defineAsyncComponent(() => import('@/components/portfolio/RecommendationsCarousel.vue'))
const ProjectsList = defineAsyncComponent(() => import('@/components/portfolio/ProjectsList.vue'))
import { usePortfolio } from '@/composables/usePortfolio'
const appConfig = useAppConfig()
const portfolio = usePortfolio()
const { t, locale } = useI18n()
const siteTitle = computed(() => `${portfolio.value.profile.name}${t('meta.portfolioTitleSuffix')}`)
const description = computed(() => `${portfolio.value.profile.title}. ${portfolio.value.profile.summary}`)
useHead(() => ({
title: siteTitle.value,
link: [
{ rel: 'icon', type: 'image/svg+xml', href: '/favicon/newlogo.png' },
],
}))
useSeoMeta({
title: () => siteTitle.value,
description: () => description.value,
ogTitle: () => siteTitle.value,
ogDescription: () => description.value,
ogType: 'website',
ogLocale: () => (locale.value === 'fa' ? 'fa_IR' : 'en_US'),
})
</script>