İçeriğe geç

Vaka çalışmasıYayında

Postgradia

Koçların, öğrencilerin ve velilerin aynı haftalık plan üzerinden çalıştığı bir koçluk platformu.

Rol
Kurucu ortak & CTO — backend ve DevOps lideri
Ne zaman
2024 → bugün
  • Backend
  • DevOps
  • Full-stack

Kaynak kod gizli — bir görüşmede kodu ve pipeline’ı birlikte gezmekten memnuniyet duyarım.

Postgradia ana sayfası: “öğrenci gelişimini takip etmenin akıllı ve kolay yolu”, panel önizlemesiyle.
Herkese açık ana sayfa (postgradia.com).

Kimin için

  • Onlarca öğrenciye haftalık ödev planlayan ve bunu tablolarla, mesaj gruplarıyla yürüten eğitim koçları ve öğretmenler.
  • Bu hafta ne yapacağını tek ve net bir listede, webde ya da telefonunda görmek isteyen öğrenciler.
  • Koçun peşine düşmeden ilerlemeyi görmek isteyen veliler ve birçok koçu tek hesap altında yöneten kurumlar.

Ne yaptım

  • Bitnodia’yı kurduk; üç kişilik kurucu ekipte CTO olarak mühendisliği yönetiyorum. Backend ve teslimat platformu bende; ürün bir ekip işi.
  • NestJS API’de: öğrenci modülü, bildirimler ve push, partner ve referans programı, kimlik doğrulama, i18n, config doğrulama, e-posta şablonları ve toplu ödev planlayıcı.
  • Platformda: API’nin Docker imajı, uçtan uca Jenkins pipeline’ı ve Azure’a GitHub Actions deploy’ları.
  • API işinin gerektirdiği her yerde React web uygulamasında ve Expo mobil uygulamada da elim kodda.

Nasıl çalışıyor

  1. 1Öğrencileri ekle

    Koç (ya da kurum) öğrencileri ve velileri organizasyona ekler; kredi kartı istemeyen ücretsiz denemeyle başlar.

  2. 2Haftayı planla

    Ödevler sürükle-bırak haftalık planlayıcıya girer — şablonlardan, tek öğrenciye ya da bütün bir gruba aynı anda.

  3. 3Öğrenci çalışır

    Öğrenci haftasını webde ya da mobil uygulamada görür, hatırlatma alır ve görevleri tamamladıkça işaretler.

  4. 4Deneme ve hedef takibi

    Deneme sonuçları, kitaplar ve hedefler koçun üzerine aksiyon alabileceği öğrenci analizlerinde toplanır.

  5. 5Veli takip eder

    Veli ekranı ilerlemeyi gösterir; bildirimler push, SMS ya da e-postayla gider.

Önemli kararlar

  1. 01

    Mikroservis değil, modüler monolit

    Yerine: Her alan için ayrı servis (öğrenci, ödev, ödeme…).

    Neden: Üç kişilik bir ekip tek deploy edilebilir birim, tek veritabanı ve tek transaction sınırıyla daha hızlı ilerler. NestJS modülleri dikiş yerlerini koruyor; bir parça ileride gerçekten hak ederse dışarı taşınabilir.

  2. 02

    Yetkilendirme bir politika, organizasyona göre

    Yerine: Controller’lara dağılmış rol kontrolleri.

    Neden: Koçlar, öğrenciler, veliler ve kurum yöneticileri aynı verinin farklı dilimlerini görüyor. Global guard’lardaki CASL politikaları multi-tenancy’yi her endpoint’in hatırlaması gereken bir gelenek değil, API’nin uyguladığı bir kural yapıyor — ve test edilebiliyor.

  3. 03

    Idempotent ve sıra bağımsız ödeme webhook’ları

    Yerine: En son gelen webhook’a güvenmek.

    Neden: Abonelik webhook’ları iki kez ve karışık sırayla gelir. Hangi olayları uyguladığını hatırlayan küçük bir state machine (deneme, aktif, gecikmiş ödeme süresi, duraklatılmış, ödeme duvarı) sayesinde bir retry ödeme yapan bir koçu asla düşürmüyor.

  4. 04

    Helm ile Kubernetes, secret’lar Git dışında

    Yerine: Container’ları elle çalıştıran tek bir sanal makine.

    Neden: API, ingress-nginx ve cert-manager arkasında AKS’te çalışıyor; staging ve production değerleriyle tek bir chart, secret’lar External Secrets ile bir key vault’tan geliyor. Rollout’lar tekrarlanabilir ve hiçbir kimlik bilgisi repoda ya da CI değişkenlerinde durmuyor.

Mimari

İSTEMCILERWeb appReact Router 7 SPAMobile appExpo · React NativeLanding & blogNext.js · MDXHTTPS · JSONGIRIŞIngressingress-nginx · cert-managerUYGULAMANestJS APImodüler monolit · CASLJobs & eventscron · event emitterVERIPostgreSQLMikroORM · migrationsObject storageS3 · presigned yüklemeSecretsKey Vault → ExternalSecretsDIŞ SERVISLERBillingabonelik webhook’larıMessagingpush · SMS · e-postaErrorsSentry↑ yayına alırTESLIMATGitHub Actionsbuild · testJenkinspipelineRegistryACR imagesHelm → AKSstaging · prodPR previewsStatic Web Apps

Yeniden çizildi ve sadeleştirildi — host adı ya da kimlik yok. Vurgulu kutular benim yaptığım ya da sahibi olduğum parçalar.

Sayılar

öğretmen kullanıyor (postgradia.com)
1.000+
uygulama: API, web, mobil, landing, doküman
5
API’de domain varlığı
40+
API test dosyası — unit + seed’li DB’de e2e
≈ 45

Teknolojiler

Backend

  • NestJS
  • TypeScript
  • MikroORM
  • PostgreSQL
  • CASL
  • Passport · JWT
  • Swagger
  • React Email

İstemciler

  • React Router 7
  • TanStack Query
  • shadcn/ui
  • Expo
  • React Native
  • Next.js

Platform

  • Azure AKS
  • Helm
  • ingress-nginx
  • cert-manager
  • External Secrets
  • Static Web Apps
  • GitHub Actions
  • Jenkins
  • Docker

Entegrasyonlar

  • LemonSqueezy
  • AWS S3
  • Expo push
  • SMS & e-mail providers
  • Sentry

Uzun versiyonu ister misin — kod, pipeline, ödünleşimler?

E-posta gönder
Sıradaki vaka çalışması3dfilamentci3D yazıcı, filament, reçine ve yedek parça için sıfırdan kurulmuş bir e-ticaret platformu — uzman bir mağaza için.