Tasarim Tokenlari Nedir ve Neden Onemlidir
Modern yazilim projelerinde tutarli bir kullanici deneyimi sunmak, ekip buyudukce zorlasmaya baslar. Farkli gelistiriciler farkli renk kodlari kullanir, tasarimci ile frontend muhendisi arasinda spacing degerleri uyumsuzlasir ve sonunda urun gorsel olarak parcalanir. Tasarim tokenlari (design tokens), tam olarak bu sorunu cozmek icin ortaya cikmis bir yaklasimdir.
Tasarim tokenlari, bir tasarim sisteminin en temel gorsel kararlaridir. Renk, tipografi, bosluk, golge, border-radius ve animasyon suresi gibi degerleri platform-bagimsiz bir formatta tanimlar. Bu degerler tek bir kaynaktan (single source of truth) yonetilir ve farkli platformlara (web, iOS, Android, Flutter) otomatik olarak dagitilir.
Salesforce'un Lightning Design System ekibinin 2014 yilinda ortaya attigi bu konsept, bugun kurumsal yazilim gelistirmenin vazgecilmez bir parcasi haline gelmistir. Tokenlarin temel kategorileri sunlardir:
| Token Kategorisi | Ornek Degerler | Kullanim Alani |
|---|---|---|
| Renk (Color) | #1A73E8, rgba(0,0,0,0.12) |
Marka renkleri, arka plan, metin |
| Tipografi | 16px, Inter, 600 |
Font boyutu, font ailesi, font agirligi |
| Bosluk (Spacing) | 4px, 8px, 16px, 24px |
Margin, padding, gap degerleri |
| Golge (Shadow) | 0 2px 4px rgba(0,0,0,0.1) |
Kart golgeleri, dropdown golgeleri |
| Border | 1px solid, 8px radius |
Cerceve kalinligi, kose yuvarlatma |
| Animasyon | 200ms, ease-in-out |
Gecis suresi, hareket egrisi |
Token Hiyerarsisi: Global, Alias ve Component Tokenlari
Tasarim tokenlarinin gercek gucu, dogru bir hiyerarsi ile ortaya cikar. Duz bir token listesi yerine katmanli bir yaklasim benimsemek, bakimi kolaylastirir ve marka degisikliklerinde tek noktadan guncelleme yapmayi mumkun kilar.
Global Tokenlar (Primitive Tokens)
En alt katmandaki ham degerlerdir. Herhangi bir anlam veya baglam icermez, sadece degerleri tanimlar:
{
"color": {
"blue-500": { "value": "#1A73E8" },
"blue-600": { "value": "#1557B0" },
"gray-100": { "value": "#F5F5F5" },
"gray-900": { "value": "#212121" }
},
"spacing": {
"scale-1": { "value": "4px" },
"scale-2": { "value": "8px" },
"scale-4": { "value": "16px" },
"scale-6": { "value": "24px" }
}
}
Alias Tokenlar (Semantic Tokens)
Global tokenlara anlam katan katmandir. "Bu renk ne icin kullaniliyor?" sorusuna cevap verir:
{
"color": {
"brand-primary": { "value": "{color.blue-500}" },
"brand-primary-hover": { "value": "{color.blue-600}" },
"background-default": { "value": "{color.gray-100}" },
"text-primary": { "value": "{color.gray-900}" }
},
"spacing": {
"inline-sm": { "value": "{spacing.scale-2}" },
"inline-md": { "value": "{spacing.scale-4}" },
"stack-md": { "value": "{spacing.scale-4}" }
}
}
Component Tokenlar
Belirli bir bilesene ozgu tokenlari tanimlar. En ust katmandir:
{
"button": {
"background-color": { "value": "{color.brand-primary}" },
"background-color-hover": { "value": "{color.brand-primary-hover}" },
"padding-horizontal": { "value": "{spacing.inline-md}" },
"padding-vertical": { "value": "{spacing.inline-sm}" },
"border-radius": { "value": "{border.radius-md}" }
}
}
Bu uc katmanli yaklasimda marka rengini degistirmek icin yalnizca global katmandaki blue-500 degerini guncellemek yeterlidir. Degisiklik, alias katmani uzerinden tum bilesentokenlarina otomatik olarak yansir.
Design Token Araclari ve Ekosistem
Token yonetimi icin olgunlasmis bir arac ekosistemi mevcuttur. Proje ihtiyaclarina gore dogru araci secmek, gelistirme surecini onemli olcude hizlandirir.
Style Dictionary
Amazon tarafindan gelistirilen acik kaynakli arac, token donusturme islemlerinin endistri standardidir. JSON veya YAML formatinda tanimlanan tokenlari CSS degiskenleri, iOS Swift sabitleri, Android XML kaynaklari ve daha fazlasina donusturur:
// config.js - Style Dictionary yapilandirmasi
module.exports = {
source: ["tokens/**/*.json"],
platforms: {
css: {
transformGroup: "css",
buildPath: "build/css/",
files: [{
destination: "variables.css",
format: "css/variables"
}]
},
ios: {
transformGroup: "ios-swift",
buildPath: "build/ios/",
files: [{
destination: "StyleDictionary.swift",
format: "ios-swift/class.swift",
className: "StyleDictionary"
}]
},
android: {
transformGroup: "android",
buildPath: "build/android/",
files: [{
destination: "style_dictionary_colors.xml",
format: "android/colors"
}]
}
}
};
Figma Tokens (Tokens Studio)
Tasarimcilarin Figma icerisinde dogrudan token tanimlamasini ve yonetmesini saglayan eklenti, tasarim-gelistirme koprusunun en kritik parcasidir. JSON formatinda tokenlari disa aktarabilir ve Git repolarina senkronize edebilir.
Arac Karsilastirmasi
| Ozellik | Style Dictionary | Tokens Studio | Theo (Salesforce) |
|---|---|---|---|
| Platform destegi | Cok genis | Figma odakli | Genis |
| Giris formati | JSON, YAML | JSON (Figma) | JSON, YAML |
| Cikis formati | CSS, iOS, Android, Flutter | JSON, CSS | CSS, iOS, Android |
| Git entegrasyonu | Manuel | Yerlesik | Manuel |
| Tema destegi | Plugin ile | Yerlesik | Sinirli |
| Topluluk buyuklugu | Cok buyuk | Buyuk | Orta |
Multi-Brand ve Multi-Platform Token Yonetimi
Birden fazla marka veya urun icin design system isleten organizasyonlarda token yonetimi ek bir karmasiklik katmani getirir. Smart Maple olarak Ankara merkezli projelerimizde, ozellikle holding yapisindaki kurumsal musterilerde bu senaryoyla sik karsilasiyoruz.
Multi-Brand Token Stratejisi
Temel yaklasim, paylasilan (shared) tokenlari ve markaya ozel tokenlari ayirmaktir:
tokens/
core/
spacing.json # Tum markalar icin ortak
typography.json # Tum markalar icin ortak
brands/
brand-a/
colors.json # Marka A renkleri
overrides.json # Marka A ozel degerler
brand-b/
colors.json # Marka B renkleri
overrides.json # Marka B ozel degerler
themes/
light.json # Acik tema alias tokenlari
dark.json # Koyu tema alias tokenlari
Bu yapida core dizini tum markalar arasinda paylasilan degerleri icerir. Her marka kendi renk paletini ve gerektiginde override degerlerini tanimlar. Tema katmani ise hem acik hem koyu mod destegi saglar.
Multi-Platform Cikti Uretimi
Style Dictionary pipeline'i ile tek bir token kaynagindan birden fazla platforma cikti uretmek mumkundur:
# Build komutu ornegi
npx style-dictionary build --config config.web.js
npx style-dictionary build --config config.ios.js
npx style-dictionary build --config config.android.js
npx style-dictionary build --config config.flutter.js
Her platform icin uretilen cikti formatlari:
| Platform | Cikti Formati | Ornek |
|---|---|---|
| Web | CSS Custom Properties | --color-brand-primary: #1A73E8; |
| iOS | Swift Constants | static let brandPrimary = UIColor(hex: "#1A73E8") |
| Android | XML Resources | <color name="brand_primary">#1A73E8</color> |
| Flutter | Dart Constants | static const brandPrimary = Color(0xFF1A73E8); |
Component Library Olceklendirme
Tokenlar altyapiyi olustururken, gercek kullanici deneyimini bilesenler (components) sekillendirir. Farkli platformlar icin component library olceklendirmek, dikkatli bir mimari gerektirir.
Monorepo Yaklasimi
Buyuk olcekli design system projeleri icin monorepo yapisi onerilir:
packages/
tokens/ # Tasarim tokenlari paketi
react-components/ # React bilesen kutuphanesi
flutter-widgets/ # Flutter widget kutuphanesi
web-components/ # Framework-agnostic web components
icons/ # SVG ikon kutuphanesi
docs/ # Dokumantasyon sitesi (Storybook/ZeroHeight)
React Component Library Ornegi
Tokenlari React bilesenlerinde kullanmanin en etkili yolu CSS Custom Properties uzerinden baglamaktir:
// Button.tsx
import styles from './Button.module.css';
interface ButtonProps {
variant: 'primary' | 'secondary' | 'ghost';
size: 'sm' | 'md' | 'lg';
children: React.ReactNode;
}
export const Button = ({ variant, size, children }: ButtonProps) => {
return (
<button className={`${styles.button} ${styles[variant]} ${styles[size]}`}>
{children}
</button>
);
};
/* Button.module.css */
.button {
font-family: var(--font-family-base);
border-radius: var(--button-border-radius);
transition: background-color var(--animation-duration-fast) var(--animation-easing-default);
}
.primary {
background-color: var(--button-background-color);
color: var(--button-text-color);
padding: var(--button-padding-vertical) var(--button-padding-horizontal);
}
.primary:hover {
background-color: var(--button-background-color-hover);
}
Design-to-Code Workflow Otomasyonu
Tasarimdan koda gecis surecini otomaticlestirmek, design system'in gercek degerini ortaya cikarir. Manuel kopyalama hatalara acik ve yavas bir surectir.
Otomatik Token Pipeline
Ideal workflow su adimlari icerir:
- Tasarimci Figma'da Tokens Studio ile tokenlari gunceller
- Tokens Studio degisiklikleri Git reposuna push eder
- CI/CD pipeline tetiklenir
- Style Dictionary tokenlari hedef platformlara donusturur
- Otomatik testler calistirilir
- Paket versiyonu guncellenir ve npm/pub registry'ye yayinlanir
- Tuketici uygulamalar yeni versiyonu alir
# .github/workflows/tokens-pipeline.yml
name: Token Build Pipeline
on:
push:
paths:
- 'tokens/**'
jobs:
build-tokens:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npx style-dictionary build
- run: npm test
- run: npm version patch
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
Gorsel Regresyon Testleri
Token degisikliklerinin bilesenleri nasil etkiledigini otomatik olarak tespit etmek icin gorsel regresyon testleri kritik oneme sahiptir. Chromatic, Percy veya Playwright gibi araclarla her token degisikliginde ekran goruntuleri karsilastirilir ve beklenmedik gorsel kaymalar erken yakalanir.
Design System Governance ve Versiyonlama
Bir design system'in uzun vadeli basarisi, teknik mimarisi kadar yonetim modeline de baglidir.
Governance Modelleri
| Model | Tanim | Uygun Olcek |
|---|---|---|
| Merkezi (Centralized) | Ozel bir DS ekibi tum kararlari alir | 50-200 kisi |
| Federal (Federated) | DS ekibi + urun ekiplerinden temsilciler | 200-1000 kisi |
| Topluluk (Community) | Herkes katki saglar, DS ekibi gozden gecirir | 1000+ kisi |
Semantik Versiyonlama
Design system paketleri icin Semantic Versioning (SemVer) uygulamak zorunludur:
- Major (v2.0.0): Geriye donuk uyumsuz degisiklikler (token kaldirilmasi, isim degisikligi)
- Minor (v1.1.0): Geriye donuk uyumlu yeni ozellikler (yeni token eklenmesi)
- Patch (v1.0.1): Hata duzeltmleri (token degerinde kucuk ayar)
Deprecation sureci de ayni titizlikle yonetilmelidir. Kaldirilacak tokenlar en az bir minor versiyon oncesinde deprecated olarak isaretlenmeli ve migration rehberi sunulmelidir.
Design System Metrikleri
Bir design system'in basarisini olcmeden iyilestirmek mumkun degildir. Smart Maple olarak Ankara merkezli projelerimizde asagidaki metrikleri duzenliolarak izliyoruz.
Temel Metrikler
| Metrik | Tanim | Hedef |
|---|---|---|
| Adoption Rate | DS bilesenlerini kullanan ekip yuzdesi | %80+ |
| Coverage | Urun arayuzundeki DS bilesen kullanim orani | %90+ |
| Token Override Rate | Tokenlari override eden kod satirlarinin orani | %5 altinda |
| Contribution Rate | DS'ye katki saglayan ekip uyesi yuzdesi | %20+ |
| Build Time | Token donusturme pipeline suresi | 30 saniye altinda |
| Bug Escape Rate | DS kaynakli uretim hatalari | Ayda 2'den az |
Metrik Toplama Yontemleri
Coverage ve override rate icin statik analiz araclari kullanilabilir. ESLint eklentileri ile kod tabaninda design system disindan kullanilan hardcoded renk veya spacing degerleri tespit edilir:
// .eslintrc.js - DS uyumluluk kurali ornegi
module.exports = {
rules: {
"no-restricted-syntax": [
"error",
{
selector: "Literal[value=/^#[0-9a-fA-F]{3,8}$/]",
message: "Hardcoded renk degeri yerine design token kullanin."
}
]
}
};
Buyuk Ekiplerde Design System Yonetimi
Ekip buyuklugu 50 kisinin uzerine ciktiginda, design system yonetimi teknik bir sorundan organizasyonel bir soruna donusur.
Iletisim ve Egitim
Design system'in benimsenmesi icin surekli iletisim ve egitim gereklidir. Haftalik "DS Office Hours" toplantilari, yeni bilesenler icin canli demo oturumlari ve kapsamli dokumantasyon siteleri bu surecin temel taslaridi. Storybook veya ZeroHeight gibi araclarla oluturulan interaktif dokumantasyon, gelisitiricilerin bilesenleri hizla kesfetmesini saglar.
Katki Sureci (Contribution Model)
Buyuk ekiplerde herkesin design system'e katki saglayabilmesi icin net bir surec tanimlanmalidir:
- RFC (Request for Comments) belgesi ile yeni bilesen veya token onerisi
- Tasarim incelemesi (DS ekibi + ilgili urun tasarimcisi)
- Prototip gelistirme ve kullanilabilirlik testi
- Kod incelemesi ve erisilebilirlik denetimi
- Dokumantasyon ve migration rehberi hazirlanmasi
- Release ve duyuru
Erisilebilirlik Standartlari
Token tanimlarken erisilebilirlik (accessibility) standartlarini goz onunde bulundurmak zorunludur. Renk kontraseti WCAG 2.1 AA seviyesinde en az 4.5:1 oraninda olmalidir. Focus state, hover state ve disabled state icin ayri tokenlar tanimlanmali ve bu degerler erisilebilirlik gereksinimlerini karsilamaldir.
Sonuc ve Uygulama Plani
Tasarim tokenlari ve design system olceklendirme, uzun vadeli bir yatirimdir. Kucuk baslayip iteratif buyumek en saglikli yaklasimdir. Ilk adim olarak mevcut projelerdeki tekrarlayan degerleri tespit edin ve bunlari global tokenlar olarak tanimlayin. Ardindan alias katmanini ekleyerek anlam kazandirin ve son olarak component tokenlari ile bilesen bazinda ozellestirme kapisi acin.
Dogru arac secimi, net bir governance modeli ve olculebilir metriklerle desteklenen bir design system, urun ekiplerinin hizini artirirken gorsel tutarliligi garanti altina alir. Token hiyerarsisini uc katmanli tutun, CI/CD pipeline ile donusturme islemlerini otomaticlestirin ve ekip genelinde benimseme oranini duzenli olarak takip edin. Bu yaklasim, onlarca gelistiricinin birlikte calstigi projelerde bile tutarli ve kaliteli kullanici deneyimleri sunmanizi saglayacaktir.
Related Articles
MLOps Rehberi: Makine Öğrenmesi Modellerini Production'a Taşıma
Giriş: MLOps Nedir ve Neden Önemlidir? Makine öğrenmesi modelleri geliştirmek günümüzde nispeten kolaydır. Açık kaynak kütüphaneleri kullanarak son derece başarılı modeller oluşturabiliriz. Ancak bu modelleri production ortamına taşıyarak, ölçeklendirebilir, güvenilir ve sürdürülebilir şekilde çalıştırmak tamamen farklı bir hikayedir. Araştırmalara göre, veri bilimcileri tarafından geliştirilen makine öğrenmesi modellerinin %87'si hiçbir zaman production ortamına ulaşmaz. Bu başarısızlı
Read MoreLLM Fine-Tuning ve Özel Model Eğitimi Rehberi [2026]
LLM Fine-Tuning: Kurumsal Yapay Zeka Stratejisinin Temel Taşı Büyük dil modelleri (LLM), genel amaçlı metin üretimi ve anlama konusunda etkileyici performans sergiliyor. Ancak kurumsal ortamlarda belirli bir alan, terminoloji veya iş sürecine uyum sağlamaları gerektiğinde, genel bilgileri çoğu zaman yetersiz kalıyor. Bu noktada fine-tuning, yani ince ayar süreci devreye giriyor. Fine-tuning sayesinde mevcut bir temel modeli, kendi verileriniz ve ihtiyaçlarınız doğrultusunda özelleştirmek
Read MoreBilgisayarlı Görü Uygulamaları: Nesne Tespiti, OCR ve Endüstriyel AI
Bilgisayarlı Görü Uygulamaları: Endüstriyel ve Medikal AI'nin Temel Teknolojisi Bilgisayarlı görü, makine öğrenmesinin en etkili alanlarından biridir. Türkiye'de yaşanan dijital dönüşüm sürecinde, özellikle üretim, sağlık ve lojistik sektörlerinde görü tabanlı otomasyon kritik hale gelmiştir. Smart Maple olarak Ankara'da geliştirdiğimiz çözümler, son beş yılda 150+ kuruluşunun üretim verimliliğini ortalama %35 oranında artırmıştır. Bu rehberde, bilgisayarlı görü teknolojisinin iş değeri
Read More
