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ı. |
| 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ı, 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).