İçeriğe geç
Docs

Tema Geliştirme: Hızlı Başlangıç

Özel temayı terminalden geliştirip canlıya alma: tecof login, theme init, dev (yerel/bulut), push, önizleme, promote, rollback ve base-moved çözümü.

Son güncelleme:

Bu sayfa bir özel temayı terminalden geliştirip canlıya almayı adım adım anlatır: giriş, kodu indirme, yerel ya da bulut geliştirme, push, önizleme, canlıya alma ve geri alma. Kavramlar için Geliştirici Alanları (Spaces) sayfasına bakın.

Gerekenler

GereksinimNot
Node.js 20+CLI'ın çalışma zamanı bağımlılığı yoktur; tecof doctor sürümü denetler
Tecof hesabı ve mağaza ekibi üyeliğiTemanın ait olduğu mağazanın ekibinde olmanız yeterli; partner hesabı gerekmez
Özel temaKatalog temaları salt okunurdur; önce özel temaya kopyalayın (ayrıntı)
PaketPush, canlıya alma, geri alma ve bulut geliştirme için mağaza paketinde Özel Temalar ve Kod Erişimi açık olmalı (ayrıntı)
Paket yöneticisiTemanın kilit dosyasına göre npm, pnpm, yarn ya da bun

1. CLI'ı Kurun#

Terminal
npm install -g @tecof/cli
tecof --version
tecof doctor

tecof doctor Node sürümünü, API erişimini, oturumu, kimlik deposunu, klasör bağını, git'i ve paket yöneticisini denetler; zorunlu bir denetim başarısızsa çıkış kodu 1 olur.


2. Giriş Yapın#

Terminal
tecof login
Metin
Tecof'a giriş yapılıyor (https://api.tecof.com)…

  Doğrulama kodu: KQ7M-4XRT
  Tarayıcıda açın ve kodu onaylayın: https://app.tecof.com/cli?code=KQ7M-4XRT

Onay bekleniyor…
✔ Giriş yapıldı: ayse@ornek-ajans.com (Örnek Ajans)
Token deposu: keychain
  1. CLI onay sayfasını tarayıcıda açar. Açamazsa (ör. SSH oturumunda) adresi kendiniz açın; --no-browser tarayıcıyı hiç denemez.
  2. Panelde oturumunuz açıkken sayfa doğrulama kodunu, CLI'ın adını, IP adresini, istek zamanını ve yetkilendirilecek hesabı gösterir. Kod terminaldekiyle aynıysa Onayla ve giriş yap; isteği siz başlatmadıysanız Reddet.
  3. Kod 10 dakika geçerlidir. CLI onayı 5 saniyede bir yoklar ve onay gelince token'ı işletim sisteminin anahtarlığına kaydeder (Kimlik bilgisi deposu).
Terminal
tecof whoami

Cihaz oturumu 30 gün geçerlidir; 14 gün kullanılmazsa düşer. Onayladığınız cihazları panelde https://app.tecof.com/cli?tab=tokens (CLI anahtarları) sayfasında görüp iptal edebilirsiniz. tecof logout token'ı sunucuda da iptal eder.


3. Tema Alanınızı Bulun#

Terminal
tecof theme ls
Metin
id                            kind   name   merchant/app        live  last  rolled-back  writable
----------------------------  -----  -----  ------------------  ----  ----  -----------  ------------------
thm_66f1a2b3c4d5e6f7a8b9c0d1  theme  Butik  Butik Mağaza (BTK)  v11   v11                yes
thm_66f1a2b3c4d5e6f7a8b9c0d2  theme  Vita   Butik Mağaza (BTK)  -     -                  no (catalog-theme)

Tema ve uygulama alanlarının hepsini tecof spaces ls listeler. Alan kimliğini panelde de bulabilirsiniz: Temalar → tema kartındaki ⋯ menüsü → Sürümler ekranının başlığında, kopyalama düğmesiyle.


4. Kodu İndirin#

Terminal
tecof theme init butik --space thm_66f1a2b3c4d5e6f7a8b9c0d1
Metin
Kaynak indiriliyor (main)…
✔ Hazır: butik → Butik (312 dosya)

Sonraki adımlar:
  cd butik
  npm install
  tecof theme dev

