Files
kovakyazilim/lib/types.ts
T
egecankomur d49c9aa225 feat: SEO altyapısı + admin editör/favicon/menü düzeltmeleri
Admin & site:
- @tailwindcss/typography ekle → editör ve yayın içeriği prose stilleriyle düzgün render
- Favicon: logo.png'den kare app/icon.png + apple-icon.png, varsayılan favicon.ico kaldırıldı
- SEO keyword: seo_settings.default_keywords + seo_pages.keywords + buildMetadata birleştirme
- Menü düzeni admin'den yönetilebilir (site_settings.nav_items, /admin/menu, header & mobile-menu refactor)

SEO:
- app/sitemap.ts (statik + blog/hizmet/çözüm/proje/sektör dinamik)
- app/robots.ts (sitemap ref + /admin,/api disallow)
- app/llms.txt/route.ts (AI/LLM rehberi)
- BlogPosting/Service/FAQ/Article JSON-LD wire (json-ld bileşenleri bağlandı)
- buildMetadata: blog/proje OG görseli + type article + keywords birleştirme düzeltmesi
- blog tags → keyword
2026-06-04 07:15:18 +03:00

247 lines
6.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { AwRow } from "@/lib/appwrite-rest";
export type Row = AwRow;
export interface ServiceRow extends AwRow {
slug: string;
title: string;
description: string;
icon?: string | null;
order?: number | null;
featured?: boolean | null;
content?: string | null;
features?: string[] | null;
faq?: string[] | null; // each item is JSON: {"q":"...","a":"..."}
hero_image?: string | null;
}
// İşletmelere sunulan çözümler — Hizmetler ile birebir aynı yapı, ayrı tablo.
export interface SolutionRow extends AwRow {
slug: string;
title: string;
description: string;
icon?: string | null;
order?: number | null;
featured?: boolean | null;
content?: string | null;
features?: string[] | null;
faq?: string[] | null; // each item is JSON: {"q":"...","a":"..."}
hero_image?: string | null;
}
export interface FaqItem {
q: string;
a: string;
}
export interface ProjectRow extends AwRow {
slug: string;
title: string;
description: string;
image_url?: string | null;
live_url?: string | null;
category?: string | null;
technologies?: string[] | null;
year?: number | null;
featured?: boolean | null;
gallery?: string[] | null;
content?: string | null;
client_name?: string | null;
industry?: string | null;
duration?: string | null;
service_slug?: string | null;
solution_slug?: string | null;
metrics?: string[] | null; // JSON {"value":"+150%","label":"Trafik artışı"}
}
export interface BlogPostRow extends AwRow {
slug: string;
title: string;
excerpt?: string | null;
content?: string | null;
cover_image?: string | null;
cover_file_id?: string | null;
author?: string | null;
status?: "draft" | "published" | null;
published_at?: string | null;
tags?: string[] | null;
seo_title?: string | null;
seo_description?: string | null;
seo_image?: string | null;
}
export interface TestimonialRow extends AwRow {
name: string;
role?: string | null;
company?: string | null;
message: string;
rating?: number | null;
image_url?: string | null;
order?: number | null;
featured?: boolean | null;
}
export interface SeoPageRow extends AwRow {
path: string;
title?: string | null;
description?: string | null;
keywords?: string | null; // virgülle ayrılmış anahtar kelimeler (sayfa override)
og_image?: string | null;
canonical?: string | null;
noindex?: boolean | null;
}
export interface SeoSettingsRow extends AwRow {
site_name?: string | null;
site_description?: string | null;
default_keywords?: string | null; // virgülle ayrılmış site geneli anahtar kelimeler
default_og_image?: string | null;
twitter_handle?: string | null;
facebook_url?: string | null;
linkedin_url?: string | null;
instagram_url?: string | null;
google_site_verification?: string | null;
gtm_id?: string | null;
}
export interface StatItem {
value: string;
label: string;
}
export interface SiteSettingsRow extends AwRow {
hero_badge?: string | null;
hero_title?: string | null;
hero_subtitle?: string | null;
hero_cta_primary_label?: string | null;
hero_cta_primary_href?: string | null;
hero_cta_secondary_label?: string | null;
hero_cta_secondary_href?: string | null;
hero_stats?: string[] | null; // each item JSON: {"value":"...","label":"..."}
services_eyebrow?: string | null;
services_title?: string | null;
services_description?: string | null;
solutions_eyebrow?: string | null;
solutions_title?: string | null;
solutions_description?: string | null;
projects_eyebrow?: string | null;
projects_title?: string | null;
projects_description?: string | null;
testimonials_eyebrow?: string | null;
testimonials_title?: string | null;
testimonials_description?: string | null;
cta_title?: string | null;
cta_description?: string | null;
cta_button_label?: string | null;
cta_button_href?: string | null;
contact_phone?: string | null;
contact_phone_raw?: string | null;
contact_email?: string | null;
contact_address?: string | null;
contact_hours_weekday?: string | null;
contact_hours_weekend?: string | null;
social_linkedin?: string | null;
social_instagram?: string | null;
social_twitter?: string | null;
social_facebook?: string | null;
footer_tagline?: string | null;
// Üst menü düzeni — JSON dizi: [{ key, visible, label? }] sırasıyla
nav_items?: string | null;
whatsapp_message?: string | null;
client_logos?: string[] | null;
trust_items?: string[] | null; // JSON {"icon":"Star","value":"4.9","label":"..."}
why_us?: string[] | null; // JSON {"icon":"Zap","title":"...","description":"..."}
process_steps?: string[] | null; // JSON {"title":"...","description":"..."}
lead_form_title?: string | null;
lead_form_description?: string | null;
google_review_url?: string | null;
google_rating?: number | null;
google_review_count?: number | null;
homepage_faq?: string[] | null; // JSON {"q","a"}
guarantee_title?: string | null;
guarantee_description?: string | null;
guarantee_items?: string[] | null;
// Hakkımızda sayfası
about_eyebrow?: string | null;
about_title?: string | null;
about_description?: string | null;
about_values?: string[] | null; // JSON {"title","description"}
about_hero_image?: string | null;
about_team_eyebrow?: string | null;
about_team_title?: string | null;
about_team_description?: string | null;
about_stats?: string[] | null; // JSON {"value","label"}
}
export interface AboutValue {
title: string;
description: string;
}
export interface TeamMemberRow extends AwRow {
name: string;
role?: string | null;
bio?: string | null;
photo_url?: string | null;
linkedin_url?: string | null;
order?: number | null;
skills?: string[] | null;
}
export interface IndustryRow extends AwRow {
slug: string;
title: string;
subtitle?: string | null;
content?: string | null;
hero_image?: string | null;
features?: string[] | null;
faq?: string[] | null;
seo_title?: string | null;
seo_description?: string | null;
featured?: boolean | null;
order?: number | null;
}
export interface ProjectMetric {
value: string;
label: string;
}
export interface TrustItem {
icon: string;
value: string;
label: string;
}
export interface WhyUsItem {
icon: string;
title: string;
description: string;
}
export interface ProcessStep {
title: string;
description: string;
}
export interface ContactMessageRow extends AwRow {
name: string;
email: string;
phone?: string | null;
subject?: string | null;
message: string;
status?: "new" | "read" | "replied" | "archived" | null;
}