packages/twenty-docs/developers/extend/apps/getting-started/project-structure.mdx
A new app generated by npx create-twenty-app looks like this:
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
| File / Folder | Purpose |
|---|---|
src/application-config.ts | Required. The main configuration file for your app. |
src/default-role.ts | Default role controlling what your logic functions can access. |
src/constants/universal-identifiers.ts | Auto-generated UUIDs and metadata (display name, description). |
src/__tests__/ | Integration tests (setup + example test). |
public/ | Static assets (images, fonts) served with your app. |