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 <noreply@anthropic.com>
This commit is contained in:
Buğra Canata
2026-01-17 16:23:11 +03:00
parent 6889f7a0b4
commit 214e9733d0
9 changed files with 115 additions and 6 deletions
+2 -2
View File
@@ -60,9 +60,9 @@ export default defineConfig({
removeAttributeQuotes: false, removeAttributeQuotes: false,
}, },
}, },
Image: false, Image: true,
JavaScript: true, JavaScript: true,
SVG: false, SVG: true,
Logger: 1, Logger: 1,
}), }),
+8 -1
View File
@@ -8,6 +8,10 @@ backend:
local_backend: true local_backend: true
# Identity widget for external OAuth providers (Google, GitHub, etc.)
identity_widget:
enable: true
media_folder: 'src/assets/images' media_folder: 'src/assets/images'
public_folder: '/images' public_folder: '/images'
@@ -16,6 +20,9 @@ locale: 'tr'
site_url: https://radio.org.tr site_url: https://radio.org.tr
display_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: collections:
- name: 'post' - name: 'post'
label: 'Blog Yazıları' label: 'Blog Yazıları'
@@ -64,4 +71,4 @@ collections:
required: false required: false
- label: 'İçerik' - label: 'İçerik'
name: 'body' name: 'body'
widget: 'markdown' widget: 'markdown'
+8 -1
View File
@@ -6,6 +6,10 @@ backend:
- editor - editor
squash_merges: true squash_merges: true
# Identity widget for external OAuth providers (Google, GitHub, etc.)
identity_widget:
enable: true
media_folder: 'src/assets/images' media_folder: 'src/assets/images'
public_folder: '/images' public_folder: '/images'
@@ -14,6 +18,9 @@ locale: 'tr'
site_url: https://radio.org.tr site_url: https://radio.org.tr
display_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: collections:
- name: 'post' - name: 'post'
label: 'Blog Yazıları' label: 'Blog Yazıları'
@@ -62,4 +69,4 @@ collections:
required: false required: false
- label: 'İçerik' - label: 'İçerik'
name: 'body' name: 'body'
widget: 'markdown' widget: 'markdown'
+7 -1
View File
@@ -1,2 +1,8 @@
User-agent: * User-agent: *
Disallow: Allow: /
Sitemap: https://www.radio.org.tr/sitemap-index.xml
# Disallow admin areas
Disallow: /admin/
Disallow: /auth/
@@ -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
}
}))
};
---
<script define:vars={{ schema }} type="application/ld+json">
{JSON.stringify(schema, null, 2)}
</script>
@@ -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/'
]
};
---
<script define:vars={{ schema }} type="application/ld+json">
{JSON.stringify(schema, null, 2)}
</script>
+12
View File
@@ -21,7 +21,19 @@ metadata:
- url: '~/assets/images/2024/12/ARC_2024_bayrak_logo-Large-1-1024x1024.png' - url: '~/assets/images/2024/12/ARC_2024_bayrak_logo-Large-1-1024x1024.png'
width: 1024 width: 1024
height: 1024 height: 1024
alt: 'Amatör Radyocular Derneği Logo'
type: website 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: twitter:
handle: '@YM1KTC' handle: '@YM1KTC'
site: '@YM1KTC' site: '@YM1KTC'
+2
View File
@@ -11,6 +11,7 @@ import Metadata from '~/components/common/Metadata.astro';
import SiteVerification from '~/components/common/SiteVerification.astro'; import SiteVerification from '~/components/common/SiteVerification.astro';
import Analytics from '~/components/common/Analytics.astro'; import Analytics from '~/components/common/Analytics.astro';
import BasicScripts from '~/components/common/BasicScripts.astro'; import BasicScripts from '~/components/common/BasicScripts.astro';
import OrganizationSchema from '~/components/structured-data/OrganizationSchema.astro';
// Comment the line below to disable View Transitions // Comment the line below to disable View Transitions
import { ClientRouter } from 'astro:transitions'; import { ClientRouter } from 'astro:transitions';
@@ -35,6 +36,7 @@ const { language, textDirection } = I18N;
<Metadata {...metadata} /> <Metadata {...metadata} />
<SiteVerification /> <SiteVerification />
<Analytics /> <Analytics />
<OrganizationSchema />
<!-- Netlify Identity for Decap CMS --> <!-- Netlify Identity for Decap CMS -->
<script is:inline src="https://identity.netlify.com/v1/netlify-identity-widget.js"></script> <script is:inline src="https://identity.netlify.com/v1/netlify-identity-widget.js"></script>
+27 -1
View File
@@ -9,11 +9,35 @@ import BlogLatestPosts from '~/components/widgets/BlogLatestPosts.astro';
import FAQs from '~/components/widgets/FAQs.astro'; import FAQs from '~/components/widgets/FAQs.astro';
import Stats from '~/components/widgets/Stats.astro'; import Stats from '~/components/widgets/Stats.astro';
import CallToAction from '~/components/widgets/CallToAction.astro'; import CallToAction from '~/components/widgets/CallToAction.astro';
import FaqSchema from '~/components/structured-data/FaqSchema.astro';
const metadata = { const metadata = {
title: 'Amatör Radyocular Derneği (ARC) - YM1KTC', title: 'Amatör Radyocular Derneği (ARC) - YM1KTC',
ignoreTitleTemplate: true, 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.'
}
];
--- ---
<Layout metadata={metadata}> <Layout metadata={metadata}>
@@ -29,7 +53,7 @@ const metadata = {
}, },
{ {
text: 'Telegram', text: 'Telegram',
href: 'https://t.me/telsizdernegi', href: 'https://t.me/ym1ktc',
icon: 'tabler:brand-telegram', icon: 'tabler:brand-telegram',
target: '_blank', 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 Bizimle iletişime geçin ve amatör radyo yolculuğunuza başlayın! 73 de YM1KTC
</Fragment> </Fragment>
</CallToAction> </CallToAction>
<FaqSchema faqs={faqData} />
</Layout> </Layout>