Fabric Apps proje yapısı

Fabric Apps projeleri arka uç yapılandırmasını, veri modellerini ve ön uç kodunu birbirinden ayırır. Kesin yerleşim şablona bağlıdır. Varsayılan blankapp şablon, ayrı ön yüz, veri ve paylaşılan paketlere sahip bir npm çalışma alanı olan Universal App olarak çözümlenir.

Klasör düzeni

Varsayılan Universal App iskelesi aşağıdaki yapıya sahiptir:

your-project/
├── rayfin/
│   ├── .env
│   ├── rayfin.yml
│   └── tsconfig.json
├── packages/
│   ├── frontend/
│   │   ├── src/
│   │   └── package.json
│   ├── data/
│   │   └── src/index.ts
│   └── shared/
│       └── src/index.ts
├── package.json
├── tsconfig.json
└── README.md
Location Sahiplik
rayfin/ Arka uç yapılandırması ve aktif ortam değerleri.
packages/frontend/ Tarayıcı arayüzü, istemci başlatma ve ön yüz oluşturma.
packages/data/ Dekoratör uygulanmış runtime varlık sınıfları ve şema kaydı.
packages/shared/ Ön yüz ile paylaşılan izomorfik kayıt sözleşmeleri ve şema türleri. Buraya yalnızca arka uca ait kodu koymayın.

Veri, temel iskelede devre dışı bırakılmıştır. Uygulamanızın kalıcı kayıtlara ihtiyacı olduğunda etkinleştirin:

npm run pack:add -- data-modeling

Bu yetenek, başlangıç varlığı ve ortak sözleşme ekler ve veri hizmetini etkinleştirir. Varlık yazarlığı ve MSSQL lehçe yapılandırması için bkz. Veri modellerini tanımla.

Düz şablon alternatifi

Bazı şablonlar ve mevcut uygulamalar, ön uç kodu kök src/ içinde, varlıklar rayfin/data/ içinde ve rayfin/data/schema.ts içinde bir şema türü eşlemesi ile düz bir düzen kullanır. Bu düzen geçerliliğini koruyor. Başka bir şablonla eşleşmek için dosyaları taşımayın veya kopyalanmış paketler oluşturmayın. Projenizin rayfin/rayfin.yml gerçekten oluşturduğu dizinleri bulmak için servis yollarını okuyun.

Anahtar yapılandırma dosyaları

rayfin/rayfin.yml

rayfin/rayfin.yml dosyası, Fabric Apps arka ucunuzun ana yapılandırma dosyasıdır. Yerel geliştirme sırasında hangi hizmetlerin çalıştığını denetler ve dinamik yapılandırma değerleri için ortam değişkeni ilişkilendirmesini destekler.

Varsayılan çalışma alanı açıkça tanımlanmış hizmet yolları kullanır. Aşağıdaki örnek, veritabanı ihtiyacı olan bir uygulama için Data etkinleştirilmiş olan bu yolları göstermektedir:

id: my-app
name: my-app
version: 1.0.0
services:
  auth:
    enabled: true
    allowedRedirectUris:
      - http://localhost:5173
    fabric:
      enabled: true
      externalEntraExchange: true
    password:
      enabled: false
  data:
    enabled: true
    dialect: mssql
    path: packages/data
    buildCommand: npm run build
  staticHosting:
    enabled: true
    path: packages/frontend
    folder: dist
    buildCommand: npm run build:fabric
    indexDocument: index.html
    assetAccess: protected

Hizmet path değerleri proje köküne göredir. Derleme komutları çözümlenen hizmet dizininden çalıştırılır. Fonksiyonların başlatılması, packages/functions gibi bir çalışma alanı paketi seçtiğinde services.functions.path öğesini de kaydeder. Düz projeler mevcut rayfin/functions konumu kullanabilir. Bkz. Fonksiyonları Kullan.

Yapılandırma şu anahtar alanlarını içerir:

Üst düzey alanlar

Alan Türü Zorunlu Açıklama
id string Evet Docker Compose proje adı ve Fabric öğesi tanımlayıcısı olarak kullanılan proje kısa adı.
name string Evet İnsan tarafından okunabilir proje görüntüleme adı.
version string Evet Proje sürümü (semver).
services object Evet Hizmet yapılandırma bloğu.

