Skip to content

Sözlük / Terimler

Projeye özgü terimlerin tek yerde tanımlanması — ürün/iş, teknik ve rol terimleri.

Bu sayfa Achidemy projesinde sık geçen terimlerin kısa tanımlarını verir. Ürün/iş, teknik ve rol kavramları ayrı bölümlerde toplanmıştır. Yabancı dilde gelen geliştiriciler için de referans olarak kullanılabilir.


TerimAçıklama
EnrollmentBir öğrencinin bir kursa kaydolması. Veritabanında enrollments tablosu; satın alma veya abonelik ile oluşur.
PayoutEğitmene yapılan ödeme. Platform gelirinden eğitmenin payının transfer edilmesi.
Payout requestEğitmenin “bakiyemi çek” talebi. payout_requests tablosunda tutulur; admin onayı sonrası Stripe Connect veya manuel (TR) ödeme yapılır.
TierFiyat katmanı. Bir kursun hangi fiyat grubuna ait olduğunu belirler; price_tiers tablosu.
Price tierTier ile aynı anlamda kullanılır; kurs–fiyat ilişkisi için.
Tier pricesBir tier’a bağlı para birimi ve tutar çiftleri. tier_prices tablosu; örn. USD 49, TRY 1200, EUR 45.
PPP (bölgesel fiyat)Satın alma gücü paritesi (Purchasing Power Parity). Ülkeye göre fiyat ve para birimi; Cloudflare request.cf ile ülke tespiti, pricing-engine ile PPP/matrix hesaplama.
AffiliateSatış ortağı. Referans kodu ile yönlendirdiği satışlardan komisyon kazanır; affiliate_earnings vb.
Referral codeKullanıcıya özel referans kodu; affiliate veya paylaşım linkinde kullanılır.
Connect (Stripe Connect)Stripe’ın eğitmenlere ödeme aktarmak için kullandığımız ürünü. Uluslararası eğitmenler Stripe Connect ile ödeme alır.
Manuel ödeme (TR)Türkiye’deki eğitmenler için Stripe Connect yerine kullanılan akış: eğitmen IBAN/Payoneer bilgisini girer, admin onayı sonrası platform dışında havale/EFT ile ödeme yapılır.
Checkout sessionStripe Checkout oturumu. Kullanıcı ödeme sayfasına yönlendirilir; tamamlanınca webhook ile enrollment’lar oluşturulur. stripeCheckoutSessionId enrollment kaydında tutulur.
SubscriptionAbonelik. Aylık/yıllık plan; kullanıcı abone olduğunda belirli kurslara veya katalog erişimi alır. Stripe subscription + subscription_watch_logs vb.
BundleKurs paketi. Birden fazla kursun tek ürün olarak sunulması; course_bundles, bundle_courses tabloları.
Bundle vitrin sayfasıPublic /:lang/bundle/:slugbundle.$slug.tsx; kurs detay sayfasıyla uyumlu layout, sağ kartta promo video ve fiyat, PPP ve createBundleCheckoutSession. Detay: Kurs ve Paket Vitrin Sayfaları.
Wishlistİstek listesi. Öğrencinin daha sonra almak istediği kursları tuttuğu liste; wishlists tablosu.
CartSepet. Tek kurs veya paket eklenebilir; cart_items tablosu. Checkout ile satın alma tamamlanır.
StreakGünlük öğrenme serisi. Öğrencinin ardışık günlerde izleme yapması; daily_activities, user.currentStreak, user.longestStreak ile takip edilir.
Video telemetry (heartbeat)İzlenme süresinin kısa bloklar (örn. 15 sn) halinde sunucuya gönderilip DB’ye yazılması. Achidemy’de POST /api/video-telemetry + watch_time_logs ile tutulur.
Anti‑Cheat (payout koruması)Eğitmen gelir payı hesabını korumak için izlenme loglarına uygulanan kurallar. Örn. Self‑Watch Ban, Human Daily Cap, Lesson 3x Cap.
Self‑Watch BanEğitmenin kendi kursunu izlediği sürelerin “paid/payout” havuzuna dahil edilmemesi. watch_time_logs ve subscription_watch_logs atlanır; streak için daily_activities devam edebilir.
Human Daily CapKullanıcı başına günlük maksimum “paid” izlenme süresi tavanı. Achidemy’de 8 saat = 28.800 sn.
Lesson 3x CapAy içinde bir dersin maksimum 3 katı kadar izlenme süresinin payout’a dahil edilmesi. Formül: (lessons.duration \times 3).
Public profileEğitmenin açık profil sayfası. user.username (slug), headline, bio, sosyal linkler; takipçi sayısı follows tablosu ile hesaplanır.
Course pricesKurs veya paketin çok para birimli fiyatları. course_prices tablosu; ülke/para birimi bazlı fiyat.
Course levelKurs seviyesi (beginner, intermediate, expert, all_levels). course_levels tablosunda dinamik yönetilir.
Refundİade. enrollments.refundedAt, refundStatus, refundReason; admin onayı ile iade süreci.
Notification (uygulama içi)Uygulama içi bildirim. notifications tablosu; dil kullanıcının bölgesine (users.country) göre; dropdown ve account/notifications sayfası. Detay: Bildirim Sistemi.
Certificate codeSertifikanın benzersiz doğrulama kodu. certificates.certificateCode; /verify/:code ile public doğrulama.
Seed pricingFiyat matrix’i başlangıç verisi ile doldurma. npx tsx app/db/seed-pricing.ts — Tier 1–50, USD/TRY/EUR.
rateAtSaleSatış anındaki döviz kuru. earnings.rate_at_sale: 1 USD = X birim (örn. TRY için ~44). Raporlamada kazançları USD’ye çevirmek için kullanılır; webhook’ta getCachedRates ile yazılır.
CourseSelectionAnasayfada alt kategori sekmelerine göre “en çok satan” ve “en popüler” kursları listeyen bileşen. Sekme başına en fazla 10 kurs; boş kategoride “kurs bulunamadı” mesajı.
AlgoliaHarici arama servisi. Navbar’daki anlık arama (instant search) Algolia üzerinden çalışır; typo-tolerant, milisaniye düzeyinde sonuç döner; zero-result durumunda popüler kurslara fallback yapılır. Backend’de kurs yayınlandığında syncCourseToAlgolia ile index güncellenir. Index adı: courses.
GlobalSeoTagsRoot layout’ta canonical ve hreflang link’lerini üreten bileşen. Dil varyasyonlarını arama motoruna bildirir.
JSON-LD (Schema.org)Kurs, eğitmen profil ve organizasyon sayfalarında kullanılan yapılandırılmış veri; Google rich snippet için. Paket vitrinde route-özel JSON-LD şu an yok.