init klasörü açar, main dalının son hâlini indirir (çalıştırılabilir dosya izinleri korunur) ve iki dosya yazar:

DosyaİçerikGit
.tecof/space.jsonKlasörün bağlı olduğu alan: { "space": "thm_…", "kind": "theme" }Commit'leyin; CI alanı bu dosyadan bulur
.tecof/state.jsonYerel taban: indirilen main commit'i, dosya özetleri ve bekleyen staged sürümYerel önbellek; CLI'ın yazdığı .tecof/.gitignore onu git dışında tutar

.tecof/ klasörü Tecof'a hiçbir zaman gönderilmez. Etkileşimli terminalde --space vermezseniz yazılabilir temalar arasından seçim yaparsınız. Klasör boş değilse --force gerekir.

Klasör zaten varsa — örneğin başka bir makinede kendi git deponuzdan geldiyse — .tecof/space.json sizi alana bağlar ama yerel taban (state.json) yoktur. tecof theme pull güncel main dalını indirip tabanı kaydeder; yerelde farklı olan dosyaların üzerine --force olmadan yazmaz. Bağ dosyası hiç yoksa önce tecof theme link --space thm_… çalıştırın.


5. Yerelde Geliştirin#

Terminal
cd butik
npm install
tecof theme dev
Metin
✔ .env.local güncellendi (4 değişken: NEXT_PUBLIC_BASE_URL, NEXT_PUBLIC_CDN_URL, NEXT_PUBLIC_MERCHANT_SECRET_KEY, NEXT_PUBLIC_THEME_ID); diğer satırlar korundu.
Başlatılıyor: npm run dev -- --port 3000 (port 3000)

tecof theme dev temanın canlıda kullandığı genel ortam değişkenlerini .env.local dosyasına yazar ve temanın dev betiğini başlatır:

DeğişkenDeğer
NEXT_PUBLIC_BASE_URLTecof API adresi
NEXT_PUBLIC_CDN_URLTecof CDN adresi
NEXT_PUBLIC_MERCHANT_SECRET_KEYMağazanın vitrin anahtarı (genel bir değerdir; tarayıcı paketine zaten girer)
NEXT_PUBLIC_THEME_IDTema kimliği
  • .env.local içindeki diğer satırlar korunur; dosya 0600 izinle yazılır ve hiçbir zaman push edilmez.
  • Paket yöneticisi kilit dosyasından seçilir (pnpm-lock.yaml, yarn.lock, bun.lock, package-lock.json). Port --port ile değişir; varsayılan PORT ortam değişkeni ya da 3000.

Bulutta Geliştirme#

Yerel ortam kurmadan çalışmak ya da önizlemeyi başkasıyla paylaşmak için:

Terminal
tecof theme dev --cloud
Metin
Bulut geliştirme oturumu açılıyor (thm_66f1a2b3c4d5e6f7a8b9c0d1)…
✔ İlk eşitleme: 2 dosya yazıldı, 0 silindi.

  Önizleme: https://sb-….vercel.run

Değişiklikler izleniyor (Ctrl+C ile çıkış). Sürüme dönüştürmek için: tecof theme push

Bulut oturumu Cloud IDE'nin sandbox'ını kullanır: kod main dalından açılır, CLI yerel farkınızı yazar, sonra klasörü izleyip değişiklikleri yaklaşık 300 ms'lik gruplar hâlinde oturuma gönderir. Önizleme adresi sıcak yenilemeyle (HMR) güncellenir.

  • Yalnız metin dosyaları eşitlenir; görsel ya da font gibi ikili dosyalar binary-not-supported ile reddedilir. Onları tecof theme push ile gönderin.
  • Yerel taban main ile aynıysa yalnız farklı dosyalar gönderilir. Taban eskiyse CLI uyarır ve tüm dosyaları gönderir; projede ikili dosya varsa eşitleme durur. Bu uyarıyı görürseniz önce tecof theme pull ile tabanı güncelleyin.
  • Oturum Cloud IDE ile aynı kredi kurallarına tabidir: açılışta ve açık kaldığı sürece mağazanın kredisinden düşer (MCP → Kredi). Oturum 45 dakika sonra kapanır; CLI süreyi uzatmaz, oturum bitince uyarıp çıkar.
  • Bir temada aynı anda tek oturum açık olabilir. Aynı temada başka bir kullanıcının Cloud IDE oturumu açıksa 409 session-busy döner.
  • Ctrl+C'de CLI oturumu kapatmayı sorar (varsayılan evet); --keep oturumu açık bırakır. Oturum kapanırken taslak kaydedilmez: kaynak gerçeği sizin klasörünüzdür.
  • Bulut geliştirme yalnız tecof login oturumuyla çalışır; kapsamlı CI token'ı 403 token-scope-insufficient alır.
  • Oturumdaki değişiklikler yalnız tecof theme push ile sürüme dönüşür.