services.data

Alan Türü Varsayılan Açıklama
enabled boolean false Veri hizmetini etkinleştirin.
dialect string — Fabric'te SQL veritabanı için mssql kullanın. Veri etkin olduğunda gereklidir.
path string — Proje köküne göre veri paketi dizini, örneğin packages/data. Düz şablonlar rayfin/data kullanabilir.
buildCommand string — Yapılandırılmış veri paketi için derleme komutu.

services.auth

Alan Türü Varsayılan Açıklama
enabled boolean false Kimlik doğrulama hizmetini etkinleştirin.
expiryInMinutes number — JWT belirtecinin dakika cinsinden geçerlilik süresi.
customClaims Record<string, string> — Verilen JWT'lere eklenen özel talepler.
scopes string[] — OAuth kapsamları (örneğin, ["read:data", "write:data"]).
refreshToken.lifetimeInDays number — Yenileme belirtecinin gün cinsinden kullanım süresi.
allowedRedirectUris string[] ["http://localhost:5173"] Kimlik doğrulama geri çağırmaları için izin verilen yönlendirme URI'leri.

services.auth.password

Alan Türü Varsayılan Açıklama
enabled boolean true Yerel geliştirme için e-posta ve parola kimlik doğrulamasını etkinleştirme

services.auth.fabric

Alan Türü Varsayılan Açıklama
enabled boolean false Fabric aracılı kimlik doğrulamasını (Microsoft Entra ID SSO) etkinleştirin.
externalEntraExchange boolean — Hedef ortam tarafından desteklendiğinde doğrudan devredilen Entra token değişimi ve harici-ebeveyn-host kimlik doğrulamasını etkinleştirin.

services.staticHosting

Alan Türü Varsayılan Açıklama
enabled boolean false Statik içerik barındırmayı etkinleştirin.
path string — Proje köküne göre ön uç paket dizini.
root string — Düz konfigürasyonlarda kullanılan eski frontend kökü.
folder string "dist" Çözülen ön uç yoluna göre derlenmiş statik varlıkları içeren dizin.
buildCommand string — Paketlemeden önce çalıştırılacak kabuk komutu (örneğin, npm run build).
indexDocument string — Kök yol için sunulan varsayılan belge (örneğin, index.html).

Tavsiye

Tüm dize değerleri, ${VAR} ve ${VAR:-default} sözdizimiyle ortam değişkeni enterpolasyonunu destekler. Değişkenler, rayfin/.env ve kabuk ortamından çözümlenir.

rayfin/.env

rayfin/.env dosyası aktif çalışma zamanı ve dağıtım değerlerini içerir ve enterpolasyon yoluyla rayfin.yml öğesine değerler sağlar. CLI, aktif arka uç için framework-neutral RAYFIN_PUBLIC_* değerler yazar. Sadece bu önekli değişkenler oluşturulan ön yüz ortam dosyalarına yansıtılır. RAYFIN_PUBLIC_* değişkenlere asla gizli bilgileri koymayın.

rayfin/.env sürüm kontrolünden uzak tutun. Beklenen değişkenleri yer tutucularla belgelemek için kullanılır rayfin/.env.example .

rayfin/.deployments.json

Dağıtım kayıt defteri, projenizin dağıtımları için arka uç URL'lerini, barındırma URL'lerini, öğe kimliklerini ve çalışma alanı kimliklerini kaydeder. Bu bir ön uç ortam dosyası değil. Sürüm kontrolünden uzak tutun. Kayıtlı dağıtımları listelemek için npx rayfin up switch <name>, etkin dağıtımı değiştirmek ve ortam değerlerini yeniden oluşturmak için npx rayfin up list kullanın.

rayfin/tsconfig.json

Şablonlar, yerleşimleri için TypeScript yapılandırması sağlar. Workspace paketlerinin kendi yapılandırmaları ve proje referansları vardır; düz şablonlar varlıkları rayfin/tsconfig.json aracılığıyla derleyebilir. İskelet projenin referanslarını koruyun ve tek bir kökten derleme varsaymak yerine derleme ve tür denetimi betiklerini kullanın.

