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.
Ürün / İş Terimleri
Section titled “Ürün / İş Terimleri”| Terim | Açıklama |
|---|---|
| Enrollment | Bir öğrencinin bir kursa kaydolması. Veritabanında enrollments tablosu; satın alma veya abonelik ile oluşur. |
| Payout | Eğitmene yapılan ödeme. Platform gelirinden eğitmenin payının transfer edilmesi. |
| Payout request | Eğitmenin “bakiyemi çek” talebi. payout_requests tablosunda tutulur; admin onayı sonrası Stripe Connect veya manuel (TR) ödeme yapılır. |
| Tier | Fiyat katmanı. Bir kursun hangi fiyat grubuna ait olduğunu belirler; price_tiers tablosu. |
| Price tier | Tier ile aynı anlamda kullanılır; kurs–fiyat ilişkisi için. |
| Tier prices | Bir 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. |
| Affiliate | Satış ortağı. Referans kodu ile yönlendirdiği satışlardan komisyon kazanır; affiliate_earnings vb. |
| Referral code | Kullanı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 session | Stripe Checkout oturumu. Kullanıcı ödeme sayfasına yönlendirilir; tamamlanınca webhook ile enrollment’lar oluşturulur. stripeCheckoutSessionId enrollment kaydında tutulur. |
| Subscription | Abonelik. 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. |
| Bundle | Kurs paketi. Birden fazla kursun tek ürün olarak sunulması; course_bundles, bundle_courses tabloları. |
| Bundle vitrin sayfası | Public /:lang/bundle/:slug — bundle.$slug.tsx; kurs detay sayfasıyla uyumlu layout, sağ kartta promo video ve fiyat, PPP ve createBundleCheckoutSession. Detay: Kurs ve Paket Vitrin Sayfaları. |
| Academy | Eğitmenin markalı online akademisi. Subdomain veya custom domain ile erişilir; academies tablosu. Detay: Academy Modülü. |
| Tenant | Academy bağlamında bir subdomain’e veya custom domain’e bağlı vitrin. Host üzerinden çözümlenir; getTenantByRequest. |
| Academy Mode (open/closed) | Academy vitrin davranışı. open: açık mağaza (fiyatlar görünür, satın alma yapılabilir); closed: kapalı LMS (sadece atanmış öğrenciler erişebilir). |
| SetupGuide | Academy kurulum rehberi bileşeni. 4 adımlı interaktif rehber; eğitmenin academy kurulumunu takip etmesini sağlar. |
| Academy Builder (CMS) | Academy vitrin tasarımı aracı. Hero, hakkımızda, footer ve marka özelleştirme; themeConfig JSON olarak kaydedilir. |
| Wishlist | İstek listesi. Öğrencinin daha sonra almak istediği kursları tuttuğu liste; wishlists tablosu. |
| Cart | Sepet. Tek kurs veya paket eklenebilir; cart_items tablosu. Checkout ile satın alma tamamlanır. |
| Streak | Gü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 Ban | Eğ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 Cap | Kullanıcı başına günlük maksimum “paid” izlenme süresi tavanı. Achidemy’de 8 saat = 28.800 sn. |
| Lesson 3x Cap | Ay içinde bir dersin maksimum 3 katı kadar izlenme süresinin payout’a dahil edilmesi. Formül: (lessons.duration \times 3). |
| Public profile | Eğitmenin açık profil sayfası. user.username (slug), headline, bio, sosyal linkler; takipçi sayısı follows tablosu ile hesaplanır. |
| Course prices | Kurs veya paketin çok para birimli fiyatları. course_prices tablosu; ülke/para birimi bazlı fiyat. |
| Course level | Kurs 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 code | Sertifikanın benzersiz doğrulama kodu. certificates.certificateCode; /verify/:code ile public doğrulama. |
| Seed pricing | Fiyat matrix’i başlangıç verisi ile doldurma. npx tsx app/db/seed-pricing.ts — Tier 1–50, USD/TRY/EUR. |
| rateAtSale | Satış 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. |
| CourseSelection | Anasayfada 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ı. |
| Algolia | Harici 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. |
| GlobalSeoTags | Root 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. |
Teknik Terimler
Section titled “Teknik Terimler”| Terim | Açıklama |
|---|---|
| Loader | React Router’da sayfa verisini sunucuda çeken async fonksiyon. Route dosyasında export async function loader(...); istemcide useLoaderData() ile kullanılır. |
| Action | React 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 route | Alt 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 context | GraphQL 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.ts — generateSignedVideoUrl. |
| Webhook | Dış 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. |
| Hyperdrive | Cloudflare’ı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. |
Rol ve Süreç Terimleri
Section titled “Rol ve Süreç Terimleri”| Terim | Açıklama |
|---|---|
| Student | Öğrenci. Kurs satın alan veya abone olan kullanıcı; user.role genelde "student" (varsayılan). |
| Instructor | Eğ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ı. |
| Admin | Yönetici. Kurs onaylama/reddetme, finans özeti, payout onayı, iade, fiyat katmanları vb. user.role === "admin". |
| Onboarding | Kayı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ı, academy, tenant, academy mode (open/closed), SetupGuide, Academy Builder (CMS), 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, Academy Modülü, Stripe Connect, TR Payout, Güvenlik ve Optimizasyon (signed URL).