6. Push Edin#

Terminal
tecof theme push -m "Yeni ana sayfa"
Metin
Push: thm_66f1a2b3c4d5e6f7a8b9c0d1 → staged
312 dosya tarandı (4.21 MB).
Plan: 3 yüklenecek, 1 silinecek, 309 aynı.
Yükleniyor 3/3 dosya (17.8 KB / 17.8 KB)
Sürüm açıldı: v12 (staged)
Durum: queued
Durum: building
Durum: ready
✔ v12 hazır: https://tecof-theme-butik-3k9x2a1b7-tecof.vercel.app
Önizleme: tecof theme open v12
Canlıya almak için: tecof theme promote v12
  • Yalnız depoda olmayan içerik yüklenir; değişmeyen dosyalar ve depoda zaten bulunan içerik (ör. taşınan bir dosya) yeniden gönderilmez. Yerelde sildiğiniz dosyalar depodan da silinir.
  • Varsayılan hedef staged: üretim derlemesi yapılır, alan adı atanmaz, canlı site değişmez.
  • -m vermezseniz son git commit başlığı, yoksa tecof theme push kullanılır. Tecof deposundaki commit mesajı Yeni ana sayfa [tecof v12 · Ayşe Yılmaz] biçimindedir.
  • CLI derleme bitene kadar bekler (varsayılan 900 saniye; --wait-timeout ile değişir, --no-wait beklemez). Derleme başarısız olursa son günlük satırlarını basar ve çıkış kodu 1 olur; tüm günlük için tecof theme logs v12.
  • Değişiklik yoksa sürüm açılmaz: "Değişiklik yok; sürüm açılmadı."
  • Gönderilmeyen dosyalar ve sınırlar: CLI Başvurusu → Yok sayma kuralları.

Staged adımını atlayıp doğrudan yayınlamak için:

Terminal
tecof theme push --prod -m "Acil düzeltme"

--prod commit'i doğrudan main dalına hızlı ileri yazar; derleme bitince sürüm canlıya çıkar ve tek derleme yapılır. Önizleme adımı olmadığı için yıkıcı sayılır ve onay ister.


7. Önizleyin#

Terminal
tecof theme open v12
Metin
Açılıyor: https://tecof-theme-butik-3k9x2a1b7-tecof.vercel.app/?x-vercel-protection-bypass=***&x-vercel-set-bypass-cookie=true
Bağlantıdaki erişim sırrı maskelendi; tam bağlantı için --show-secret kullanın (yalnız yetkili kişilerle paylaşın).
  • Sürüm adresleri korumalıdır. CLI erişim sırrı taşıyan bir bağlantı alır ve tarayıcıda tam hâliyle açar; terminalde ve --json makbuzunda sır maskelenir. Tam bağlantı için --show-secret.
  • Sürüm vermezseniz (tecof theme open) canlı adres açılır.
  • Panelde aynı iş Sürümler ekranındaki Önizle düğmesidir.

Bağlantıyı paylaşmadan önce Önizleme bağlantıları bölümünü okuyun: içindeki sır, alanın bütün sürüm adreslerini açar.


8. Canlıya Alın#

Terminal
tecof theme promote v12
Metin
v12 thm_66f1a2b3c4d5e6f7a8b9c0d1 için canlıya alınacak. Devam edilsin mi? (e/H) e
✔ v12 canlıda: https://www.butik-ornek.com
  • Yeniden derleme yapılmaz; alan adları saniyeler içinde v12'yi gösterir.
  • main dalı v12'nin commit'ine hızlı ileri alınır; bu klasörün yerel tabanı da v12 olur.
  • Vercel main dalının bu commit'ini bir kez daha derler. İçerik aynıdır, canlı site etkilenmez ve yeni sürüm numarası açılmaz.
  • Vercel isteği sıraya aldıysa sonuç Aktivasyon: pending olarak görünür; durumu tecof theme versions v12 ile izleyin.