Veri modeli dosyaları

Seçtiğiniz düzen için çalışma zamanı kaydını ve istemciye yönelik türleri hizalı tutun.

İş alanı varlıkları ve paylaşılan sözleşmeler

Universal App'te, packages/data/src/ altındaki dosyalar süslü varlık sınıflarını tanımlar. Çalışma zamanı sınıflarını packages/data/src/index.ts tarafından dışa aktarılan schema dizisine kaydedin.

packages/shared/src/index.ts içinde kayıt arayüzlerini ve UniversalAppSchema türünü eşleştirmeyi sürdürün. Ön uç, dekore edilmiş backend sınıflarını içe aktarmak yerine bu sözleşmeyi @rayfin-app/shared içinden içe aktarır.

Düz şablonlu varlıklar

Düz bir şablonda, rayfin/data/*.ts varlıkları tanımlar ve rayfin/data/schema.ts, client.data.<Entity> için varlık adlarını türlerle eşler. O şablonun sağladığı kayıt mekanizmasını takip edin.

Oluşturulan yapıtlar

rayfin/.temp/

Klasör, rayfin/.temp/ geliştirme sunucusunu çalıştırdığınızda oluşturulan arka uç yapıtlarını içerir. Arka uç eski şema veya yapılandırma kullanıyor gibi görünüyorsa, bu dosyaları yeniden oluşturmak için geliştirme yığınını durdurun ve yeniden başlatın.

Important

.temp/ klasörünü deponuza commit etmeyin. Dosyanıza .gitignore ekleyin.

Ön yüz yapısı

Varsayılan frontend packages/frontend/src/ içindedir. Düz şablonlar kök src/kullanabilir. services.staticHosting.path ayarı ön uç paketini tanımlar.

Aktif ortam ve çerçeve eşlemesi

rayfin dev ve rayfin up, rayfin/.env'ten çerçeveye özgü .env.local değerleri üretir. İçiçe içe bir ön uç için, dosya altında services.staticHosting.pathyazılır, örneğin packages/frontend/.env.local; düz projeler proje kökünü kullanır.

İçindeki kaynak rayfin/.env Vite çıktısı .env.local Next.js'teki çıktı .env.local
RAYFIN_PUBLIC_API_URL VITE_RAYFIN_API_URL NEXT_PUBLIC_RAYFIN_API_URL
RAYFIN_PUBLIC_PUBLISHABLE_KEY VITE_RAYFIN_PUBLISHABLE_KEY NEXT_PUBLIC_RAYFIN_PUBLISHABLE_KEY
RAYFIN_PUBLIC_ITEM_ID VITE_FABRIC_ITEM_ID NEXT_PUBLIC_FABRIC_ITEM_ID
RAYFIN_PUBLIC_WORKSPACE_ID VITE_FABRIC_WORKSPACE_ID NEXT_PUBLIC_FABRIC_WORKSPACE_ID
RAYFIN_PUBLIC_PORTAL_URL VITE_FABRIC_PORTAL_URL NEXT_PUBLIC_FABRIC_PORTAL_URL

Kaynak değerleri oluşturulan dosyada değil, rayfin/.env içinde düzenleyin. Dağıtım yapmadan yenilemek için:

npx rayfin env --framework vite

Diğer desteklenen eşlemeler için --framework nextjs veya --framework plain kullanın. --show bir çıktı dizini seçmek veya --output <dir> yazmadan genel eşlemeyi incelemek için kullanın. Oluşturulan .env.local dosyaları kaynak kontrolünden uzak tutun.

Eski bir ortam düzenini taşı

Eski projeler .env.fabric-<workspace> veya .env.fabric dosyaları içerebilir. Bu dosyalar mevcut düzendeki aktif ortam dosyaları değildir. Geçerli ortam iş akışını kullanmak için npx rayfin up komutunu çalıştırın. Herhangi bir göç mesajını gözden geçirin ve gerektiğinde özel değerleri rayfin/.env içine kopyalayın. Dağıtım kayıt defteri, çalışma alanı başına ortam dosyalarının yerini alır. Yeni uygulamaları onlara bağımlı hâle gelecek şekilde yapılandırmayın.