105 lines
8.0 KiB
Plaintext
105 lines
8.0 KiB
Plaintext
---
|
||
title: Mimari
|
||
description: Twenty uygulamaları nasıl çalışır — korumalı alan, yaşam döngüsü ve yapı taşları.
|
||
icon: sitemap
|
||
---
|
||
|
||
Twenty uygulamaları, çalışma alanınızı özel nesneler, mantık, UI bileşenleri ve yapay zekâ yetenekleriyle genişleten TypeScript paketleridir. Tam korumalı alan ve izin kontrolleriyle Twenty platformunda çalışırlar.
|
||
|
||
## Uygulamalar nasıl çalışır
|
||
|
||
Bir uygulama, `twenty-sdk` paketindeki `defineEntity()` işlevleri kullanılarak bildirilen **varlıklar** koleksiyonudur. SDK, bu bildirimleri derleme sırasında AST analiziyle algılar ve bir **manifest** üretir — uygulamanızın bir çalışma alanına neler eklediğinin eksiksiz bir açıklaması.
|
||
|
||
```
|
||
your-app/
|
||
├── src/
|
||
│ ├── application-config.ts ← defineApplication (required, one per app)
|
||
│ ├── roles/ ← defineRole
|
||
│ ├── objects/ ← defineObject
|
||
│ ├── fields/ ← defineField
|
||
│ ├── logic-functions/ ← defineLogicFunction
|
||
│ ├── front-components/ ← defineFrontComponent
|
||
│ ├── skills/ ← defineSkill
|
||
│ ├── agents/ ← defineAgent
|
||
│ ├── views/ ← defineView
|
||
│ ├── navigation-menu-items/ ← defineNavigationMenuItem
|
||
│ └── page-layouts/ ← definePageLayout
|
||
├── public/ ← Static assets (images, icons)
|
||
└── package.json
|
||
```
|
||
|
||
<Note>
|
||
**Dosya organizasyonu size kalmış.** Varlık algılama AST tabanlıdır — dosyanın nerede bulunduğundan bağımsız olarak SDK `export default defineEntity(...)` çağrılarını bulur. Yukarıdaki klasör yapısı bir gelenektir, zorunluluk değildir.
|
||
</Note>
|
||
|
||
## Varlık türleri
|
||
|
||
| Varlık | Amaç | Belgeler |
|
||
| ------------------------ | ------------------------------------------------------------- | --------------------------------------------------------------------- |
|
||
| **Uygulama** | Uygulama kimliği, izinler, değişkenler | [Veri Modeli](/l/tr/developers/extend/apps/data-model) |
|
||
| **Rol** | Nesneler ve alanlar için izin kümeleri | [Veri Modeli](/l/tr/developers/extend/apps/data-model) |
|
||
| **Object** | Alanlara sahip özel veri tabloları | [Veri Modeli](/l/tr/developers/extend/apps/data-model) |
|
||
| **Alan** | Mevcut nesneleri genişletme, ilişkileri tanımlama | [Veri Modeli](/l/tr/developers/extend/apps/data-model) |
|
||
| **Mantık İşlevi** | Tetikleyicilerle sunucu tarafı TypeScript | [Mantıksal İşlevler](/l/tr/developers/extend/apps/logic-functions) |
|
||
| **Ön Uç Bileşeni** | Twenty'nin sayfasında korumalı alanda React kullanıcı arayüzü | [Ön Uç Bileşenleri](/l/tr/developers/extend/apps/front-components) |
|
||
| **Beceri** | Yeniden kullanılabilir yapay zekâ temsilcisi yönergeleri | [Beceriler ve Temsilciler](/l/tr/developers/extend/apps/skills-and-agents) |
|
||
| **Temsilci** | Özel istemlere sahip yapay zekâ asistanları | [Beceriler ve Temsilciler](/l/tr/developers/extend/apps/skills-and-agents) |
|
||
| **Görünüm** | Önceden yapılandırılmış kayıt listesi görünümleri | [Düzen](/l/tr/developers/extend/apps/layout) |
|
||
| **Gezinme Menüsü Öğesi** | Özel kenar çubuğu öğeleri | [Düzen](/l/tr/developers/extend/apps/layout) |
|
||
| **Sayfa Düzeni** | Özel kayıt sayfası sekmeleri ve widget'lar | [Düzen](/l/tr/developers/extend/apps/layout) |
|
||
|
||
## Korumalı alan
|
||
|
||
* **Mantık işlevleri** sunucuda yalıtılmış Node.js işlemlerinde çalışır. Verilere yalnızca, kapsamı uygulamanın rol izinleriyle sınırlandırılmış tipli API istemcisi üzerinden erişirler.
|
||
* **Ön uç bileşenleri**, Remote DOM kullanan Web Worker'larda çalışır — ana sayfadan yalıtılmıştır ancak yerel DOM öğelerini (iframe'ler değil) oluşturur. Twenty ile mesaj iletimi yapan bir ana makine API'si aracılığıyla iletişim kurarlar.
|
||
* **İzinler**, API düzeyinde uygulanır. Çalışma zamanı belirteci (`TWENTY_APP_ACCESS_TOKEN`), `defineApplication()` içinde tanımlanan rolden türetilir.
|
||
|
||
## Uygulama yaşam döngüsü
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────┐
|
||
│ Development │
|
||
│ npx create-twenty-app → yarn twenty dev (live sync) │
|
||
├─────────────────────────────────────────────────────────┤
|
||
│ Build & Deploy │
|
||
│ yarn twenty build → yarn twenty deploy │
|
||
├─────────────────────────────────────────────────────────┤
|
||
│ Install flow │
|
||
│ upload → [pre-install] → metadata migration → │
|
||
│ generate SDK → [post-install] │
|
||
├─────────────────────────────────────────────────────────┤
|
||
│ Publish │
|
||
│ npm publish → appears in Twenty marketplace │
|
||
└─────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
* **`yarn twenty dev`** — kaynak dosyalarınızı izler ve bağlı bir Twenty sunucusuna değişiklikleri canlı olarak senkronize eder. Şema değiştiğinde tipli API istemcisi otomatik olarak yeniden oluşturulur.
|
||
* **`yarn twenty build`** — TypeScript'i derler, mantık işlevlerini ve ön uç bileşenlerini esbuild ile paketler ve bir manifest üretir.
|
||
* **Kurulum öncesi/sonrası kancaları** — kurulum sırasında çalışan isteğe bağlı mantık işlevleri. Ayrıntılar için [Mantık İşlevleri](/l/tr/developers/extend/apps/logic-functions) bölümüne bakın.
|
||
|
||
## Sonraki adımlar
|
||
|
||
<CardGroup cols={2}>
|
||
<Card title="Veri modeli" icon="database" href="/l/tr/developers/extend/apps/data-model">
|
||
Nesneleri, alanları, rolleri ve ilişkileri tanımlayın.
|
||
</Card>
|
||
<Card title="Mantıksal işlevler" icon="bolt" href="/l/tr/developers/extend/apps/logic-functions">
|
||
HTTP, cron ve olay tetikleyicilerine sahip sunucu tarafı işlevler.
|
||
</Card>
|
||
<Card title="Ön uç bileşenleri" icon="window-maximize" href="/l/tr/developers/extend/apps/front-components">
|
||
Twenty'nin kullanıcı arayüzünde korumalı alanda React bileşenleri.
|
||
</Card>
|
||
<Card title="Düzen" icon="table-columns" href="/l/tr/developers/extend/apps/layout">
|
||
Görünümler, gezinme öğeleri ve kayıt sayfası düzenleri.
|
||
</Card>
|
||
<Card title="Beceriler ve Ajanlar" icon="robot" href="/l/tr/developers/extend/apps/skills-and-agents">
|
||
Özel istemlere sahip yapay zekâ becerileri ve temsilciler.
|
||
</Card>
|
||
<Card title="CLI ve Testler" icon="terminal" href="/l/tr/developers/extend/apps/cli-and-testing">
|
||
CLI komutları, test, varlıklar, uzak depolar ve CI.
|
||
</Card>
|
||
<Card title="Yayımlama" icon="rocket" href="/l/tr/developers/extend/apps/publishing">
|
||
Bir sunucuya dağıtın veya pazaryerine yayınlayın.
|
||
</Card>
|
||
</CardGroup>
|