9. Gerekirse Geri Alın#

Terminal
tecof theme rollback          # bir önceki canlı sürüme
tecof theme rollback v10      # daha önce canlıda olmuş belirli bir sürüme
Metin
thm_66f1a2b3c4d5e6f7a8b9c0d1 bir önceki canlı sürüme geri alınacak. Devam edilsin mi? (e/H) e
✔ Geri alındı; canlı sürüm: v11
! Yeni değişiklikler canlıda değil; ileri almak için `tecof theme promote vM` ya da yeni yayın.

Geri alma yalnız daha önce canlıda olmuş sürümlere yapılır, anlıktır ve main dalına dokunmaz. Geri almadan sonra yeni yayınların nasıl canlıya çıktığını Geri Almadan Sonra Yayınlar anlatır.

Sürüm geçmişi:

Terminal
tecof theme versions
Metin
ref  status  target      live  source  created           message                          url
---  ------  ----------  ----  ------  ----------------  -------------------------------  ----------------------------------------------------
v12  ready   staged            cli     2026-10-11 09:41  Yeni ana sayfa                   https://tecof-theme-butik-3k9x2a1b7-tecof.vercel.app
v11  ready   production  ●     ide     2026-10-10 17:05  Footer bağlantıları güncellendi  https://tecof-theme-butik-8h2m4q6r1-tecof.vercel.app
v10  ready   staged            cli     2026-10-09 14:22  Ürün kartı                       https://tecof-theme-butik-5t7w9y2c4-tecof.vercel.app

Başkası Temayı Değiştirdiyse (base-moved)#

Siz çalışırken main dalına başka bir değişiklik gidebilir: bir Cloud IDE kaydı, bir AI işi, başka bir geliştiricinin push'u ya da CI. Staged push eski tabanınızın üstüne kurulur ve başarılı olur; fark canlıya alma anında ortaya çıkar:

Metin
$ tecof theme promote v12
✖ main ilerledi (şu an 9f8e7d6); bu push eski tabana dayanıyor (base-moved).

Çıkış kodu 4'tür; --json makbuzunda next.action pull olur. Canlı siteye ve main dalına dokunulmaz. v12'nin tabanı değişmeyeceği için aynı sürümü yeniden denemek işe yaramaz: değişikliklerinizi güncel main üstüne taşıyıp yeni bir sürüm açın.

  1. tecof status ile tabanınızı ve yerel değişikliklerinizi görün.
  2. tecof theme pull güncel main dalını indirir. Birleştirme yapmaz: yerelde değiştirdiğiniz bir dosya maindekinden farklıysa hiçbir şey yazmadan durur, dosyaları nedenleriyle listeler ve çıkış kodu 4 olur.
  3. Değişikliklerinizi güncel main üstüne uygulayın (aşağıdaki örnek), tecof theme push ile yeni sürümü (ör. v13) açın, önizleyin ve tecof theme promote v13 ile canlıya alın.

--prod push'ta aynı denetim commit anında yapılır: main ilerlediyse sürüm açılmaz, çözüm aynıdır.

Örnek: yerel git ile güncelleme. Değişiklikleri birleştirmenin en kolay yolu klasörü kendi git deponuz olarak tutmaktır; .git/ hiçbir zaman Tecof'a gönderilmez. Aşağıdaki örnek, klasörü tecof theme init sonrasında git deposu yaptığınızı, her pulldan sonra commit'lediğinizi ve değişikliklerinizin henüz commit'lenmediğini varsayar:

Terminal
git stash -u                      # değişikliklerinizi kenara alın; klasör yerel tabana döner
tecof theme pull                  # güncel main'i indirir
git add -A && git commit -m "tecof: main güncellendi"
git stash pop                     # değişikliklerinizi yeniden uygulayın; çakışma varsa çözün
tecof theme push -m "Yeni ana sayfa (güncel main üstüne)"

Yerel değişikliklerinizi bırakmayı göze alıyorsanız tecof theme pull --force onların üzerine yazar ve uzakta silinmiş dosyaları siler.


Sonraki Adımlar#