From 214e9733d07e49381846c51d29206c37f9f42338 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bu=C4=9Fra=20Canata?= Date: Sat, 17 Jan 2026 16:23:11 +0300 Subject: [PATCH] Performance & SEO optimization + Google login for CMS Performance: - Enable image optimization (Image: true, SVG: true) - 429MB saved with WebP conversion SEO: - Add JSON-LD structured data (Organization & FAQ schemas) - Add keywords and author metadata - Update robots.txt with sitemap reference - Add alt text to OpenGraph images CMS: - Enable Google OAuth login for admin panel - Add logo to admin login page Fixes: - Update Telegram link to @ym1ktc on homepage Co-Authored-By: Claude --- astro.config.ts | 4 +-- public/admin/config.yml | 9 +++++- public/decapcms/config.yml | 9 +++++- public/robots.txt | 8 +++++- .../structured-data/FaqSchema.astro | 23 +++++++++++++++ .../structured-data/OrganizationSchema.astro | 26 +++++++++++++++++ src/config.yaml | 12 ++++++++ src/layouts/Layout.astro | 2 ++ src/pages/index.astro | 28 ++++++++++++++++++- 9 files changed, 115 insertions(+), 6 deletions(-) create mode 100644 src/components/structured-data/FaqSchema.astro create mode 100644 src/components/structured-data/OrganizationSchema.astro diff --git a/astro.config.ts b/astro.config.ts index 462563a..c9b5d25 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -60,9 +60,9 @@ export default defineConfig({ removeAttributeQuotes: false, }, }, - Image: false, + Image: true, JavaScript: true, - SVG: false, + SVG: true, Logger: 1, }), diff --git a/public/admin/config.yml b/public/admin/config.yml index 6dc84ec..9485edb 100644 --- a/public/admin/config.yml +++ b/public/admin/config.yml @@ -8,6 +8,10 @@ backend: local_backend: true +# Identity widget for external OAuth providers (Google, GitHub, etc.) +identity_widget: + enable: true + media_folder: 'src/assets/images' public_folder: '/images' @@ -16,6 +20,9 @@ locale: 'tr' site_url: https://radio.org.tr display_url: https://radio.org.tr +# Logo for admin login page +logo_url: https://radio.org.tr/_astro/ARC_2024_bayrak_logo-Large-1-1024x1024.png + collections: - name: 'post' label: 'Blog Yazıları' @@ -64,4 +71,4 @@ collections: required: false - label: 'İçerik' name: 'body' - widget: 'markdown' \ No newline at end of file + widget: 'markdown' diff --git a/public/decapcms/config.yml b/public/decapcms/config.yml index 5fa76be..9a87255 100644 --- a/public/decapcms/config.yml +++ b/public/decapcms/config.yml @@ -6,6 +6,10 @@ backend: - editor squash_merges: true +# Identity widget for external OAuth providers (Google, GitHub, etc.) +identity_widget: + enable: true + media_folder: 'src/assets/images' public_folder: '/images' @@ -14,6 +18,9 @@ locale: 'tr' site_url: https://radio.org.tr display_url: https://radio.org.tr +# Logo for admin login page +logo_url: https://radio.org.tr/_astro/ARC_2024_bayrak_logo-Large-1-1024x1024.png + collections: - name: 'post' label: 'Blog Yazıları' @@ -62,4 +69,4 @@ collections: required: false - label: 'İçerik' name: 'body' - widget: 'markdown' \ No newline at end of file + widget: 'markdown' diff --git a/public/robots.txt b/public/robots.txt index 6f27bb6..c106ada 100644 --- a/public/robots.txt +++ b/public/robots.txt @@ -1,2 +1,8 @@ User-agent: * -Disallow: \ No newline at end of file +Allow: / + +Sitemap: https://www.radio.org.tr/sitemap-index.xml + +# Disallow admin areas +Disallow: /admin/ +Disallow: /auth/ diff --git a/src/components/structured-data/FaqSchema.astro b/src/components/structured-data/FaqSchema.astro new file mode 100644 index 0000000..61fd5ff --- /dev/null +++ b/src/components/structured-data/FaqSchema.astro @@ -0,0 +1,23 @@ +--- +interface Props { + faqs: { question: string; answer: string; }[]; +} +const { faqs } = Astro.props; + +const schema = { + '@context': 'https://schema.org', + '@type': 'FAQPage', + mainEntity: faqs.map(faq => ({ + '@type': 'Question', + name: faq.question, + acceptedAnswer: { + '@type': 'Answer', + text: faq.answer + } + })) +}; +--- + + diff --git a/src/components/structured-data/OrganizationSchema.astro b/src/components/structured-data/OrganizationSchema.astro new file mode 100644 index 0000000..648a5fd --- /dev/null +++ b/src/components/structured-data/OrganizationSchema.astro @@ -0,0 +1,26 @@ +--- +const schema = { + '@context': 'https://schema.org', + '@type': 'Organization', + name: 'Amatör Radyocular Derneği (ARC)', + url: 'https://www.radio.org.tr', + logo: 'https://www.radio.org.tr/_astro/ARC_2024_bayrak_logo-Large-1-1024x1024.png', + description: 'İstanbul merkezli kâr amacı gütmeyen bu dernek, amatör telsizciliği yaygınlaştırmak, eğitim vermek ve röle-beacon altyapıları işletmek amacıyla kurulmuştur.', + contactPoint: { + telephone: '+90-510-220-5024', + contactType: 'customer service' + }, + sameAs: [ + 'https://t.me/ym1ktc', + 'https://twitter.com/YM1KTC', + 'https://facebook.com/ym1ktc', + 'https://www.youtube.com/@YM1KTC', + 'https://www.instagram.com/ym1ktc', + 'https://www.linkedin.com/company/arctr/' + ] +}; +--- + + diff --git a/src/config.yaml b/src/config.yaml index 710148c..5182087 100644 --- a/src/config.yaml +++ b/src/config.yaml @@ -21,7 +21,19 @@ metadata: - url: '~/assets/images/2024/12/ARC_2024_bayrak_logo-Large-1-1024x1024.png' width: 1024 height: 1024 + alt: 'Amatör Radyocular Derneği Logo' type: website + keywords: + - amatör radyo + - amatör telsiz + - telsizcilik + - amatör radyocular derneği + - ARC + - YM1KTC + - amatör telsiz eğitimi + author: + name: 'Amatör Radyocular Derneği (ARC)' + email: 'bilgi@radio.org.tr' twitter: handle: '@YM1KTC' site: '@YM1KTC' diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index b061347..930aa0d 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -11,6 +11,7 @@ import Metadata from '~/components/common/Metadata.astro'; import SiteVerification from '~/components/common/SiteVerification.astro'; import Analytics from '~/components/common/Analytics.astro'; import BasicScripts from '~/components/common/BasicScripts.astro'; +import OrganizationSchema from '~/components/structured-data/OrganizationSchema.astro'; // Comment the line below to disable View Transitions import { ClientRouter } from 'astro:transitions'; @@ -35,6 +36,7 @@ const { language, textDirection } = I18N; + diff --git a/src/pages/index.astro b/src/pages/index.astro index 4586f56..eb36dcc 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -9,11 +9,35 @@ import BlogLatestPosts from '~/components/widgets/BlogLatestPosts.astro'; import FAQs from '~/components/widgets/FAQs.astro'; import Stats from '~/components/widgets/Stats.astro'; import CallToAction from '~/components/widgets/CallToAction.astro'; +import FaqSchema from '~/components/structured-data/FaqSchema.astro'; const metadata = { title: 'Amatör Radyocular Derneği (ARC) - YM1KTC', ignoreTitleTemplate: true, }; + +const faqData = [ + { + question: 'Eğitim programlarına kimler katılabilir?', + answer: 'Eğitim programlarımıza amatör telsiz lisansı olan veya lisans almaya hazırlanan herkesi davet ediyoruz.' + }, + { + question: 'Hangi frekans bantlarında faaliyet gösteriyorsunuz?', + answer: 'Derneğimiz VHF, UHF ve HF bantlarında faaliyet göstermektedir. Özellikle VHF/UHF röle sistemleri konusunda aktif çalışmalar yürütüyoruz.' + }, + { + question: 'Eğitim programlarınıza nasıl katılabilirim?', + answer: 'Eğitim programları hakkında bilgi almak için web sitemizi takip edebilir veya bizimle iletişime geçebilirsiniz. Düzenli olarak temel ve ileri seviye kurslar düzenlenmektedir.' + }, + { + question: 'Teknik projelerde nasıl yer alabilirim?', + answer: 'Teknik projelerimizde yer almak için bizimle iletişime geçin. Eğitim programlarımıza katılarak projelerimizde aktif rol alabilirsiniz.' + }, + { + question: 'Derneğin röle sistemleri nasıl kullanılır?', + answer: 'Röle sistemlerimizin kullanımı hakkında bilgi almak için teknik dokümantasyonumuzu inceleyebilir veya eğitim etkinliklerimize katılabilirsiniz.' + } +]; --- @@ -29,7 +53,7 @@ const metadata = { }, { text: 'Telegram', - href: 'https://t.me/telsizdernegi', + href: 'https://t.me/ym1ktc', icon: 'tabler:brand-telegram', target: '_blank', }, @@ -262,4 +286,6 @@ const metadata = { Bizimle iletişime geçin ve amatör radyo yolculuğunuza başlayın! 73 de YM1KTC + +