TerimAçıklama
LoaderReact Router’da sayfa verisini sunucuda çeken async fonksiyon. Route dosyasında export async function loader(...); istemcide useLoaderData() ile kullanılır.
ActionReact Router’da form gönderimi veya mutation’ı işleyen async fonksiyon. Route dosyasında export async function action(...); form action veya fetch ile tetiklenir.
Layout routeAlt sayfaları saran route; ortak çerçeve (sidebar, header) sağlar ve <Outlet /> ile alt route’u render eder. Örn. $lang.tsx, admin.tsx, instructor.tsx, account.tsx, my-courses.tsx.
GraphQL contextGraphQL Yoga’da resolver’lara geçen bağlam. { db, request, user, cloudflare } — yetkilendirme ve DB/ülke bilgisi için kullanılır.
Signed URL (Bunny)Bunny CDN’de videoya erişim için imzalı URL. Token + expires ile oluşturulur; doğrudan indirme ve yetkisiz erişim engellenir. lib/video-security.tsgenerateSignedVideoUrl.
WebhookDış servisin (örn. Stripe) olay sonrası uygulamamıza POST atması. Örn. api/stripe/webhook — checkout tamamlandı, ödeme alındı vb.; imza doğrulaması yapılır.
HyperdriveCloudflare’ın PostgreSQL connection pooling ürünü. Production’da DB bağlantısı Hyperdrive üzerinden sağlanır; Worker’da daha verimli bağlantı kullanımı.
Pull Zone (Bunny)Bunny CDN’de içeriğin sunulduğu zone. Video stream ve storage için; signed URL ve storage URL’leri bu zone üzerinden verilir.

TerimAçıklama
StudentÖğrenci. Kurs satın alan veya abone olan kullanıcı; user.role genelde "student" (varsayılan).
InstructorEğitmen. Kurs oluşturabilir, gelir raporu görür, payout talep eder. Kayıt sonrası eğitmen olmak için onboarding tamamlanır; user.role === "instructor" veya eğitmen kaydı tamamlanmış kullanıcı.
AdminYönetici. Kurs onaylama/reddetme, finans özeti, payout onayı, iade, fiyat katmanları vb. user.role === "admin".
OnboardingKayıt sonrası adımlar. Özellikle eğitmen onboarding: e-posta doğrulama, profil tamamlama veya eğitmen sözleşmesi sonrası “eğitmen” olarak işaretlenme; onboardingCompleted vb.

  • Ürün/iş: Enrollment, payout, payout request, tier, tier_prices, PPP, affiliate, referral code, Connect, manuel ödeme (TR), checkout session, subscription, bundle, bundle vitrin sayfası, wishlist, cart, streak, public profile, course prices, course level, refund, notification (uygulama içi), certificate code, seed pricing, rateAtSale, CourseSelection, GlobalSeoTags, JSON-LD (Schema.org).
  • Teknik: Loader, action, layout route, GraphQL context, signed URL (Bunny), webhook, Hyperdrive, Pull Zone (Bunny).
  • Rol: student, instructor, admin; onboarding (eğitmen kaydı sonrası adımlar).

İlgili mimari sayfalar: Veritabanı Şeması, API Referansı ve GraphQL, Stripe Connect, TR Payout, Güvenlik ve Optimizasyon (signed URL).