---
title: Structura proiectului
description: Ce conține o aplicație Twenty generată — fișiere, foldere și ce face fiecare.
icon: folder-tree
---

O aplicație nouă generată de `npx create-twenty-app` arată astfel:

```text filename="my-twenty-app/"
my-twenty-app/
  package.json
  src/
    application-config.ts                   # Required — your app's entry point
    default-role.ts                         # Permissions for logic functions
    constants/
      universal-identifiers.ts              # Auto-generated UUIDs and metadata
    __tests__/
      setup-test.ts
      app-install.integration-test.ts
  .github/workflows/ci.yml                  # GitHub Actions
  public/                                   # Static assets
  vitest.config.ts                          # Test runner config
  tsconfig.json, tsconfig.spec.json
  .nvmrc, .yarnrc.yml, .oxlintrc.json
  README.md, LLMS.md
```

## Fișiere cheie

| Fișier / Folder                          | Scop                                                                 |
| ---------------------------------------- | -------------------------------------------------------------------- |
| `src/application-config.ts`              | **Necesar.** Fișierul principal de configurare pentru aplicație.     |
| `src/default-role.ts`                    | Rol implicit care controlează la ce pot avea acces funcțiile logice. |
| `src/constants/universal-identifiers.ts` | UUID-uri generate automat și metadate (nume afișat, descriere).      |
| `src/__tests__/`                         | Teste de integrare (configurare + test de exemplu).                  |
| `public/`                                | Resurse statice (imagini, fonturi) servite împreună cu aplicația.    |

<Note>
**Organizarea fișierelor ține de dvs.** Folderele de mai sus sunt convenții — SDK-ul detectează entitățile prin analiză AST pe apelurile `export default defineEntity(...)`, indiferent unde se află fișierul.
</Note>

## Dependențe

Ambele pachete Twenty SDK trebuie plasate sub `devDependencies`, nu sub `dependencies`:

```json filename="package.json"
{
  "dependencies": {},
  "devDependencies": {
    "twenty-client-sdk": "^2.13.0",
    "twenty-sdk": "^2.13.0"
  }
}
```

* **`twenty-sdk`** livrează CLI-ul `twenty` și uneltele de build/scaffolding. Acesta rulează doar în timpul dezvoltării și al build-ului și nu este niciodată importat de runtime-ul aplicației tale publicate.
* **`twenty-client-sdk`** este importat de codul aplicației tale (`CoreApiClient`, `MetadataApiClient`, `RestApiClient`), dar Twenty îl furnizează la runtime — funcțiile de logică îl obțin dintr-un strat SDK generat, iar componentele de interfață îl rezolvă din module livrate de server. Copia instalată local este folosită doar pentru verificarea tipurilor și pentru build-ul la momentul de deploy, astfel că nu trebuie niciodată inclusă în bundle-ul livrat.

Păstrarea oricărui pachet sub `dependencies` îl include în bundle-ul de runtime al aplicației instalate, unde reprezintă o încărcătură inutilă. `twenty build` emite un avertisment atunci când oricare dintre ele este încă listat sub `dependencies`.

Adaugă dependențele de runtime proprii ale aplicației tale (bibliotecile pe care funcțiile tale de logică chiar le importă la runtime) sub `dependencies`, ca de obicei.
