Poyra’yı kendi makinenizde denemenin en kısa yolu .NET Aspire’dır. Tek komut veritabanını, üç host’u ve aralarındaki bağlantıları birlikte ayağa kaldırır:
Gerekenler: .NET 10 SDK ve Docker. Başka kurulum adımı yoktur — Postgres imajı, veritabanı rolleri ve şema kendiliğinden hazırlanır.

AppHost neyi garanti eder?

1

Sıra koda yazılıdır

Postgres ayağa kalkar, docker/initdb betikleri poyra_app rolünü açar, API şemayı uygular (Database:AutoMigrate), Panel ve Checkout ancak API sağlıklı olduktan sonra başlar. “Önce şunu, sonra bunu başlat” ezberi biter.
2

İki rollü veritabanı geliştirmede de gerçektir

Uygulamalar poyra_app rolüyle bağlanır — NOSUPERUSER, NOBYPASSRLS. Sahip rol poyra yalnız migration koşar. Böylece iki katmanlı işyeri izolasyonu yerel makinede de üretimdeki koşullarla sınanır; RLS’i “geliştirmede kapalıydı” diye atlayan bir hata canlıya kaçamaz.
3

Adresler koddan üretilir

Üç host birbirinin mutlak adresini bilir (Poyra__PublicBaseUrl, Poyra__PanelBaseUrl, Poyra__CheckoutBaseUrl). Bu değerler Aspire’ın uç noktalarından gelir; appsettings içine elle yazılmış localhost portu kalmaz.
4

Günlük, iz ve sağlık tek ekranda

Pano beş kaynağın durumunu birlikte gösterir. API, Panel ve Checkout’un üçü de OpenTelemetry izlerini ve ölçümlerini panoya gönderir: bir ödemenin hangi adımda takıldığını, hangi SQL’in yavaş olduğunu ayrı bir araç kurmadan görürsünüz.Telemetri uygulamaların kendi kurulumundadır, Aspire’a bağımlı değildir — dışa aktarıcı yalnız OTEL_EXPORTER_OTLP_ENDPOINT tanımlıysa devreye girer. Bu yüzden üretimde de kendi koleksiyoncunuza (Jaeger, Grafana Tempo, OpenTelemetry Collector) aynı şekilde akar; koleksiyoncu kurmayan kurulum ise hiçbir şey kaybetmez.
Tanım tek dosyadadır ve okunacak kadar kısadır: src/Poyra.AppHost/Program.cs.

İlk ödeme

Kurulum ayaktayken Hızlı başlangıç adımlarını API=http://localhost:5080 ile uygulayabilirsiniz. İşyeri açmak için geliştirme platform anahtarı hazırdır:
Yanıttaki apiKey yalnız bir kez gösterilir.
MockBank sihirli tutarları: kuruş %100 == 99 → kart reddi (05), %100 == 98 → 3DS başarısız, diğerleri onay. Devretme (failover) senaryosu için hesap kimliklerine fail_initiate=true ekleyin — ayrıntı: Test modu.

Aspire’sız kurulum

Eski yol da çalışmaya devam eder: geliştirme kompozisyonu veritabanını açar, üç host ayrı terminallerde koşar.
İkisi aynı anda çalıştırılmaz: hem docker compose hem Aspire 5442 portunu ister. Aspire kendi veri hacmini (poyra-aspire-pgdata) kullanır — compose kurulumundaki veriniz ayrı durur, biri diğerini bozmaz.
Aspire bir geliştirme aracıdır; üretim kurulumu Docker ile kurulum sayfasındaki docker-compose.prod.yml iledir. Üretimde migration ayrı bir servis olarak koşar, uygulamalar şemayı kendileri kurmaz.