diff --git a/README.md b/README.md index e970710773..bc6126811c 100644 --- a/README.md +++ b/README.md @@ -121,7 +121,7 @@ Want to go deeper? Read the Customize your layouts -

Learn more about layouts in doc

+

Learn more about layouts in doc

diff --git a/packages/twenty-docs/custom.css b/packages/twenty-docs/custom.css new file mode 100644 index 0000000000..07a25a1ac0 --- /dev/null +++ b/packages/twenty-docs/custom.css @@ -0,0 +1,47 @@ +/* CTA button — solid dark pill in light mode, inverted in dark mode */ +#topbar-cta-button a { + background-color: #141414 !important; + color: #ffffff !important; + padding: 0.5rem 1.25rem !important; + border-radius: 8px; + font-weight: 600; + transition: opacity 0.15s ease; +} + +#topbar-cta-button a:hover { + opacity: 0.85 !important; +} + +:is(.dark, [data-theme="dark"]) #topbar-cta-button a { + background-color: #ffffff !important; + color: #141414 !important; +} + +/* Center the tab links */ +.nav-tabs { + justify-content: center; + flex: 1; +} + +/* + * HACK: Hide the "Overview" sidebar group header in the Developers tab. + * + * Mintlify requires every page to be inside a named group, and the tab's + * landing page is always the first page of the first group. We want the + * Developer Overview page to be the tab landing without showing a lonely + * "Overview" group header above a single item. + * + * We use :has() to scope the rule to only the sidebar group that contains + * the developers/introduction link, so other tabs are unaffected. + */ +div:has(> .sidebar-group a[href="/developers/introduction"]), +div:has(> .sidebar-group a[href="/user-guide/introduction"]) { + display: none; +} + +/* Remove the top margin on the group that follows the hidden overview group, + so it sits flush at the top of the sidebar without a gap. */ +div:has(> .sidebar-group a[href="/developers/introduction"]) + div, +div:has(> .sidebar-group a[href="/user-guide/introduction"]) + div { + margin-top: 0 !important; +} diff --git a/packages/twenty-docs/developers/contribute/capabilities/backend-development/server-commands.mdx b/packages/twenty-docs/developers/contribute/capabilities/backend-development/server-commands.mdx index fa09716222..5fc7cffb9b 100644 --- a/packages/twenty-docs/developers/contribute/capabilities/backend-development/server-commands.mdx +++ b/packages/twenty-docs/developers/contribute/capabilities/backend-development/server-commands.mdx @@ -1,5 +1,6 @@ --- title: Backend Commands +icon: "terminal" --- diff --git a/packages/twenty-docs/developers/contribute/capabilities/bug-and-requests.mdx b/packages/twenty-docs/developers/contribute/capabilities/bug-and-requests.mdx index ea077fc82f..916e80cf1d 100644 --- a/packages/twenty-docs/developers/contribute/capabilities/bug-and-requests.mdx +++ b/packages/twenty-docs/developers/contribute/capabilities/bug-and-requests.mdx @@ -1,5 +1,6 @@ --- title: Bugs, Requests & Pull Requests +icon: "bug" info: Report issues, request features, and contribute code --- diff --git a/packages/twenty-docs/developers/contribute/capabilities/frontend-development/best-practices-front.mdx b/packages/twenty-docs/developers/contribute/capabilities/frontend-development/best-practices-front.mdx index 628faa77d7..85eb653fb2 100644 --- a/packages/twenty-docs/developers/contribute/capabilities/frontend-development/best-practices-front.mdx +++ b/packages/twenty-docs/developers/contribute/capabilities/frontend-development/best-practices-front.mdx @@ -1,5 +1,6 @@ --- title: Best Practices +icon: "star" --- diff --git a/packages/twenty-docs/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx b/packages/twenty-docs/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx index b41bd88701..e635c8fc4d 100644 --- a/packages/twenty-docs/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx +++ b/packages/twenty-docs/developers/contribute/capabilities/frontend-development/folder-architecture-front.mdx @@ -1,5 +1,6 @@ --- title: Folder Architecture +icon: "folder-tree" info: A detailed look into our folder architecture --- diff --git a/packages/twenty-docs/developers/contribute/capabilities/frontend-development/frontend-commands.mdx b/packages/twenty-docs/developers/contribute/capabilities/frontend-development/frontend-commands.mdx index 6d5d2a4ee7..9f36cfd62f 100644 --- a/packages/twenty-docs/developers/contribute/capabilities/frontend-development/frontend-commands.mdx +++ b/packages/twenty-docs/developers/contribute/capabilities/frontend-development/frontend-commands.mdx @@ -1,5 +1,6 @@ --- title: Frontend Commands +icon: "terminal" --- diff --git a/packages/twenty-docs/developers/contribute/capabilities/frontend-development/style-guide.mdx b/packages/twenty-docs/developers/contribute/capabilities/frontend-development/style-guide.mdx index cb5945d1b4..4fb888d38b 100644 --- a/packages/twenty-docs/developers/contribute/capabilities/frontend-development/style-guide.mdx +++ b/packages/twenty-docs/developers/contribute/capabilities/frontend-development/style-guide.mdx @@ -1,5 +1,6 @@ --- title: Style Guide +icon: "paintbrush" --- diff --git a/packages/twenty-docs/developers/contribute/capabilities/local-setup.mdx b/packages/twenty-docs/developers/contribute/capabilities/local-setup.mdx index 22309c334c..20df1cb475 100644 --- a/packages/twenty-docs/developers/contribute/capabilities/local-setup.mdx +++ b/packages/twenty-docs/developers/contribute/capabilities/local-setup.mdx @@ -1,5 +1,6 @@ --- title: Local Setup +icon: "laptop-code" description: "The guide for contributors (or curious developers) who want to run Twenty locally." --- diff --git a/packages/twenty-docs/developers/contribute/commands.mdx b/packages/twenty-docs/developers/contribute/commands.mdx new file mode 100644 index 0000000000..4aed89e079 --- /dev/null +++ b/packages/twenty-docs/developers/contribute/commands.mdx @@ -0,0 +1,77 @@ +--- +title: Commands +icon: "terminal" +description: Useful commands for developing Twenty. +--- + +Commands can be run from the repository root using `npx nx`. Use `npx nx run {project}:{command}` for explicit targeting. + +## Starting the App + +```bash +npx nx start twenty-front # Frontend dev server (http://localhost:3001) +npx nx start twenty-server # Backend server (http://localhost:3000) +npx nx run twenty-server:worker # Background worker +``` + +## Database + +```bash +npx nx database:reset twenty-server # Reset and seed database +npx nx run twenty-server:database:migrate:prod # Run migrations +npx nx run twenty-server:database:migrate:generate --name --type # Generate a migration +``` + +## Linting + +```bash +npx nx lint:diff-with-main twenty-front # Lint changed files (fastest) +npx nx lint:diff-with-main twenty-server +npx nx lint twenty-front --configuration=fix # Auto-fix +``` + +## Type Checking + +```bash +npx nx typecheck twenty-front +npx nx typecheck twenty-server +``` + +## Testing + +```bash +# Frontend +npx nx test twenty-front # Jest unit tests +npx nx storybook:build twenty-front # Build Storybook +npx nx storybook:test twenty-front # Storybook tests + +# Backend +npx nx run twenty-server:test:unit # Unit tests +npx nx run twenty-server:test:integration # Integration tests +npx nx run twenty-server:test:integration:with-db-reset # Integration with DB reset + +# Single file (fastest) +npx jest path/to/test.test.ts --config=packages/{project}/jest.config.mjs +``` + +## GraphQL + +```bash +npx nx run twenty-front:graphql:generate # Regenerate types +npx nx run twenty-front:graphql:generate --configuration=metadata # Metadata schema +``` + +## Translations + +```bash +npx nx run twenty-front:lingui:extract # Extract strings +npx nx run twenty-front:lingui:compile # Compile translations +``` + +## Build + +```bash +npx nx build twenty-shared # Must be built first +npx nx build twenty-front +npx nx build twenty-server +``` diff --git a/packages/twenty-docs/developers/contribute/style-guide.mdx b/packages/twenty-docs/developers/contribute/style-guide.mdx new file mode 100644 index 0000000000..53a98a1532 --- /dev/null +++ b/packages/twenty-docs/developers/contribute/style-guide.mdx @@ -0,0 +1,176 @@ +--- +title: Style Guide +icon: "paintbrush" +description: Code conventions and best practices for contributing to Twenty. +--- + +## React + +### Functional components only + +Always use TSX functional components with named exports. + +```tsx +// ❌ Bad +const MyComponent = () => { + return
Hello World
; +}; +export default MyComponent; + +// ✅ Good +export function MyComponent() { + return
Hello World
; +}; +``` + +### Props + +Create a type named `{ComponentName}Props`. Use destructuring. Don't use `React.FC`. + +```tsx +type MyComponentProps = { + name: string; +}; + +export const MyComponent = ({ name }: MyComponentProps) =>
Hello {name}
; +``` + +### No single-variable prop spreading + +```tsx +// ❌ Bad +const MyComponent = (props: MyComponentProps) => ; + +// ✅ Good +const MyComponent = ({ prop1, prop2 }: MyComponentProps) => ; +``` + +## State Management + +### Jotai atoms for global state + +```tsx +import { createAtomState } from '@/ui/utilities/state/jotai/utils/createAtomState'; +import { useAtomState } from '@/ui/utilities/state/jotai/hooks/useAtomState'; + +export const myAtomState = createAtomState({ + key: 'myAtomState', + defaultValue: 'default value', +}); +``` + +- Prefer atoms over prop drilling +- Don't use `useRef` for state — use `useState` or atoms +- Use atom families and selectors for lists + +### Avoid unnecessary re-renders + +- Extract `useEffect` and data fetching into sibling sidecar components +- Prefer event handlers (`handleClick`, `handleChange`) over `useEffect` +- Don't use `React.memo()` — fix the root cause instead +- Limit `useCallback` / `useMemo` usage + +```tsx +// ❌ Bad — useEffect in the same component causes re-renders +export const Page = () => { + const [data, setData] = useAtomState(dataState); + const [dep] = useAtomState(depState); + useEffect(() => { setData(dep); }, [dep]); + return
{data}
; +}; + +// ✅ Good — extract into sibling +export const PageData = () => { + const [data, setData] = useAtomState(dataState); + const [dep] = useAtomState(depState); + useEffect(() => { setData(dep); }, [dep]); + return <>; +}; +export const Page = () => { + const [data] = useAtomState(dataState); + return
{data}
; +}; +``` + +## TypeScript + +- **`type` over `interface`** — more flexible, easier to compose +- **String literals over enums** — except for GraphQL codegen enums and internal library APIs +- **No `any`** — strict TypeScript enforced +- **No type imports** — use regular imports (enforced by Oxlint `typescript/consistent-type-imports`) +- **Use [Zod](https://github.com/colinhacks/zod)** for runtime validation of untyped objects + +## JavaScript + +```tsx +// Use nullish-coalescing (??) instead of || +const value = process.env.MY_VALUE ?? 'default'; + +// Use optional chaining +onClick?.(); +``` + +## Naming + +- **Variables**: camelCase, descriptive (`email` not `value`, `fieldMetadata` not `fm`) +- **Constants**: SCREAMING_SNAKE_CASE +- **Types/Classes**: PascalCase +- **Files/directories**: kebab-case (`.component.tsx`, `.service.ts`, `.entity.ts`) +- **Event handlers**: `handleClick` (not `onClick` for the handler function) +- **Component props**: prefix with component name (`ButtonProps`) +- **Styled components**: prefix with `Styled` (`StyledTitle`) + +## Styling + +Use [Linaria](https://github.com/callstack/linaria) styled components. Use theme values — avoid hardcoded `px`, `rem`, or colors. + +```tsx +// ❌ Bad +const StyledButton = styled.button` + color: #333333; + font-size: 1rem; + margin-left: 4px; +`; + +// ✅ Good +const StyledButton = styled.button` + color: ${({ theme }) => theme.font.color.primary}; + font-size: ${({ theme }) => theme.font.size.md}; + margin-left: ${({ theme }) => theme.spacing(1)}; +`; +``` + +## Imports + +Use aliases instead of relative paths: + +```tsx +// ❌ Bad +import { Foo } from '../../../../../testing/decorators/Foo'; + +// ✅ Good +import { Foo } from '~/testing/decorators/Foo'; +import { Bar } from '@/modules/bar/components/Bar'; +``` + +## Folder Structure + +``` +front +└── modules/ # Feature modules +│ └── module1/ +│ ├── components/ +│ ├── constants/ +│ ├── contexts/ +│ ├── graphql/ (fragments, queries, mutations) +│ ├── hooks/ +│ ├── states/ (atoms, selectors) +│ ├── types/ +│ └── utils/ +└── pages/ # Route-level components +└── ui/ # Reusable UI components (display, input, feedback, ...) +``` + +- Modules can import from other modules, but `ui/` should stay dependency-free +- Use `internal/` subfolders for module-private code +- Components under 300 lines, services under 500 lines diff --git a/packages/twenty-docs/developers/extend/api.mdx b/packages/twenty-docs/developers/extend/api.mdx index 4c7e8a4a0d..1fcb95f917 100644 --- a/packages/twenty-docs/developers/extend/api.mdx +++ b/packages/twenty-docs/developers/extend/api.mdx @@ -1,140 +1,55 @@ --- title: APIs -description: Query and modify your CRM data programmatically using REST or GraphQL. +icon: "plug" +description: REST and GraphQL APIs generated from your workspace schema. --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; -Twenty was built to be developer-friendly, offering powerful APIs that adapt to your custom data model. We provide four distinct API types to meet different integration needs. +## Schema-per-tenant APIs -## Developer-First Approach +There is no static API reference for Twenty. Each workspace has its own schema — when you add a custom object (say `Invoice`), it immediately gets REST and GraphQL endpoints identical to built-in objects like `Company` or `Person`. The API is generated from the schema, so endpoints use your object and field names directly — no opaque IDs. -Twenty generates APIs specifically for your data model: -- **No long IDs required**: Use your object and field names directly in endpoints -- **Standard and custom objects treated equally**: Your custom objects get the same API treatment as built-in ones -- **Dedicated endpoints**: Each object and field gets its own API endpoint -- **Custom documentation**: Generated specifically for your workspace's data model +Your workspace-specific API documentation is available under **Settings → API & Webhooks** after creating an API key. It includes an interactive playground where you can execute real calls against your data. - -Your personalized API documentation is available under **Settings → API & Webhooks** after creating an API key. Since Twenty generates APIs that match your custom data model, the documentation is unique to your workspace. - +## Two APIs -## The Two API Types +**Core API** — `/rest/` and `/graphql/` -### Core API -Accessed on `/rest/` or `/graphql/` +CRUD on records: People, Companies, Opportunities, your custom objects. Query, filter, traverse relations. -Work with your actual **records** (the data): -- Create, read, update, delete People, Companies, Opportunities, etc. -- Query and filter data -- Manage record relationships +**Metadata API** — `/rest/metadata/` and `/metadata/` -### Metadata API -Accessed on `/rest/metadata/` or `/metadata/` +Schema management: create/modify/delete objects, fields, and relations. This is how you programmatically change your data model. -Manage your **workspace and data model**: -- Create, modify, or delete objects and fields -- Configure workspace settings -- Define relationships between objects +Both are available as REST and GraphQL. GraphQL adds batch upserts and the ability to traverse relations in a single query. Same underlying data either way. -## REST vs GraphQL - -Both Core and Metadata APIs are available in REST and GraphQL formats: - -| Format | Available Operations | -|--------|---------------------| -| **REST** | CRUD, batch operations, upserts | -| **GraphQL** | Same + **batch upserts**, relationship queries in one call | - -Choose based on your needs — both formats access the same data. - -## API Endpoints +## Base URLs | Environment | Base URL | |-------------|----------| -| **Cloud** | `https://api.twenty.com/` | -| **Self-Hosted** | `https://{your-domain}/` | +| Cloud | `https://api.twenty.com/` | +| Self-Hosted | `https://{your-domain}/` | ## Authentication -Every API request requires an API key in the header: - ``` Authorization: Bearer YOUR_API_KEY ``` -### Create an API Key - -1. Go to **Settings → APIs & Webhooks** -2. Click **+ Create key** -3. Configure: - - **Name**: Descriptive name for the key - - **Expiration Date**: When the key expires -4. Click **Save** -5. **Copy immediately** — the key is only shown once +Create an API key in **Settings → API & Webhooks → + Create key**. Copy it immediately — it's shown once. Keys can be scoped to a specific role under **Settings → Roles → Assignment tab** to limit what they can access. - -Your API key grants access to sensitive data. Don't share it with untrusted services. If compromised, disable it immediately and generate a new one. - +For OAuth-based access (external apps acting on behalf of users), see [OAuth](/developers/extend/oauth). -### Assign a Role to an API Key +## Batch operations -For better security, assign a specific role to limit access: +Both REST and GraphQL support batching up to 60 records per request — create, update, or delete. GraphQL also supports batch upsert (create-or-update in one call) using plural names like `CreateCompanies`. -1. Go to **Settings → Roles** -2. Click on the role to assign -3. Open the **Assignment** tab -4. Under **API Keys**, click **+ Assign to API key** -5. Select the API key - -The key will inherit that role's permissions. See [Permissions](/user-guide/permissions-access/capabilities/permissions) for details. - -### Manage API Keys - -**Regenerate**: Settings → APIs & Webhooks → Click key → **Regenerate** - -**Delete**: Settings → APIs & Webhooks → Click key → **Delete** - -## API Playground - -Test your APIs directly in the browser with our built-in playground — available for both **REST** and **GraphQL**. - -### Access the Playground - -1. Go to **Settings → APIs & Webhooks** -2. Create an API key (required) -3. Click on **REST API** or **GraphQL API** to open the playground - -### What You Get - -- **Interactive documentation**: Generated for your specific data model -- **Live testing**: Execute real API calls against your workspace -- **Schema explorer**: Browse available objects, fields, and relationships -- **Request builder**: Construct queries with autocomplete - -The playground reflects your custom objects and fields, so documentation is always accurate for your workspace. - -## Batch Operations - -Both REST and GraphQL support batch operations: -- **Batch size**: Up to 60 records per request -- **Operations**: Create, update, delete multiple records - -**GraphQL-only features:** -- **Batch Upsert**: Create or update in one call -- Use plural object names (e.g., `CreateCompanies` instead of `CreateCompany`) - -## Rate Limits - -API requests are throttled to ensure platform stability: +## Rate limits | Limit | Value | |-------|-------| -| **Requests** | 100 calls per minute | -| **Batch size** | 60 records per call | - - -Use batch operations to maximize throughput — process up to 60 records in a single API call instead of making individual requests. - +| Requests | 100 per minute | +| Batch size | 60 records per call | diff --git a/packages/twenty-docs/developers/extend/apps/building.mdx b/packages/twenty-docs/developers/extend/apps/building.mdx index 446cbfc888..f4fc19f6d7 100644 --- a/packages/twenty-docs/developers/extend/apps/building.mdx +++ b/packages/twenty-docs/developers/extend/apps/building.mdx @@ -1,2064 +1,108 @@ --- -title: Building Apps -description: Define objects, logic functions, front components, and more with the Twenty SDK. +title: Architecture +description: How Twenty apps work — sandboxing, lifecycle, and the building blocks. +icon: "sitemap" --- Apps are currently in alpha. The feature works but is still evolving. -The `twenty-sdk` package provides typed building blocks to create your app. This page covers every entity type and API client available in the SDK. +Twenty apps are TypeScript packages that extend your workspace with custom objects, logic, UI components, and AI capabilities. They run on the Twenty platform with full sandboxing and permission controls. -## DefineEntity functions +## How apps work -The SDK provides functions to define your app entities. You must use `export default defineEntity({...})` for the SDK to detect your entities. These functions validate your configuration at build time and provide IDE autocompletion and type safety. +An app is a collection of **entities** declared using `defineEntity()` functions from the `twenty-sdk` package. The SDK detects these declarations via AST analysis at build time and produces a **manifest** — a complete description of what your app adds to a workspace. - - **File organization is up to you.** - Entity detection is AST-based — the SDK finds `export default defineEntity(...)` calls regardless of where the file lives. Grouping files by type (e.g., `logic-functions/`, `roles/`) is just a convention, not a requirement. - - - - - -Roles encapsulate permissions on your workspace's objects and actions. - -```ts restricted-company-role.ts -import { - defineRole, - PermissionFlag, - STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS, -} from 'twenty-sdk/define'; - -export default defineRole({ - universalIdentifier: '2c80f640-2083-4803-bb49-003e38279de6', - label: 'My new role', - description: 'A role that can be used in your workspace', - canReadAllObjectRecords: false, - canUpdateAllObjectRecords: false, - canSoftDeleteAllObjectRecords: false, - canDestroyAllObjectRecords: false, - canUpdateAllSettings: false, - canBeAssignedToAgents: false, - canBeAssignedToUsers: false, - canBeAssignedToApiKeys: false, - objectPermissions: [ - { - objectUniversalIdentifier: - STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.company.universalIdentifier, - canReadObjectRecords: true, - canUpdateObjectRecords: true, - canSoftDeleteObjectRecords: false, - canDestroyObjectRecords: false, - }, - ], - fieldPermissions: [ - { - objectUniversalIdentifier: - STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.company.universalIdentifier, - fieldUniversalIdentifier: - STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.company.fields.name.universalIdentifier, - canReadFieldValue: false, - canUpdateFieldValue: false, - }, - ], - permissionFlags: [PermissionFlag.APPLICATIONS], -}); ``` - - - - -Every app must have exactly one `defineApplication` call that describes: - -- **Identity**: identifiers, display name, and description. -- **Permissions**: which role its functions and front components use. -- **(Optional) Variables**: key–value pairs exposed to your functions as environment variables. -- **(Optional) Pre-install / post-install functions**: logic functions that run before or after installation. - -```ts src/application-config.ts -import { defineApplication } from 'twenty-sdk/define'; -import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from 'src/roles/default-role'; - -export default defineApplication({ - universalIdentifier: '39783023-bcac-41e3-b0d2-ff1944d8465d', - displayName: 'My Twenty App', - description: 'My first Twenty app', - icon: 'IconWorld', - applicationVariables: { - DEFAULT_RECIPIENT_NAME: { - universalIdentifier: '19e94e59-d4fe-4251-8981-b96d0a9f74de', - description: 'Default recipient name for postcards', - value: 'Jane Doe', - isSecret: false, - }, - }, - defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, -}); -``` - -Notes: -- `universalIdentifier` fields are deterministic IDs you own. Generate them once and keep them stable across syncs. -- `applicationVariables` become environment variables for your functions and front components (e.g., `DEFAULT_RECIPIENT_NAME` is available as `process.env.DEFAULT_RECIPIENT_NAME`). -- `defaultRoleUniversalIdentifier` must reference a role defined with `defineRole()` (see above). -- Pre-install and post-install functions are detected automatically during the manifest build — you do not need to reference them in `defineApplication()`. - -#### Marketplace metadata - -If you plan to [publish your app](/developers/extend/apps/publishing), these optional fields control how it appears in the marketplace: - -| Field | Description | -|-------|-------------| -| `author` | Author or company name | -| `category` | App category for marketplace filtering | -| `logoUrl` | Path to your app logo (e.g., `public/logo.png`) | -| `screenshots` | Array of screenshot paths (e.g., `public/screenshot-1.png`) | -| `aboutDescription` | Longer markdown description for the "About" tab. If omitted, the marketplace uses the package's `README.md` from npm | -| `websiteUrl` | Link to your website | -| `termsUrl` | Link to terms of service | -| `emailSupport` | Support email address | -| `issueReportUrl` | Link to issue tracker | - -#### Roles and permissions - -The `defaultRoleUniversalIdentifier` in `application-config.ts` designates the default role used by your app's logic functions and front components. See `defineRole` above for details. - -- The runtime token injected as `TWENTY_APP_ACCESS_TOKEN` is derived from this role. -- The typed client is restricted to the permissions granted to that role. -- Follow least-privilege: create a dedicated role with only the permissions your functions need. - -##### Default function role - -When you scaffold a new app, the CLI creates a default role file: - -```ts src/roles/default-role.ts -import { defineRole, PermissionFlag } from 'twenty-sdk/define'; - -export const DEFAULT_ROLE_UNIVERSAL_IDENTIFIER = - 'b648f87b-1d26-4961-b974-0908fd991061'; - -export default defineRole({ - universalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, - label: 'Default function role', - description: 'Default role for function Twenty client', - canReadAllObjectRecords: true, - canUpdateAllObjectRecords: false, - canSoftDeleteAllObjectRecords: false, - canDestroyAllObjectRecords: false, - canUpdateAllSettings: false, - canBeAssignedToAgents: false, - canBeAssignedToUsers: false, - canBeAssignedToApiKeys: false, - objectPermissions: [], - fieldPermissions: [], - permissionFlags: [], -}); -``` - -This role's `universalIdentifier` is referenced in `application-config.ts` as `defaultRoleUniversalIdentifier`: - -- **\*.role.ts** defines what the role can do. -- **application-config.ts** points to that role so your functions inherit its permissions. - -Notes: -- Start from the scaffolded role, then progressively restrict it following least-privilege. -- Replace `objectPermissions` and `fieldPermissions` with the objects and fields your functions actually need. -- `permissionFlags` control access to platform-level capabilities. Keep them minimal. -- See a working example: [`hello-world/src/roles/function-role.ts`](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/hello-world/src/roles/function-role.ts). - - - - -Custom objects describe both schema and behavior for records in your workspace. Use `defineObject()` to define objects with built-in validation: - -```ts postCard.object.ts -import { defineObject, FieldType } from 'twenty-sdk/define'; - -enum PostCardStatus { - DRAFT = 'DRAFT', - SENT = 'SENT', - DELIVERED = 'DELIVERED', - RETURNED = 'RETURNED', -} - -export default defineObject({ - universalIdentifier: '54b589ca-eeed-4950-a176-358418b85c05', - nameSingular: 'postCard', - namePlural: 'postCards', - labelSingular: 'Post Card', - labelPlural: 'Post Cards', - description: 'A post card object', - icon: 'IconMail', - fields: [ - { - universalIdentifier: '58a0a314-d7ea-4865-9850-7fb84e72f30b', - name: 'content', - type: FieldType.TEXT, - label: 'Content', - description: "Postcard's content", - icon: 'IconAbc', - }, - { - universalIdentifier: 'c6aa31f3-da76-4ac6-889f-475e226009ac', - name: 'recipientName', - type: FieldType.FULL_NAME, - label: 'Recipient name', - icon: 'IconUser', - }, - { - universalIdentifier: '95045777-a0ad-49ec-98f9-22f9fc0c8266', - name: 'recipientAddress', - type: FieldType.ADDRESS, - label: 'Recipient address', - icon: 'IconHome', - }, - { - universalIdentifier: '87b675b8-dd8c-4448-b4ca-20e5a2234a1e', - name: 'status', - type: FieldType.SELECT, - label: 'Status', - icon: 'IconSend', - defaultValue: `'${PostCardStatus.DRAFT}'`, - options: [ - { value: PostCardStatus.DRAFT, label: 'Draft', position: 0, color: 'gray' }, - { value: PostCardStatus.SENT, label: 'Sent', position: 1, color: 'orange' }, - { value: PostCardStatus.DELIVERED, label: 'Delivered', position: 2, color: 'green' }, - { value: PostCardStatus.RETURNED, label: 'Returned', position: 3, color: 'orange' }, - ], - }, - { - universalIdentifier: 'e06abe72-5b44-4e7f-93be-afc185a3c433', - name: 'deliveredAt', - type: FieldType.DATE_TIME, - label: 'Delivered at', - icon: 'IconCheck', - isNullable: true, - defaultValue: null, - }, - ], -}); -``` - -Key points: - -- Use `defineObject()` for built-in validation and better IDE support. -- The `universalIdentifier` must be unique and stable across deployments. -- Each field requires a `name`, `type`, `label`, and its own stable `universalIdentifier`. -- The `fields` array is optional — you can define objects without custom fields. -- You can scaffold new objects using `yarn twenty add`, which guides you through naming, fields, and relationships. - - -**Base fields are created automatically.** When you define a custom object, Twenty automatically adds standard fields - such as `id`, `name`, `createdAt`, `updatedAt`, `createdBy`, `updatedBy` and `deletedAt`. - You don't need to define these in your `fields` array — only add your custom fields. - You can override default fields by defining a field with the same name in your `fields` array, - but this is not recommended. - - - - - -Use `defineField()` to add fields to objects you don't own — such as standard Twenty objects (Person, Company, etc.) or objects from other apps. Unlike inline fields in `defineObject()`, standalone fields require an `objectUniversalIdentifier` to specify which object they extend: - -```ts src/fields/company-loyalty-tier.field.ts -import { defineField, FieldType } from 'twenty-sdk/define'; - -export default defineField({ - universalIdentifier: 'f2a1b3c4-d5e6-7890-abcd-ef1234567890', - objectUniversalIdentifier: '701aecb9-eb1c-4d84-9d94-b954b231b64b', // Company object - name: 'loyaltyTier', - type: FieldType.SELECT, - label: 'Loyalty Tier', - icon: 'IconStar', - options: [ - { value: 'BRONZE', label: 'Bronze', position: 0, color: 'orange' }, - { value: 'SILVER', label: 'Silver', position: 1, color: 'gray' }, - { value: 'GOLD', label: 'Gold', position: 2, color: 'yellow' }, - ], -}); -``` - -Key points: -- `objectUniversalIdentifier` identifies the target object. For standard objects, use `STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS` exported from `twenty-sdk`. -- When defining fields inline in `defineObject()`, you do **not** need `objectUniversalIdentifier` — it's inherited from the parent object. -- `defineField()` is the only way to add fields to objects you didn't create with `defineObject()`. - - - - -Relations connect objects together. In Twenty, relations are always **bidirectional** — you define both sides, and each side references the other. - -There are two relation types: - -| Relation type | Description | Has foreign key? | -|---------------|-------------|-----------------| -| `MANY_TO_ONE` | Many records of this object point to one record of the target | Yes (`joinColumnName`) | -| `ONE_TO_MANY` | One record of this object has many records of the target | No (inverse side) | - -#### How relations work - -Every relation requires **two fields** that reference each other: - -1. The **MANY_TO_ONE** side — lives on the object that holds the foreign key -2. The **ONE_TO_MANY** side — lives on the object that owns the collection - -Both fields use `FieldType.RELATION` and cross-reference each other via `relationTargetFieldMetadataUniversalIdentifier`. - -#### Example: Post Card has many Recipients - -Suppose a `PostCard` can be sent to many `PostCardRecipient` records. Each recipient belongs to exactly one post card. - -**Step 1: Define the ONE_TO_MANY side on PostCard** (the "one" side): - -```ts src/fields/post-card-recipients-on-post-card.field.ts -import { defineField, FieldType, RelationType } from 'twenty-sdk/define'; -import { POST_CARD_UNIVERSAL_IDENTIFIER } from '../objects/post-card.object'; -import { POST_CARD_RECIPIENT_UNIVERSAL_IDENTIFIER } from '../objects/post-card-recipient.object'; - -// Export so the other side can reference it -export const POST_CARD_RECIPIENTS_FIELD_ID = 'a1111111-1111-1111-1111-111111111111'; -// Import from the other side -import { POST_CARD_FIELD_ID } from './post-card-on-post-card-recipient.field'; - -export default defineField({ - universalIdentifier: POST_CARD_RECIPIENTS_FIELD_ID, - objectUniversalIdentifier: POST_CARD_UNIVERSAL_IDENTIFIER, - type: FieldType.RELATION, - name: 'postCardRecipients', - label: 'Post Card Recipients', - icon: 'IconUsers', - relationTargetObjectMetadataUniversalIdentifier: POST_CARD_RECIPIENT_UNIVERSAL_IDENTIFIER, - relationTargetFieldMetadataUniversalIdentifier: POST_CARD_FIELD_ID, - universalSettings: { - relationType: RelationType.ONE_TO_MANY, - }, -}); -``` - -**Step 2: Define the MANY_TO_ONE side on PostCardRecipient** (the "many" side — holds the foreign key): - -```ts src/fields/post-card-on-post-card-recipient.field.ts -import { defineField, FieldType, RelationType, OnDeleteAction } from 'twenty-sdk/define'; -import { POST_CARD_UNIVERSAL_IDENTIFIER } from '../objects/post-card.object'; -import { POST_CARD_RECIPIENT_UNIVERSAL_IDENTIFIER } from '../objects/post-card-recipient.object'; - -// Export so the other side can reference it -export const POST_CARD_FIELD_ID = 'b2222222-2222-2222-2222-222222222222'; -// Import from the other side -import { POST_CARD_RECIPIENTS_FIELD_ID } from './post-card-recipients-on-post-card.field'; - -export default defineField({ - universalIdentifier: POST_CARD_FIELD_ID, - objectUniversalIdentifier: POST_CARD_RECIPIENT_UNIVERSAL_IDENTIFIER, - type: FieldType.RELATION, - name: 'postCard', - label: 'Post Card', - icon: 'IconMail', - relationTargetObjectMetadataUniversalIdentifier: POST_CARD_UNIVERSAL_IDENTIFIER, - relationTargetFieldMetadataUniversalIdentifier: POST_CARD_RECIPIENTS_FIELD_ID, - universalSettings: { - relationType: RelationType.MANY_TO_ONE, - onDelete: OnDeleteAction.CASCADE, - joinColumnName: 'postCardId', - }, -}); +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 ``` -**Circular imports:** Both relation fields reference each other's `universalIdentifier`. To avoid circular import issues, export your field IDs as named constants from each file, and import them in the other file. The build system resolves these at compile time. + **File organization is up to you.** Entity detection is AST-based — the SDK finds `export default defineEntity(...)` calls regardless of where the file lives. The folder structure above is a convention, not a requirement. -#### Relating to standard objects - -To create a relation with a built-in Twenty object (Person, Company, etc.), use `STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS`: - -```ts src/fields/person-on-self-hosting-user.field.ts -import { - defineField, - FieldType, - RelationType, - OnDeleteAction, - STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS, -} from 'twenty-sdk/define'; -import { SELF_HOSTING_USER_UNIVERSAL_IDENTIFIER } from '../objects/self-hosting-user.object'; - -export const PERSON_FIELD_ID = 'c3333333-3333-3333-3333-333333333333'; -export const SELF_HOSTING_USER_REVERSE_FIELD_ID = 'd4444444-4444-4444-4444-444444444444'; - -export default defineField({ - universalIdentifier: PERSON_FIELD_ID, - objectUniversalIdentifier: SELF_HOSTING_USER_UNIVERSAL_IDENTIFIER, - type: FieldType.RELATION, - name: 'person', - label: 'Person', - description: 'Person matching with the self hosting user', - isNullable: true, - relationTargetObjectMetadataUniversalIdentifier: - STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.person.universalIdentifier, - relationTargetFieldMetadataUniversalIdentifier: SELF_HOSTING_USER_REVERSE_FIELD_ID, - universalSettings: { - relationType: RelationType.MANY_TO_ONE, - onDelete: OnDeleteAction.SET_NULL, - joinColumnName: 'personId', - }, -}); -``` - -#### Relation field properties - -| Property | Required | Description | -|----------|----------|-------------| -| `type` | Yes | Must be `FieldType.RELATION` | -| `relationTargetObjectMetadataUniversalIdentifier` | Yes | The `universalIdentifier` of the target object | -| `relationTargetFieldMetadataUniversalIdentifier` | Yes | The `universalIdentifier` of the matching field on the target object | -| `universalSettings.relationType` | Yes | `RelationType.MANY_TO_ONE` or `RelationType.ONE_TO_MANY` | -| `universalSettings.onDelete` | MANY_TO_ONE only | What happens when the referenced record is deleted: `CASCADE`, `SET_NULL`, `RESTRICT`, or `NO_ACTION` | -| `universalSettings.joinColumnName` | MANY_TO_ONE only | Database column name for the foreign key (e.g., `postCardId`) | - -#### Inline relation fields in defineObject - -You can also define relation fields directly inside `defineObject()`. In that case, omit `objectUniversalIdentifier` — it's inherited from the parent object: - -```ts -export default defineObject({ - universalIdentifier: '...', - nameSingular: 'postCardRecipient', - // ... - fields: [ - { - universalIdentifier: POST_CARD_FIELD_ID, - type: FieldType.RELATION, - name: 'postCard', - label: 'Post Card', - relationTargetObjectMetadataUniversalIdentifier: POST_CARD_UNIVERSAL_IDENTIFIER, - relationTargetFieldMetadataUniversalIdentifier: POST_CARD_RECIPIENTS_FIELD_ID, - universalSettings: { - relationType: RelationType.MANY_TO_ONE, - onDelete: OnDeleteAction.CASCADE, - joinColumnName: 'postCardId', - }, - }, - // ... other fields - ], -}); -``` - - - -Each function file uses `defineLogicFunction()` to export a configuration with a handler and optional triggers. - -```ts src/logic-functions/createPostCard.logic-function.ts -import { defineLogicFunction } from 'twenty-sdk/define'; -import type { DatabaseEventPayload, ObjectRecordCreateEvent, CronPayload, RoutePayload } from 'twenty-sdk/define'; -import { CoreApiClient, type Person } from 'twenty-client-sdk/core'; - -const handler = async (params: RoutePayload) => { - const client = new CoreApiClient(); - const name = 'name' in params.queryStringParameters - ? params.queryStringParameters.name ?? process.env.DEFAULT_RECIPIENT_NAME ?? 'Hello world' - : 'Hello world'; - - const result = await client.mutation({ - createPostCard: { - __args: { data: { name } }, - id: true, - name: true, - }, - }); - return result; -}; - -export default defineLogicFunction({ - universalIdentifier: 'e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf', - name: 'create-new-post-card', - timeoutSeconds: 2, - handler, - httpRouteTriggerSettings: { - path: '/post-card/create', - httpMethod: 'GET', - isAuthRequired: true, - }, - /*databaseEventTriggerSettings: { - eventName: 'people.created', - },*/ - /*cronTriggerSettings: { - pattern: '0 0 1 1 *', - },*/ -}); -``` - -Available trigger types: -- **httpRoute**: Exposes your function on an HTTP path and method **under the `/s/` endpoint**: -> e.g. `path: '/post-card/create'` is callable at `https://your-twenty-server.com/s/post-card/create` -- **cron**: Runs your function on a schedule using a CRON expression. -- **databaseEvent**: Runs on workspace object lifecycle events. When the event operation is `updated`, specific fields to listen to can be specified in the `updatedFields` array. If left undefined or empty, any update will trigger the function. -> e.g. `person.updated`, `*.created`, `company.*` - - -You can also manually execute a function using the CLI: - -```bash filename="Terminal" -yarn twenty exec -n create-new-post-card -p '{"key": "value"}' -``` - -```bash filename="Terminal" -yarn twenty exec -y e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf -``` - -You can watch logs with: - -```bash filename="Terminal" -yarn twenty logs -``` - - -#### Route trigger payload - -When a route trigger invokes your logic function, it receives a `RoutePayload` object that follows the -[AWS HTTP API v2 format](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html). -Import the `RoutePayload` type from `twenty-sdk`: - -```ts -import { defineLogicFunction, type RoutePayload } from 'twenty-sdk/define'; - -const handler = async (event: RoutePayload) => { - const { headers, queryStringParameters, pathParameters, body } = event; - const { method, path } = event.requestContext.http; - - return { message: 'Success' }; -}; -``` - -The `RoutePayload` type has the following structure: - - | Property | Type | Description | Example | - |----------|------|-------------|---------| - | `headers` | `Record` | HTTP headers (only those listed in `forwardedRequestHeaders`) | see section below | - | `queryStringParameters` | `Record` | Query string parameters (multiple values joined with commas) | `/users?ids=1&ids=2&ids=3&name=Alice` -> `{ ids: '1,2,3', name: 'Alice' }`| - | `pathParameters` | `Record` | Path parameters extracted from the route pattern | `/users/:id`, `/users/123` -> `{ id: '123' }` | - | `body` | `object \| null` | Parsed request body (JSON) | `{ id: 1 }` -> `{ id: 1 }` | - | `isBase64Encoded` | `boolean` | Whether the body is base64 encoded | | - | `requestContext.http.method` | `string` | HTTP method (GET, POST, PUT, PATCH, DELETE) | | - | `requestContext.http.path` | `string` | Raw request path | | - - -#### forwardedRequestHeaders - -By default, HTTP headers from incoming requests are **not** passed to your logic function for security reasons. -To access specific headers, list them in the `forwardedRequestHeaders` array: - -```ts -export default defineLogicFunction({ - universalIdentifier: 'e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf', - name: 'webhook-handler', - handler, - httpRouteTriggerSettings: { - path: '/webhook', - httpMethod: 'POST', - isAuthRequired: false, - forwardedRequestHeaders: ['x-webhook-signature', 'content-type'], - }, -}); -``` - -In your handler, access the forwarded headers like this: - -```ts -const handler = async (event: RoutePayload) => { - const signature = event.headers['x-webhook-signature']; - const contentType = event.headers['content-type']; - - // Validate webhook signature... - return { received: true }; -}; -``` - - -Header names are normalized to lowercase. Access them using lowercase keys (e.g., `event.headers['content-type']`). - - -#### Exposing a function as a tool - -Logic functions can be exposed as **tools** for AI agents and workflows. When marked as a tool, a function becomes discoverable by Twenty's AI features and can be used in workflow automations. - -To mark a logic function as a tool, set `isTool: true`: - -```ts src/logic-functions/enrich-company.logic-function.ts -import { defineLogicFunction } from 'twenty-sdk/define'; -import { CoreApiClient } from 'twenty-client-sdk/core'; - -const handler = async (params: { companyName: string; domain?: string }) => { - const client = new CoreApiClient(); - - const result = await client.mutation({ - createTask: { - __args: { - data: { - title: `Enrich data for ${params.companyName}`, - body: `Domain: ${params.domain ?? 'unknown'}`, - }, - }, - id: true, - }, - }); - - return { taskId: result.createTask.id }; -}; - -export default defineLogicFunction({ - universalIdentifier: 'f47ac10b-58cc-4372-a567-0e02b2c3d479', - name: 'enrich-company', - description: 'Enrich a company record with external data', - timeoutSeconds: 10, - handler, - isTool: true, -}); -``` - -Key points: - -- You can combine `isTool` with triggers — a function can be both a tool (callable by AI agents) and triggered by events at the same time. -- **`toolInputSchema`** (optional): A JSON Schema object describing the parameters your function accepts. The schema is computed automatically from source code static analysis, but you can set it explicitly: - -```ts -export default defineLogicFunction({ - ..., - toolInputSchema: { - type: 'object', - properties: { - companyName: { - type: 'string', - description: 'The name of the company to enrich', - }, - domain: { - type: 'string', - description: 'The company website domain (optional)', - }, - }, - required: ['companyName'], - }, -}); -``` - - -**Write a good `description`.** AI agents rely on the function's `description` field to decide when to use the tool. Be specific about what the tool does and when it should be called. - - - - - -A post-install function is a logic function that runs automatically once your app has finished installing on a workspace. The server executes it **after** the app's metadata has been synchronized and the SDK client has been generated, so the workspace is fully ready to use and the new schema is in place. Typical use cases include seeding default data, creating initial records, configuring workspace settings, or provisioning resources on third-party services. - -```ts src/logic-functions/post-install.ts -import { definePostInstallLogicFunction, type InstallPayload } from 'twenty-sdk/define'; - -const handler = async (payload: InstallPayload): Promise => { - console.log('Post install logic function executed successfully!', payload.previousVersion); -}; - -export default definePostInstallLogicFunction({ - universalIdentifier: 'f7a2b9c1-3d4e-5678-abcd-ef9876543210', - name: 'post-install', - description: 'Runs after installation to set up the application.', - timeoutSeconds: 300, - shouldRunOnVersionUpgrade: false, - shouldRunSynchronously: false, - handler, -}); -``` - -You can also manually execute the post-install function at any time using the CLI: - -```bash filename="Terminal" -yarn twenty exec --postInstall -``` - -Key points: -- Post-install functions use `definePostInstallLogicFunction()` — a specialized variant that omits trigger settings (`cronTriggerSettings`, `databaseEventTriggerSettings`, `httpRouteTriggerSettings`, `isTool`). -- The handler receives an `InstallPayload` with `{ previousVersion?: string; newVersion: string }` — `newVersion` is the version being installed, and `previousVersion` is the version that was previously installed (or `undefined` on a fresh install). Use these values to distinguish fresh installs from upgrades and to run version-specific migration logic. -- **When the hook runs**: on fresh installs only, by default. Pass `shouldRunOnVersionUpgrade: true` if you also want it to run when the app is upgraded from a previous version. When omitted, the flag defaults to `false` and upgrades skip the hook. -- **Execution model — async by default, sync opt-in**: the `shouldRunSynchronously` flag controls *how* post-install is executed. - - `shouldRunSynchronously: false` *(default)* — the hook is **enqueued on the message queue** with `retryLimit: 3` and runs asynchronously in a worker. The install response returns as soon as the job is enqueued, so a slow or failing handler does not block the caller. The worker will retry up to three times. **Use this for long-running jobs** — seeding large datasets, calling slow third-party APIs, provisioning external resources, anything that might exceed a reasonable HTTP response window. - - `shouldRunSynchronously: true` — the hook is executed **inline during the install flow** (same executor as pre-install). The install request blocks until the handler finishes, and if it throws, the install caller receives a `POST_INSTALL_ERROR`. No automatic retries. **Use this for fast, must-complete-before-response work** — for example, emitting a validation error to the user, or quick setup that the client will rely on immediately after the install call returns. Keep in mind the metadata migration has already been applied by the time post-install runs, so a sync-mode failure does **not** roll back the schema changes — it only surfaces the error. -- Make sure your handler is idempotent. In async mode the queue may retry up to three times; in either mode the hook may run again on upgrades when `shouldRunOnVersionUpgrade: true`. -- The environment variables `APPLICATION_ID`, `APP_ACCESS_TOKEN`, and `API_URL` are available inside the handler (same as any other logic function), so you can call the Twenty API with an application access token scoped to your app. -- Only one post-install function is allowed per application. The manifest build will error if more than one is detected. -- The function's `universalIdentifier`, `shouldRunOnVersionUpgrade`, and `shouldRunSynchronously` are automatically attached to the application manifest under the `postInstallLogicFunction` field during the build — you do not need to reference them in `defineApplication()`. -- The default timeout is set to 300 seconds (5 minutes) to allow for longer setup tasks like data seeding. -- **Not executed in dev mode**: when an app is registered locally (via `yarn twenty dev`), the server skips the install flow entirely and syncs files directly through the CLI watcher — so post-install never runs in dev mode, regardless of `shouldRunSynchronously`. Use `yarn twenty exec --postInstall` to trigger it manually against a running workspace. - - - - -A pre-install function is a logic function that runs automatically during installation, **before the workspace metadata migration is applied**. It shares the same payload shape as post-install (`InstallPayload`), but it is positioned earlier in the install flow so it can prepare state that the upcoming migration depends on — typical uses include backing up data, validating compatibility with the new schema, or archiving records that are about to be restructured or dropped. - -```ts src/logic-functions/pre-install.ts -import { definePreInstallLogicFunction, type InstallPayload } from 'twenty-sdk/define'; - -const handler = async (payload: InstallPayload): Promise => { - console.log('Pre install logic function executed successfully!', payload.previousVersion); -}; - -export default definePreInstallLogicFunction({ - universalIdentifier: 'a1b2c3d4-5678-90ab-cdef-1234567890ab', - name: 'pre-install', - description: 'Runs before installation to prepare the application.', - timeoutSeconds: 300, - shouldRunOnVersionUpgrade: true, - handler, -}); -``` - -You can also manually execute the pre-install function at any time using the CLI: - -```bash filename="Terminal" -yarn twenty exec --preInstall -``` - -Key points: -- Pre-install functions use `definePreInstallLogicFunction()` — same specialized config as post-install, just attached to a different lifecycle slot. -- Both pre- and post-install handlers receive the same `InstallPayload` type: `{ previousVersion?: string; newVersion: string }`. Import it once and reuse it for both hooks. -- **When the hook runs**: positioned just before the workspace metadata migration (`synchronizeFromManifest`). Before executing, the server runs a purely additive "pared-down sync" that registers the **new** version's pre-install function in the workspace metadata — nothing else is touched — and then executes it. Because this sync is additive-only, the previous version's objects, fields, and data are still intact when your handler runs: you can safely read and back up pre-migration state. -- **Execution model**: pre-install is executed **synchronously** and **blocks the install**. If the handler throws, the install is aborted before any schema changes are applied — the workspace stays on the previous version in a consistent state. This is intentional: pre-install is your last chance to refuse a risky upgrade. -- As with post-install, only one pre-install function is allowed per application. It is attached to the application manifest under `preInstallLogicFunction` automatically during the build. -- **Not executed in dev mode**: same as post-install — the install flow is skipped entirely for locally-registered apps, so pre-install never runs under `yarn twenty dev`. Use `yarn twenty exec --preInstall` to trigger it manually. - - - - -Both hooks are part of the same install flow and receive the same `InstallPayload`. The difference is **when** they run relative to the workspace metadata migration, and that changes what data they can safely touch. +## Entity types + +| Entity | Purpose | Docs | +|--------|---------|------| +| **Application** | App identity, permissions, variables | [Data Model](/developers/extend/apps/data-model) | +| **Role** | Permission sets for objects and fields | [Data Model](/developers/extend/apps/data-model) | +| **Object** | Custom data tables with fields | [Data Model](/developers/extend/apps/data-model) | +| **Field** | Extend existing objects, define relations | [Data Model](/developers/extend/apps/data-model) | +| **Logic Function** | Server-side TypeScript with triggers | [Logic Functions](/developers/extend/apps/logic-functions) | +| **Front Component** | Sandboxed React UI in Twenty's page | [Front Components](/developers/extend/apps/front-components) | +| **Skill** | Reusable AI agent instructions | [Skills & Agents](/developers/extend/apps/skills-and-agents) | +| **Agent** | AI assistants with custom prompts | [Skills & Agents](/developers/extend/apps/skills-and-agents) | +| **View** | Pre-configured record list views | [Layout](/developers/extend/apps/layout) | +| **Navigation Menu Item** | Custom sidebar entries | [Layout](/developers/extend/apps/layout) | +| **Page Layout** | Custom record page tabs and widgets | [Layout](/developers/extend/apps/layout) | + +## Sandboxing + +- **Logic functions** run in isolated Node.js processes on the server. They only access data through the typed API client, scoped to the app's role permissions. +- **Front components** run in Web Workers using Remote DOM — sandboxed from the main page but rendering native DOM elements (not iframes). They communicate with Twenty via a message-passing host API. +- **Permissions** are enforced at the API level. The runtime token (`TWENTY_APP_ACCESS_TOKEN`) is derived from the role defined in `defineApplication()`. + +## App lifecycle ``` -┌─────────────────────────────────────────────────────────────┐ -│ install flow │ -│ │ -│ upload package → [pre-install] → metadata migration → │ -│ generate SDK → [post-install] │ -│ │ -│ old schema visible new schema visible │ -└─────────────────────────────────────────────────────────────┘ +┌─────────────────────────────────────────────────────────┐ +│ 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 │ +└─────────────────────────────────────────────────────────┘ ``` -Pre-install is always **synchronous** (it blocks the install and can abort it). Post-install is **asynchronous by default** — enqueued on a worker with automatic retries — but can opt into synchronous execution with `shouldRunSynchronously: true`. See the `definePostInstallLogicFunction` accordion above for when to use each mode. - -**Use `post-install` for anything that needs the new schema to exist.** This is the common case: - -- Seeding default data (creating initial records, default views, demo content) against newly-added objects and fields. -- Registering webhooks with third-party services now that the app has its credentials. -- Calling your own API to finish setup that depends on the synchronized metadata. -- Idempotent "ensure this exists" logic that should reconcile state on every upgrade — combine with `shouldRunOnVersionUpgrade: true`. - -Example — seed a default `PostCard` record after install: - -```ts src/logic-functions/post-install.ts -import { definePostInstallLogicFunction, type InstallPayload } from 'twenty-sdk/define'; -import { createClient } from './generated/client'; - -const handler = async ({ previousVersion }: InstallPayload): Promise => { - if (previousVersion) return; // fresh installs only - - const client = createClient(); - await client.postCard.create({ - data: { title: 'Welcome to Postcard', content: 'Your first card!' }, - }); -}; - -export default definePostInstallLogicFunction({ - universalIdentifier: 'f7a2b9c1-3d4e-5678-abcd-ef9876543210', - name: 'post-install', - description: 'Seeds a welcome post card after install.', - timeoutSeconds: 300, - shouldRunOnVersionUpgrade: false, - handler, -}); -``` - -**Use `pre-install` when a migration would otherwise destroy or corrupt existing data.** Because pre-install runs against the *previous* schema and its failure rolls back the upgrade, it is the right place for anything risky: - -- **Backing up data that is about to be dropped or restructured** — e.g. you are removing a field in v2 and need to copy its values into another field or export them to storage before the migration runs. -- **Archiving records that a new constraint would invalidate** — e.g. a field is becoming `NOT NULL` and you need to delete or fix rows with null values first. -- **Validating compatibility and refusing the upgrade if the current data cannot be migrated cleanly** — throw from the handler and the install aborts with no changes applied. This is safer than discovering the incompatibility mid-migration. -- **Renaming or rekeying data** ahead of a schema change that would lose the association. - -Example — archive records before a destructive migration: - -```ts src/logic-functions/pre-install.ts -import { definePreInstallLogicFunction, type InstallPayload } from 'twenty-sdk/define'; -import { createClient } from './generated/client'; - -const handler = async ({ previousVersion, newVersion }: InstallPayload): Promise => { - // Only the 1.x → 2.x upgrade drops the legacy `notes` field. - if (!previousVersion?.startsWith('1.') || !newVersion.startsWith('2.')) { - return; - } - - const client = createClient(); - const legacyRecords = await client.postCard.findMany({ - where: { notes: { isNotNull: true } }, - }); - - if (legacyRecords.length === 0) return; - - // Copy legacy `notes` into the new `description` field before the migration - // drops the `notes` column. If this fails, the upgrade is aborted and the - // workspace stays on v1 with all data intact. - await Promise.all( - legacyRecords.map((record) => - client.postCard.update({ - where: { id: record.id }, - data: { description: record.notes }, - }), - ), - ); -}; - -export default definePreInstallLogicFunction({ - universalIdentifier: 'a1b2c3d4-5678-90ab-cdef-1234567890ab', - name: 'pre-install', - description: 'Backs up legacy notes into description before the v2 migration.', - timeoutSeconds: 300, - shouldRunOnVersionUpgrade: true, - handler, -}); -``` - -**Rule of thumb:** - -| You want to… | Use | -|---|---| -| Seed default data, configure the workspace, register external resources | `post-install` | -| Run long-running seeding or third-party calls that shouldn't block the install response | `post-install` (default — `shouldRunSynchronously: false`, with worker retries) | -| Run fast setup that the caller will rely on immediately after the install call returns | `post-install` with `shouldRunSynchronously: true` | -| Read or back up data that the upcoming migration would lose | `pre-install` | -| Reject an upgrade that would corrupt existing data | `pre-install` (throw from the handler) | -| Run reconciliation on every upgrade | `post-install` with `shouldRunOnVersionUpgrade: true` | -| Do one-off setup on the first install only | `post-install` with `shouldRunOnVersionUpgrade: false` (default) | - - -If in doubt, default to **post-install**. Only reach for pre-install when the migration itself is destructive and you need to intercept the previous state before it is gone. - - - - - -Front components are React components that render directly inside Twenty's UI. They run in an **isolated Web Worker** using Remote DOM — your code is sandboxed but renders natively in the page, not in an iframe. - -#### Where front components can be used - -Front components can render in two locations within Twenty: - -- **Side panel** — Non-headless front components open in the right-hand side panel. This is the default behavior when a front component is triggered from the command menu. -- **Widgets (dashboards and record pages)** — Front components can be embedded as widgets inside page layouts. When configuring a dashboard or a record page layout, users can add a front component widget. - -#### Basic example - -The quickest way to see a front component in action is to register it as a **command**. Adding a `command` field with `isPinned: true` makes it appear as a quick-action button in the top-right corner of the page — no page layout needed: - -```tsx src/front-components/hello-world.tsx -import { defineFrontComponent } from 'twenty-sdk/define'; - -const HelloWorld = () => { - return ( -
-

Hello from my app!

-

This component renders inside Twenty.

-
- ); -}; - -export default defineFrontComponent({ - universalIdentifier: '74c526eb-cb68-4cf7-b05c-0dd8c288d948', - name: 'hello-world', - description: 'A simple front component', - component: HelloWorld, - command: { - universalIdentifier: 'd4e5f6a7-b8c9-0123-defa-456789012345', - shortLabel: 'Hello', - label: 'Hello World', - icon: 'IconBolt', - isPinned: true, - availabilityType: 'GLOBAL', - }, -}); -``` - -After syncing with `yarn twenty dev` (or running a one-shot `yarn twenty dev --once`), the quick action appears in the top-right corner of the page: - -
- Quick action button in the top-right corner -
- -Click it to render the component inline. - -{/* TODO: add screenshot of the rendered front component */} - -#### Configuration fields - -| Field | Required | Description | -|-------|----------|-------------| -| `universalIdentifier` | Yes | Stable unique ID for this component | -| `component` | Yes | A React component function | -| `name` | No | Display name | -| `description` | No | Description of what the component does | -| `isHeadless` | No | Set to `true` if the component has no visible UI (see below) | -| `command` | No | Register the component as a command (see [command options](#command-options) below) | - -#### Placing a front component on a page - -Beyond commands, you can embed a front component directly into a record page by adding it as a widget in a **page layout**. See the [definePageLayout](#definepagelayout) section for details. - -#### Headless vs non-headless - -Front components come in two rendering modes controlled by the `isHeadless` option: - -**Non-headless (default)** — The component renders a visible UI. When triggered from the command menu it opens in the side panel. This is the default behavior when `isHeadless` is `false` or omitted. - -**Headless (`isHeadless: true`)** — The component mounts invisibly in the background. It does not open the side panel. Headless components are designed for actions that execute logic and then unmount themselves — for example, running an async task, navigating to a page, or showing a confirmation modal. They pair naturally with the SDK Command components described below. - -```tsx src/front-components/sync-tracker.tsx -import { defineFrontComponent } from 'twenty-sdk/define'; -import { useRecordId, enqueueSnackbar } from 'twenty-sdk/front-component'; -import { useEffect } from 'react'; - -const SyncTracker = () => { - const recordId = useRecordId(); - - useEffect(() => { - enqueueSnackbar({ message: `Tracking record ${recordId}`, variant: 'info' }); - }, [recordId]); - - return null; -}; - -export default defineFrontComponent({ - universalIdentifier: '...', - name: 'sync-tracker', - description: 'Tracks record views silently', - isHeadless: true, - component: SyncTracker, -}); -``` - -Because the component returns `null`, Twenty skips rendering a container for it — no empty space appears in the layout. The component still has access to all hooks and the host communication API. - -#### SDK Command components - -The `twenty-sdk` package provides four Command helper components designed for headless front components. Each component executes an action on mount, handles errors by showing a snackbar notification, and automatically unmounts the front component when done. - -Import them from `twenty-sdk/command`: - -- **`Command`** — Runs an async callback via the `execute` prop. -- **`CommandLink`** — Navigates to an app path. Props: `to`, `params`, `queryParams`, `options`. -- **`CommandModal`** — Opens a confirmation modal. If the user confirms, executes the `execute` callback. Props: `title`, `subtitle`, `execute`, `confirmButtonText`, `confirmButtonAccent`. -- **`CommandOpenSidePanelPage`** — Opens a specific side panel page. Props: `page`, `pageTitle`, `pageIcon`. - -Here is a full example of a headless front component using `Command` to run an action from the command menu: - -```tsx src/front-components/run-action.tsx -import { defineFrontComponent } from 'twenty-sdk/define'; -import { Command } from 'twenty-sdk/command'; -import { CoreApiClient } from 'twenty-sdk/clients'; - -const RunAction = () => { - const execute = async () => { - const client = new CoreApiClient(); - - await client.mutation({ - createTask: { - __args: { data: { title: 'Created by my app' } }, - id: true, - }, - }); - }; - - return ; -}; - -export default defineFrontComponent({ - universalIdentifier: 'e5f6a7b8-c9d0-1234-efab-345678901234', - name: 'run-action', - description: 'Creates a task from the command menu', - component: RunAction, - isHeadless: true, - command: { - universalIdentifier: 'f6a7b8c9-d0e1-2345-fabc-456789012345', - label: 'Run my action', - icon: 'IconPlayerPlay', - }, -}); -``` - -And an example using `CommandModal` to ask for confirmation before executing: - -```tsx src/front-components/delete-draft.tsx -import { defineFrontComponent } from 'twenty-sdk/define'; -import { CommandModal } from 'twenty-sdk/command'; - -const DeleteDraft = () => { - const execute = async () => { - // perform the deletion - }; - - return ( - - ); -}; - -export default defineFrontComponent({ - universalIdentifier: 'a7b8c9d0-e1f2-3456-abcd-567890123456', - name: 'delete-draft', - description: 'Deletes a draft with confirmation', - component: DeleteDraft, - isHeadless: true, - command: { - universalIdentifier: 'b8c9d0e1-f2a3-4567-bcde-678901234567', - label: 'Delete draft', - icon: 'IconTrash', - }, -}); -``` - -#### Accessing runtime context - -Inside your component, use SDK hooks to access the current user, record, and component instance: - -```tsx src/front-components/record-info.tsx -import { defineFrontComponent } from 'twenty-sdk/define'; -import { - useUserId, - useRecordId, - useFrontComponentId, -} from 'twenty-sdk/front-component'; - -const RecordInfo = () => { - const userId = useUserId(); - const recordId = useRecordId(); - const componentId = useFrontComponentId(); - - return ( -
-

User: {userId}

-

Record: {recordId ?? 'No record context'}

-

Component: {componentId}

-
- ); -}; - -export default defineFrontComponent({ - universalIdentifier: 'b2c3d4e5-f6a7-8901-bcde-f23456789012', - name: 'record-info', - component: RecordInfo, -}); -``` - -Available hooks: - -| Hook | Returns | Description | -|------|---------|-------------| -| `useUserId()` | `string` or `null` | The current user's ID | -| `useRecordId()` | `string` or `null` | The current record's ID (when placed on a record page) | -| `useFrontComponentId()` | `string` | This component instance's ID | -| `useFrontComponentExecutionContext(selector)` | varies | Access the full execution context with a selector function | - -#### Host communication API - -Front components can trigger navigation, modals, and notifications using functions from `twenty-sdk`: - -| Function | Description | -|----------|-------------| -| `navigate(to, params?, queryParams?, options?)` | Navigate to a page in the app | -| `openSidePanelPage(params)` | Open a side panel | -| `closeSidePanel()` | Close the side panel | -| `openCommandConfirmationModal(params)` | Show a confirmation dialog | -| `enqueueSnackbar(params)` | Show a toast notification | -| `unmountFrontComponent()` | Unmount the component | -| `updateProgress(progress)` | Update a progress indicator | - -Here is an example that uses the host API to show a snackbar and close the side panel after an action completes: - -```tsx src/front-components/archive-record.tsx -import { defineFrontComponent } from 'twenty-sdk/define'; -import { useRecordId } from 'twenty-sdk/front-component'; -import { enqueueSnackbar, closeSidePanel } from 'twenty-sdk/front-component'; -import { CoreApiClient } from 'twenty-sdk/clients'; - -const ArchiveRecord = () => { - const recordId = useRecordId(); - - const handleArchive = async () => { - const client = new CoreApiClient(); - - await client.mutation({ - updateTask: { - __args: { id: recordId, data: { status: 'ARCHIVED' } }, - id: true, - }, - }); - - await enqueueSnackbar({ - message: 'Record archived', - variant: 'success', - }); - - await closeSidePanel(); - }; - - return ( -
-

Archive this record?

- -
- ); -}; - -export default defineFrontComponent({ - universalIdentifier: 'c9d0e1f2-a3b4-5678-cdef-789012345678', - name: 'archive-record', - description: 'Archives the current record', - component: ArchiveRecord, -}); -``` - -#### Command options - -Adding a `command` field to `defineFrontComponent` registers the component in the command menu (Cmd+K). If `isPinned` is `true`, it also appears as a quick-action button in the top-right corner of the page. - -| Field | Required | Description | -|-------|----------|-------------| -| `universalIdentifier` | Yes | Stable unique ID for the command | -| `label` | Yes | Full label shown in the command menu (Cmd+K) | -| `shortLabel` | No | Shorter label displayed on the pinned quick-action button | -| `icon` | No | Icon name displayed next to the label (e.g. `'IconBolt'`, `'IconSend'`) | -| `isPinned` | No | When `true`, shows the command as a quick-action button in the top-right corner of the page | -| `availabilityType` | No | Controls where the command appears: `'GLOBAL'` (always available), `'RECORD_SELECTION'` (only when records are selected), or `'FALLBACK'` (shown when no other commands match) | -| `availabilityObjectUniversalIdentifier` | No | Restrict the command to pages of a specific object type (e.g. only on Company records) | -| `conditionalAvailabilityExpression` | No | A boolean expression to dynamically control whether the command is visible (see below) | - -#### Conditional availability expressions - -The `conditionalAvailabilityExpression` field lets you control when a command is visible based on the current page context. Import typed variables and operators from `twenty-sdk` to build expressions: - -```tsx -import { defineFrontComponent } from 'twenty-sdk/define'; -import { - pageType, - numberOfSelectedRecords, - objectPermissions, - everyEquals, - isDefined, -} from 'twenty-sdk/front-component'; - -export default defineFrontComponent({ - universalIdentifier: '...', - name: 'bulk-action', - component: BulkAction, - command: { - universalIdentifier: '...', - label: 'Bulk Update', - availabilityType: 'RECORD_SELECTION', - conditionalAvailabilityExpression: everyEquals( - objectPermissions, - 'canUpdateObjectRecords', - true, - ), - }, -}); -``` - -**Context variables** — these represent the current state of the page: - -| Variable | Type | Description | -|----------|------|-------------| -| `pageType` | `string` | Current page type (e.g. `'RecordIndexPage'`, `'RecordShowPage'`) | -| `isInSidePanel` | `boolean` | Whether the component is rendered in a side panel | -| `numberOfSelectedRecords` | `number` | Number of currently selected records | -| `isSelectAll` | `boolean` | Whether "select all" is active | -| `selectedRecords` | `array` | The selected record objects | -| `favoriteRecordIds` | `array` | IDs of favorited records | -| `objectPermissions` | `object` | Permissions for the current object type | -| `targetObjectReadPermissions` | `object` | Read permissions for the target object | -| `targetObjectWritePermissions` | `object` | Write permissions for the target object | -| `featureFlags` | `object` | Active feature flags | -| `objectMetadataItem` | `object` | Metadata of the current object type | -| `hasAnySoftDeleteFilterOnView` | `boolean` | Whether the current view has a soft-delete filter | - -**Operators** — combine variables into boolean expressions: - -| Operator | Description | -|----------|-------------| -| `isDefined(value)` | `true` if the value is not null/undefined | -| `isNonEmptyString(value)` | `true` if the value is a non-empty string | -| `includes(array, value)` | `true` if the array contains the value | -| `includesEvery(array, prop, value)` | `true` if every item's property includes the value | -| `every(array, prop)` | `true` if the property is truthy on every item | -| `everyDefined(array, prop)` | `true` if the property is defined on every item | -| `everyEquals(array, prop, value)` | `true` if the property equals the value on every item | -| `some(array, prop)` | `true` if the property is truthy on at least one item | -| `someDefined(array, prop)` | `true` if the property is defined on at least one item | -| `someEquals(array, prop, value)` | `true` if the property equals the value on at least one item | -| `someNonEmptyString(array, prop)` | `true` if the property is a non-empty string on at least one item | -| `none(array, prop)` | `true` if the property is falsy on every item | -| `noneDefined(array, prop)` | `true` if the property is undefined on every item | -| `noneEquals(array, prop, value)` | `true` if the property does not equal the value on any item | - -#### Public assets - -Front components can access files from the app's `public/` directory using `getPublicAssetUrl`: - -```tsx -import { defineFrontComponent, getPublicAssetUrl } from 'twenty-sdk/define'; - -const Logo = () => Logo; - -export default defineFrontComponent({ - universalIdentifier: '...', - name: 'logo', - component: Logo, -}); -``` - -See the [public assets section](#accessing-public-assets-with-getpublicasseturl) for details. - -#### Styling - -Front components support multiple styling approaches. You can use: - -- **Inline styles** — `style={{ color: 'red' }}` -- **Twenty UI components** — import from `twenty-sdk/ui` (Button, Tag, Status, Chip, Avatar, and more) -- **Emotion** — CSS-in-JS with `@emotion/react` -- **Styled-components** — `styled.div` patterns -- **Tailwind CSS** — utility classes -- **Any CSS-in-JS library** compatible with React - -```tsx -import { defineFrontComponent } from 'twenty-sdk/define'; -import { Button, Tag, Status } from 'twenty-sdk/ui'; - -const StyledWidget = () => { - return ( -
-
- ); -}; - -export default defineFrontComponent({ - universalIdentifier: 'e5f6a7b8-c9d0-1234-efab-567890123456', - name: 'styled-widget', - component: StyledWidget, -}); -``` - -
- - - -Skills define reusable instructions and capabilities that AI agents can use within your workspace. Use `defineSkill()` to define skills with built-in validation: - -```ts src/skills/example-skill.ts -import { defineSkill } from 'twenty-sdk/define'; - -export default defineSkill({ - universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890', - name: 'sales-outreach', - label: 'Sales Outreach', - description: 'Guides the AI agent through a structured sales outreach process', - icon: 'IconBrain', - content: `You are a sales outreach assistant. When reaching out to a prospect: -1. Research the company and recent news -2. Identify the prospect's role and likely pain points -3. Draft a personalized message referencing specific details -4. Keep the tone professional but conversational`, -}); -``` - -Key points: -- `name` is a unique identifier string for the skill (kebab-case recommended). -- `label` is the human-readable display name shown in the UI. -- `content` contains the skill instructions — this is the text the AI agent uses. -- `icon` (optional) sets the icon displayed in the UI. -- `description` (optional) provides additional context about the skill's purpose. - - - - -Agents are AI assistants that live inside your workspace. Use `defineAgent()` to create agents with a custom system prompt: - -```ts src/agents/example-agent.ts -import { defineAgent } from 'twenty-sdk/define'; - -export default defineAgent({ - universalIdentifier: 'b3c4d5e6-f7a8-9012-bcde-f34567890123', - name: 'sales-assistant', - label: 'Sales Assistant', - description: 'Helps the sales team draft outreach emails and research prospects', - icon: 'IconRobot', - prompt: 'You are a helpful sales assistant. Help users with their questions and tasks.', -}); -``` - -Key points: -- `name` is the unique identifier string for the agent (kebab-case recommended). -- `label` is the display name shown in the UI. -- `prompt` is the system prompt that defines the agent's behavior. -- `description` (optional) provides context about what the agent does. -- `icon` (optional) sets the icon displayed in the UI. -- `modelId` (optional) overrides the default AI model used by the agent. - - - - -Views are saved configurations for how records of an object are displayed — including which fields are visible, their order, and any filters or groups applied. Use `defineView()` to ship pre-configured views with your app: - -```ts src/views/example-view.ts -import { defineView, ViewKey } from 'twenty-sdk/define'; -import { EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER } from '../objects/example-object'; -import { NAME_FIELD_UNIVERSAL_IDENTIFIER } from '../objects/example-object'; - -export default defineView({ - universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890', - name: 'All example items', - objectUniversalIdentifier: EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER, - icon: 'IconList', - key: ViewKey.INDEX, - position: 0, - fields: [ - { - universalIdentifier: 'f926bdb7-6af7-4683-9a09-adbca56c29f0', - fieldMetadataUniversalIdentifier: NAME_FIELD_UNIVERSAL_IDENTIFIER, - position: 0, - isVisible: true, - size: 200, - }, - ], -}); -``` - -Key points: -- `objectUniversalIdentifier` specifies which object this view applies to. -- `key` determines the view type (e.g., `ViewKey.INDEX` for the main list view). -- `fields` controls which columns appear and their order. Each field references a `fieldMetadataUniversalIdentifier`. -- You can also define `filters`, `filterGroups`, `groups`, and `fieldGroups` for more advanced configurations. -- `position` controls the ordering when multiple views exist for the same object. - - - - -Navigation menu items add custom entries to the workspace sidebar. Use `defineNavigationMenuItem()` to link to views, external URLs, or objects: - -```ts src/navigation-menu-items/example-navigation-menu-item.ts -import { defineNavigationMenuItem, NavigationMenuItemType } from 'twenty-sdk/define'; -import { EXAMPLE_VIEW_UNIVERSAL_IDENTIFIER } from '../views/example-view'; - -export default defineNavigationMenuItem({ - universalIdentifier: '9327db91-afa1-41b6-bd9d-2b51a26efb4c', - name: 'example-navigation-menu-item', - icon: 'IconList', - color: 'blue', - position: 0, - type: NavigationMenuItemType.VIEW, - viewUniversalIdentifier: EXAMPLE_VIEW_UNIVERSAL_IDENTIFIER, -}); -``` - -Key points: -- `type` determines what the menu item links to: `NavigationMenuItemType.VIEW` for a saved view, or `NavigationMenuItemType.LINK` for an external URL. -- For view links, set `viewUniversalIdentifier`. For external links, set `link`. -- `position` controls the ordering in the sidebar. -- `icon` and `color` (optional) customize the appearance. - - - - -Page layouts let you customize how a record detail page looks — which tabs appear, what widgets are inside each tab, and how they are arranged. Use `definePageLayout()` to ship custom layouts with your app: - -```ts src/page-layouts/example-record-page-layout.ts -import { definePageLayout, PageLayoutTabLayoutMode } from 'twenty-sdk/define'; -import { EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER } from '../objects/example-object'; -import { HELLO_WORLD_FRONT_COMPONENT_UNIVERSAL_IDENTIFIER } from '../front-components/hello-world'; - -export default definePageLayout({ - universalIdentifier: '203aeb94-6701-46d6-9af1-be2bbcc9e134', - name: 'Example Record Page', - type: 'RECORD_PAGE', - objectUniversalIdentifier: EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER, - tabs: [ - { - universalIdentifier: '6ed26b60-a51d-4ad7-86dd-1c04c7f3cac5', - title: 'Hello World', - position: 50, - icon: 'IconWorld', - layoutMode: PageLayoutTabLayoutMode.CANVAS, - widgets: [ - { - universalIdentifier: 'aa4234e0-2e5f-4c02-a96a-573449e2351d', - title: 'Hello World', - type: 'FRONT_COMPONENT', - configuration: { - configurationType: 'FRONT_COMPONENT', - frontComponentUniversalIdentifier: - HELLO_WORLD_FRONT_COMPONENT_UNIVERSAL_IDENTIFIER, - }, - }, - ], - }, - ], -}); -``` - -Key points: -- `type` is typically `'RECORD_PAGE'` to customize the detail view of a specific object. -- `objectUniversalIdentifier` specifies which object this layout applies to. -- Each `tab` defines a section of the page with a `title`, `position`, and `layoutMode` (`CANVAS` for free-form layout). -- Each `widget` inside a tab can render a front component, a relation list, or other built-in widget types. -- `position` on tabs controls their order. Use higher values (e.g., 50) to place custom tabs after built-in ones. - - -
- -## Public assets (`public/` folder) - -The `public/` folder at the root of your app holds static files — images, icons, fonts, or any other assets your app needs at runtime. These files are automatically included in builds, synced during dev mode, and uploaded to the server. - -Files placed in `public/` are: - -- **Publicly accessible** — once synced to the server, assets are served at a public URL. No authentication is needed to access them. -- **Available in front components** — use asset URLs to display images, icons, or any media inside your React components. -- **Available in logic functions** — reference asset URLs in emails, API responses, or any server-side logic. -- **Used for marketplace metadata** — the `logoUrl` and `screenshots` fields in `defineApplication()` reference files from this folder (e.g., `public/logo.png`). These are displayed in the marketplace when your app is published. -- **Auto-synced in dev mode** — when you add, update, or delete a file in `public/`, it is synced to the server automatically. No restart needed. -- **Included in builds** — `yarn twenty build` bundles all public assets into the distribution output. - -### Accessing public assets with `getPublicAssetUrl` - -Use the `getPublicAssetUrl` helper from `twenty-sdk` to get the full URL of a file in your `public/` directory. It works in both **logic functions** and **front components**. - -**In a logic function:** - -```ts src/logic-functions/send-invoice.ts -import { defineLogicFunction, getPublicAssetUrl } from 'twenty-sdk/define'; - -const handler = async (): Promise => { - const logoUrl = getPublicAssetUrl('logo.png'); - const invoiceUrl = getPublicAssetUrl('templates/invoice.png'); - - // Fetch the file content (no auth required — public endpoint) - const response = await fetch(invoiceUrl); - const buffer = await response.arrayBuffer(); - - return { logoUrl, size: buffer.byteLength }; -}; - -export default defineLogicFunction({ - universalIdentifier: 'a1b2c3d4-...', - name: 'send-invoice', - description: 'Sends an invoice with the app logo', - timeoutSeconds: 10, - handler, -}); -``` - -**In a front component:** - -```tsx src/front-components/company-card.tsx -import { defineFrontComponent, getPublicAssetUrl } from 'twenty-sdk/define'; - -export default defineFrontComponent(() => { - const logoUrl = getPublicAssetUrl('logo.png'); - - return App logo; -}); -``` - -The `path` argument is relative to your app's `public/` folder. Both `getPublicAssetUrl('logo.png')` and `getPublicAssetUrl('public/logo.png')` resolve to the same URL — the `public/` prefix is stripped automatically if present. - -## Using npm packages - -You can install and use any npm package in your app. Both logic functions and front components are bundled with [esbuild](https://esbuild.github.io/), which inlines all dependencies into the output — no `node_modules` are needed at runtime. - -### Installing a package - -```bash filename="Terminal" -yarn add axios -``` - -Then import it in your code: - -```ts src/logic-functions/fetch-data.ts -import { defineLogicFunction } from 'twenty-sdk/define'; -import axios from 'axios'; - -const handler = async (): Promise => { - const { data } = await axios.get('https://api.example.com/data'); - - return { data }; -}; - -export default defineLogicFunction({ - universalIdentifier: '...', - name: 'fetch-data', - description: 'Fetches data from an external API', - timeoutSeconds: 10, - handler, -}); -``` - -The same works for front components: - -```tsx src/front-components/chart.tsx -import { defineFrontComponent } from 'twenty-sdk/define'; -import { format } from 'date-fns'; - -const DateWidget = () => { - return

Today is {format(new Date(), 'MMMM do, yyyy')}

; -}; - -export default defineFrontComponent({ - universalIdentifier: '...', - name: 'date-widget', - component: DateWidget, -}); -``` - -### How bundling works - -The build step uses esbuild to produce a single self-contained file per logic function and per front component. All imported packages are inlined into the bundle. - -**Logic functions** run in a Node.js environment. Node built-in modules (`fs`, `path`, `crypto`, `http`, etc.) are available and do not need to be installed. - -**Front components** run in a Web Worker. Node built-in modules are **not** available — only browser APIs and npm packages that work in a browser environment. - -Both environments have `twenty-client-sdk/core` and `twenty-client-sdk/metadata` available as pre-provided modules — these are not bundled but resolved at runtime by the server. - -## Scaffolding entities with `yarn twenty add` - -Instead of creating entity files by hand, you can use the interactive scaffolder: - -```bash filename="Terminal" -yarn twenty add -``` - -This prompts you to pick an entity type and walks you through the required fields. It generates a ready-to-use file with a stable `universalIdentifier` and the correct `defineEntity()` call. - -You can also pass the entity type directly to skip the first prompt: - -```bash filename="Terminal" -yarn twenty add object -yarn twenty add logicFunction -yarn twenty add frontComponent -``` - -### Available entity types - -| Entity type | Command | Generated file | -|-------------|---------|----------------| -| Object | `yarn twenty add object` | `src/objects/.ts` | -| Field | `yarn twenty add field` | `src/fields/.ts` | -| Logic function | `yarn twenty add logicFunction` | `src/logic-functions/.ts` | -| Front component | `yarn twenty add frontComponent` | `src/front-components/.tsx` | -| Role | `yarn twenty add role` | `src/roles/.ts` | -| Skill | `yarn twenty add skill` | `src/skills/.ts` | -| Agent | `yarn twenty add agent` | `src/agents/.ts` | -| View | `yarn twenty add view` | `src/views/.ts` | -| Navigation menu item | `yarn twenty add navigationMenuItem` | `src/navigation-menu-items/.ts` | -| Page layout | `yarn twenty add pageLayout` | `src/page-layouts/.ts` | - -### What the scaffolder generates - -Each entity type has its own template. For example, `yarn twenty add object` asks for: - -1. **Name (singular)** — e.g., `invoice` -2. **Name (plural)** — e.g., `invoices` -3. **Label (singular)** — auto-populated from the name (e.g., `Invoice`) -4. **Label (plural)** — auto-populated (e.g., `Invoices`) -5. **Create a view and navigation item?** — if you answer yes, the scaffolder also generates a matching view and sidebar link for the new object. - -Other entity types have simpler prompts — most only ask for a name. - -The `field` entity type is more detailed: it asks for the field name, label, type (from a list of all available field types like `TEXT`, `NUMBER`, `SELECT`, `RELATION`, etc.), and the target object's `universalIdentifier`. - -### Custom output path - -Use the `--path` flag to place the generated file in a custom location: - -```bash filename="Terminal" -yarn twenty add logicFunction --path src/custom-folder -``` - -## Typed API clients (twenty-client-sdk) - -The `twenty-client-sdk` package provides two typed GraphQL clients for interacting with the Twenty API from your logic functions and front components. - -| Client | Import | Endpoint | Generated? | -|--------|--------|----------|------------| -| `CoreApiClient` | `twenty-client-sdk/core` | `/graphql` — workspace data (records, objects) | Yes, at dev/build time | -| `MetadataApiClient` | `twenty-client-sdk/metadata` | `/metadata` — workspace config, file uploads | No, ships pre-built | - - - - -`CoreApiClient` is the main client for querying and mutating workspace data. It is **generated from your workspace schema** during `yarn twenty dev` or `yarn twenty build`, so it is fully typed to match your objects and fields. - -```ts -import { CoreApiClient } from 'twenty-client-sdk/core'; - -const client = new CoreApiClient(); - -// Query records -const { companies } = await client.query({ - companies: { - edges: { - node: { - id: true, - name: true, - domainName: { - primaryLinkLabel: true, - primaryLinkUrl: true, - }, - }, - }, - }, -}); - -// Create a record -const { createCompany } = await client.mutation({ - createCompany: { - __args: { - data: { - name: 'Acme Corp', - }, - }, - id: true, - name: true, - }, -}); -``` - -The client uses a selection-set syntax: pass `true` to include a field, use `__args` for arguments, and nest objects for relations. You get full autocompletion and type checking based on your workspace schema. - - -**CoreApiClient is generated at dev/build time.** If you use it without running `yarn twenty dev` or `yarn twenty build` first, it throws an error. The generation happens automatically — the CLI introspects your workspace's GraphQL schema and generates a typed client using `@genql/cli`. - - -#### Using CoreSchema for type annotations - -`CoreSchema` provides TypeScript types matching your workspace objects — useful for typing component state or function parameters: - -```ts -import { CoreApiClient, CoreSchema } from 'twenty-client-sdk/core'; -import { useState } from 'react'; - -const [company, setCompany] = useState< - Pick | undefined ->(undefined); - -const client = new CoreApiClient(); -const result = await client.query({ - company: { - __args: { filter: { position: { eq: 1 } } }, - id: true, - name: true, - }, -}); -setCompany(result.company); -``` - - - - -`MetadataApiClient` ships pre-built with the SDK (no generation required). It queries the `/metadata` endpoint for workspace configuration, applications, and file uploads. - -```ts -import { MetadataApiClient } from 'twenty-client-sdk/metadata'; - -const metadataClient = new MetadataApiClient(); - -// List first 10 objects in the workspace -const { objects } = await metadataClient.query({ - objects: { - edges: { - node: { - id: true, - nameSingular: true, - namePlural: true, - labelSingular: true, - isCustom: true, - }, - }, - __args: { - filter: {}, - paging: { first: 10 }, - }, - }, -}); -``` - -#### Uploading files - -`MetadataApiClient` includes an `uploadFile` method for attaching files to file-type fields: - -```ts -import { MetadataApiClient } from 'twenty-client-sdk/metadata'; -import * as fs from 'fs'; - -const metadataClient = new MetadataApiClient(); - -const fileBuffer = fs.readFileSync('./invoice.pdf'); - -const uploadedFile = await metadataClient.uploadFile( - fileBuffer, // file contents as a Buffer - 'invoice.pdf', // filename - 'application/pdf', // MIME type - '58a0a314-d7ea-4865-9850-7fb84e72f30b', // field universalIdentifier -); - -console.log(uploadedFile); -// { id: '...', path: '...', size: 12345, createdAt: '...', url: 'https://...' } -``` - -| Parameter | Type | Description | -|-----------|------|-------------| -| `fileBuffer` | `Buffer` | The raw file contents | -| `filename` | `string` | The name of the file (used for storage and display) | -| `contentType` | `string` | MIME type (defaults to `application/octet-stream` if omitted) | -| `fieldMetadataUniversalIdentifier` | `string` | The `universalIdentifier` of the file-type field on your object | - -Key points: -- Uses the field's `universalIdentifier` (not its workspace-specific ID), so your upload code works across any workspace where your app is installed. -- The returned `url` is a signed URL you can use to access the uploaded file. - - - - - - - When your code runs on Twenty (logic functions or front components), the platform injects credentials as environment variables: - - - `TWENTY_API_URL` — Base URL of the Twenty API - - `TWENTY_APP_ACCESS_TOKEN` — Short-lived key scoped to your application's default function role - - You do **not** need to pass these to the clients — they read from `process.env` automatically. The API key's permissions are determined by the role referenced in `defaultRoleUniversalIdentifier` in your `application-config.ts`. - - -## Testing your app - -The SDK provides programmatic APIs that let you build, deploy, install, and uninstall your app from test code. Combined with [Vitest](https://vitest.dev/) and the typed API clients, you can write integration tests that verify your app works end-to-end against a real Twenty server. - -### Setup - -The scaffolded app already includes Vitest. If you set it up manually, install the dependencies: - -```bash filename="Terminal" -yarn add -D vitest vite-tsconfig-paths -``` - -Create a `vitest.config.ts` at the root of your app: - -```ts vitest.config.ts -import tsconfigPaths from 'vite-tsconfig-paths'; -import { defineConfig } from 'vitest/config'; - -export default defineConfig({ - plugins: [ - tsconfigPaths({ - projects: ['tsconfig.spec.json'], - ignoreConfigErrors: true, - }), - ], - test: { - testTimeout: 120_000, - hookTimeout: 120_000, - include: ['src/**/*.integration-test.ts'], - setupFiles: ['src/__tests__/setup-test.ts'], - env: { - TWENTY_API_URL: 'http://localhost:2020', - TWENTY_API_KEY: 'your-api-key', - }, - }, -}); -``` - -Create a setup file that verifies the server is reachable before tests run: - -```ts src/__tests__/setup-test.ts -import * as fs from 'fs'; -import * as os from 'os'; -import * as path from 'path'; -import { beforeAll } from 'vitest'; - -const TWENTY_API_URL = process.env.TWENTY_API_URL ?? 'http://localhost:2020'; -const TEST_CONFIG_DIR = path.join(os.tmpdir(), '.twenty-sdk-test'); - -beforeAll(async () => { - // Verify the server is running - const response = await fetch(`${TWENTY_API_URL}/healthz`); - - if (!response.ok) { - throw new Error( - `Twenty server is not reachable at ${TWENTY_API_URL}. ` + - 'Start the server before running integration tests.', - ); - } - - // Write a temporary config for the SDK - fs.mkdirSync(TEST_CONFIG_DIR, { recursive: true }); - - fs.writeFileSync( - path.join(TEST_CONFIG_DIR, 'config.json'), - JSON.stringify({ - remotes: { - local: { - apiUrl: process.env.TWENTY_API_URL, - apiKey: process.env.TWENTY_API_KEY, - }, - }, - defaultRemote: 'local', - }, null, 2), - ); -}); -``` - -### Programmatic SDK APIs - -The `twenty-sdk/cli` subpath exports functions you can call directly from test code: - -| Function | Description | -|----------|-------------| -| `appBuild` | Build the app and optionally pack a tarball | -| `appDeploy` | Upload a tarball to the server | -| `appInstall` | Install the app on the active workspace | -| `appUninstall` | Uninstall the app from the active workspace | - -Each function returns a result object with `success: boolean` and either `data` or `error`. - -### Writing an integration test - -Here is a full example that builds, deploys, and installs the app, then verifies it appears in the workspace: - -```ts src/__tests__/app-install.integration-test.ts -import { APPLICATION_UNIVERSAL_IDENTIFIER } from 'src/application-config'; -import { appBuild, appDeploy, appInstall, appUninstall } from 'twenty-sdk/cli'; -import { MetadataApiClient } from 'twenty-client-sdk/metadata'; -import { afterAll, beforeAll, describe, expect, it } from 'vitest'; - -const APP_PATH = process.cwd(); - -describe('App installation', () => { - beforeAll(async () => { - const buildResult = await appBuild({ - appPath: APP_PATH, - tarball: true, - onProgress: (message: string) => console.log(`[build] ${message}`), - }); - - if (!buildResult.success) { - throw new Error(`Build failed: ${buildResult.error?.message}`); - } - - const deployResult = await appDeploy({ - tarballPath: buildResult.data.tarballPath!, - onProgress: (message: string) => console.log(`[deploy] ${message}`), - }); - - if (!deployResult.success) { - throw new Error(`Deploy failed: ${deployResult.error?.message}`); - } - - const installResult = await appInstall({ appPath: APP_PATH }); - - if (!installResult.success) { - throw new Error(`Install failed: ${installResult.error?.message}`); - } - }); - - afterAll(async () => { - await appUninstall({ appPath: APP_PATH }); - }); - - it('should find the installed app in the workspace', async () => { - const metadataClient = new MetadataApiClient(); - - const result = await metadataClient.query({ - findManyApplications: { - id: true, - name: true, - universalIdentifier: true, - }, - }); - - const installedApp = result.findManyApplications.find( - (app: { universalIdentifier: string }) => - app.universalIdentifier === APPLICATION_UNIVERSAL_IDENTIFIER, - ); - - expect(installedApp).toBeDefined(); - }); -}); -``` - -### Running tests - -Make sure your local Twenty server is running, then: - -```bash filename="Terminal" -yarn test -``` - -Or in watch mode during development: - -```bash filename="Terminal" -yarn test:watch -``` - -### Type checking - -You can also run type checking on your app without running tests: - -```bash filename="Terminal" -yarn twenty typecheck -``` - -This runs `tsc --noEmit` and reports any type errors. - -## CLI reference - -Beyond `dev`, `build`, `add`, and `typecheck`, the CLI provides commands for executing functions, viewing logs, and managing app installations. - -### Executing functions (`yarn twenty exec`) - -Run a logic function manually without triggering it via HTTP, cron, or database event: - -```bash filename="Terminal" -# Execute by function name -yarn twenty exec -n create-new-post-card - -# Execute by universalIdentifier -yarn twenty exec -u e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf - -# Pass a JSON payload -yarn twenty exec -n create-new-post-card -p '{"name": "Hello"}' - -# Execute the post-install function -yarn twenty exec --postInstall -``` - -### Viewing function logs (`yarn twenty logs`) - -Stream execution logs for your app's logic functions: - -```bash filename="Terminal" -# Stream all function logs -yarn twenty logs - -# Filter by function name -yarn twenty logs -n create-new-post-card - -# Filter by universalIdentifier -yarn twenty logs -u e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf -``` - - -This is different from `yarn twenty server logs`, which shows the Docker container logs. `yarn twenty logs` shows your app's function execution logs from the Twenty server. - - -### Uninstalling an app (`yarn twenty uninstall`) - -Remove your app from the active workspace: - -```bash filename="Terminal" -yarn twenty uninstall - -# Skip the confirmation prompt -yarn twenty uninstall --yes -``` - -## Managing remotes - -A **remote** is a Twenty server that your app connects to. During setup, the scaffolder creates one for you automatically. You can add more remotes or switch between them at any time. - -```bash filename="Terminal" -# Add a new remote (opens a browser for OAuth login) -yarn twenty remote add - -# Connect to a local Twenty server (auto-detects port 2020 or 3000) -yarn twenty remote add --local - -# Add a remote non-interactively (useful for CI) -yarn twenty remote add --api-url https://your-twenty-server.com --api-key $TWENTY_API_KEY --as my-remote - -# List all configured remotes -yarn twenty remote list - -# Switch the active remote -yarn twenty remote switch -``` - -Your credentials are stored in `~/.twenty/config.json`. - -## CI with GitHub Actions - -The scaffolder generates a ready-to-use GitHub Actions workflow at `.github/workflows/ci.yml`. It runs your integration tests automatically on every push to `main` and on pull requests. - -The workflow: - -1. Checks out your code -2. Spins up a temporary Twenty server using the `twentyhq/twenty/.github/actions/spawn-twenty-docker-image` action -3. Installs dependencies with `yarn install --immutable` -4. Runs `yarn test` with `TWENTY_API_URL` and `TWENTY_API_KEY` injected from the action outputs - -```yaml .github/workflows/ci.yml -name: CI - -on: - push: - branches: - - main - pull_request: {} - -env: - TWENTY_VERSION: latest - -jobs: - test: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Spawn Twenty instance - id: twenty - uses: twentyhq/twenty/.github/actions/spawn-twenty-docker-image@main - with: - twenty-version: ${{ env.TWENTY_VERSION }} - github-token: ${{ secrets.GITHUB_TOKEN }} - - - name: Enable Corepack - run: corepack enable - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version-file: '.nvmrc' - cache: 'yarn' - - - name: Install dependencies - run: yarn install --immutable - - - name: Run integration tests - run: yarn test - env: - TWENTY_API_URL: ${{ steps.twenty.outputs.server-url }} - TWENTY_API_KEY: ${{ steps.twenty.outputs.access-token }} -``` - -You don't need to configure any secrets — the `spawn-twenty-docker-image` action starts an ephemeral Twenty server directly in the runner and outputs the connection details. The `GITHUB_TOKEN` secret is provided automatically by GitHub. - -To pin a specific Twenty version instead of `latest`, change the `TWENTY_VERSION` environment variable at the top of the workflow. +- **`yarn twenty dev`** — watches your source files and live-syncs changes to a connected Twenty server. The typed API client is regenerated automatically when the schema changes. +- **`yarn twenty build`** — compiles TypeScript, bundles logic functions and front components with esbuild, and produces a manifest. +- **Pre/post-install hooks** — optional logic functions that run during installation. See [Logic Functions](/developers/extend/apps/logic-functions) for details. + +## Next steps + + + + Define objects, fields, roles, and relations. + + + Server-side functions with HTTP, cron, and event triggers. + + + Sandboxed React components inside Twenty's UI. + + + Views, navigation items, and record page layouts. + + + AI skills and agents with custom prompts. + + + CLI commands, testing, assets, remotes, and CI. + + + Deploy to a server or publish to the marketplace. + + diff --git a/packages/twenty-docs/developers/extend/apps/cli-and-testing.mdx b/packages/twenty-docs/developers/extend/apps/cli-and-testing.mdx new file mode 100644 index 0000000000..57f2921719 --- /dev/null +++ b/packages/twenty-docs/developers/extend/apps/cli-and-testing.mdx @@ -0,0 +1,438 @@ +--- +title: CLI & Testing +description: CLI commands, testing setup, public assets, npm packages, remotes, and CI configuration. +icon: "terminal" +--- + + + Apps are currently in alpha. The feature works but is still evolving. + + +## Public assets (`public/` folder) + +The `public/` folder at the root of your app holds static files — images, icons, fonts, or any other assets your app needs at runtime. These files are automatically included in builds, synced during dev mode, and uploaded to the server. + +Files placed in `public/` are: + +- **Publicly accessible** — once synced to the server, assets are served at a public URL. No authentication is needed to access them. +- **Available in front components** — use asset URLs to display images, icons, or any media inside your React components. +- **Available in logic functions** — reference asset URLs in emails, API responses, or any server-side logic. +- **Used for marketplace metadata** — the `logoUrl` and `screenshots` fields in `defineApplication()` reference files from this folder (e.g., `public/logo.png`). These are displayed in the marketplace when your app is published. +- **Auto-synced in dev mode** — when you add, update, or delete a file in `public/`, it is synced to the server automatically. No restart needed. +- **Included in builds** — `yarn twenty build` bundles all public assets into the distribution output. + +### Accessing public assets with `getPublicAssetUrl` + +Use the `getPublicAssetUrl` helper from `twenty-sdk` to get the full URL of a file in your `public/` directory. It works in both **logic functions** and **front components**. + +**In a logic function:** + +```ts src/logic-functions/send-invoice.ts +import { defineLogicFunction, getPublicAssetUrl } from 'twenty-sdk/define'; + +const handler = async (): Promise => { + const logoUrl = getPublicAssetUrl('logo.png'); + const invoiceUrl = getPublicAssetUrl('templates/invoice.png'); + + // Fetch the file content (no auth required — public endpoint) + const response = await fetch(invoiceUrl); + const buffer = await response.arrayBuffer(); + + return { logoUrl, size: buffer.byteLength }; +}; + +export default defineLogicFunction({ + universalIdentifier: 'a1b2c3d4-...', + name: 'send-invoice', + description: 'Sends an invoice with the app logo', + timeoutSeconds: 10, + handler, +}); +``` + +**In a front component:** + +```tsx src/front-components/company-card.tsx +import { defineFrontComponent, getPublicAssetUrl } from 'twenty-sdk/define'; + +export default defineFrontComponent(() => { + const logoUrl = getPublicAssetUrl('logo.png'); + + return App logo; +}); +``` + +The `path` argument is relative to your app's `public/` folder. Both `getPublicAssetUrl('logo.png')` and `getPublicAssetUrl('public/logo.png')` resolve to the same URL — the `public/` prefix is stripped automatically if present. + +## Using npm packages + +You can install and use any npm package in your app. Both logic functions and front components are bundled with [esbuild](https://esbuild.github.io/), which inlines all dependencies into the output — no `node_modules` are needed at runtime. + +### Installing a package + +```bash filename="Terminal" +yarn add axios +``` + +Then import it in your code: + +```ts src/logic-functions/fetch-data.ts +import { defineLogicFunction } from 'twenty-sdk/define'; +import axios from 'axios'; + +const handler = async (): Promise => { + const { data } = await axios.get('https://api.example.com/data'); + + return { data }; +}; + +export default defineLogicFunction({ + universalIdentifier: '...', + name: 'fetch-data', + description: 'Fetches data from an external API', + timeoutSeconds: 10, + handler, +}); +``` + +The same works for front components: + +```tsx src/front-components/chart.tsx +import { defineFrontComponent } from 'twenty-sdk/define'; +import { format } from 'date-fns'; + +const DateWidget = () => { + return

Today is {format(new Date(), 'MMMM do, yyyy')}

; +}; + +export default defineFrontComponent({ + universalIdentifier: '...', + name: 'date-widget', + component: DateWidget, +}); +``` + +### How bundling works + +The build step uses esbuild to produce a single self-contained file per logic function and per front component. All imported packages are inlined into the bundle. + +**Logic functions** run in a Node.js environment. Node built-in modules (`fs`, `path`, `crypto`, `http`, etc.) are available and do not need to be installed. + +**Front components** run in a Web Worker. Node built-in modules are **not** available — only browser APIs and npm packages that work in a browser environment. + +Both environments have `twenty-client-sdk/core` and `twenty-client-sdk/metadata` available as pre-provided modules — these are not bundled but resolved at runtime by the server. + +## Testing your app + +The SDK provides programmatic APIs that let you build, deploy, install, and uninstall your app from test code. Combined with [Vitest](https://vitest.dev/) and the typed API clients, you can write integration tests that verify your app works end-to-end against a real Twenty server. + +### Setup + +The scaffolded app already includes Vitest. If you set it up manually, install the dependencies: + +```bash filename="Terminal" +yarn add -D vitest vite-tsconfig-paths +``` + +Create a `vitest.config.ts` at the root of your app: + +```ts vitest.config.ts +import tsconfigPaths from 'vite-tsconfig-paths'; +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + plugins: [ + tsconfigPaths({ + projects: ['tsconfig.spec.json'], + ignoreConfigErrors: true, + }), + ], + test: { + testTimeout: 120_000, + hookTimeout: 120_000, + include: ['src/**/*.integration-test.ts'], + setupFiles: ['src/__tests__/setup-test.ts'], + env: { + TWENTY_API_URL: 'http://localhost:2020', + TWENTY_API_KEY: 'your-api-key', + }, + }, +}); +``` + +Create a setup file that verifies the server is reachable before tests run: + +```ts src/__tests__/setup-test.ts +import * as fs from 'fs'; +import * as os from 'os'; +import * as path from 'path'; +import { beforeAll } from 'vitest'; + +const TWENTY_API_URL = process.env.TWENTY_API_URL ?? 'http://localhost:2020'; +const TEST_CONFIG_DIR = path.join(os.tmpdir(), '.twenty-sdk-test'); + +beforeAll(async () => { + // Verify the server is running + const response = await fetch(`${TWENTY_API_URL}/healthz`); + + if (!response.ok) { + throw new Error( + `Twenty server is not reachable at ${TWENTY_API_URL}. ` + + 'Start the server before running integration tests.', + ); + } + + // Write a temporary config for the SDK + fs.mkdirSync(TEST_CONFIG_DIR, { recursive: true }); + + fs.writeFileSync( + path.join(TEST_CONFIG_DIR, 'config.json'), + JSON.stringify({ + remotes: { + local: { + apiUrl: process.env.TWENTY_API_URL, + apiKey: process.env.TWENTY_API_KEY, + }, + }, + defaultRemote: 'local', + }, null, 2), + ); +}); +``` + +### Programmatic SDK APIs + +The `twenty-sdk/cli` subpath exports functions you can call directly from test code: + +| Function | Description | +|----------|-------------| +| `appBuild` | Build the app and optionally pack a tarball | +| `appDeploy` | Upload a tarball to the server | +| `appInstall` | Install the app on the active workspace | +| `appUninstall` | Uninstall the app from the active workspace | + +Each function returns a result object with `success: boolean` and either `data` or `error`. + +### Writing an integration test + +Here is a full example that builds, deploys, and installs the app, then verifies it appears in the workspace: + +```ts src/__tests__/app-install.integration-test.ts +import { APPLICATION_UNIVERSAL_IDENTIFIER } from 'src/application-config'; +import { appBuild, appDeploy, appInstall, appUninstall } from 'twenty-sdk/cli'; +import { MetadataApiClient } from 'twenty-client-sdk/metadata'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; + +const APP_PATH = process.cwd(); + +describe('App installation', () => { + beforeAll(async () => { + const buildResult = await appBuild({ + appPath: APP_PATH, + tarball: true, + onProgress: (message: string) => console.log(`[build] ${message}`), + }); + + if (!buildResult.success) { + throw new Error(`Build failed: ${buildResult.error?.message}`); + } + + const deployResult = await appDeploy({ + tarballPath: buildResult.data.tarballPath!, + onProgress: (message: string) => console.log(`[deploy] ${message}`), + }); + + if (!deployResult.success) { + throw new Error(`Deploy failed: ${deployResult.error?.message}`); + } + + const installResult = await appInstall({ appPath: APP_PATH }); + + if (!installResult.success) { + throw new Error(`Install failed: ${installResult.error?.message}`); + } + }); + + afterAll(async () => { + await appUninstall({ appPath: APP_PATH }); + }); + + it('should find the installed app in the workspace', async () => { + const metadataClient = new MetadataApiClient(); + + const result = await metadataClient.query({ + findManyApplications: { + id: true, + name: true, + universalIdentifier: true, + }, + }); + + const installedApp = result.findManyApplications.find( + (app: { universalIdentifier: string }) => + app.universalIdentifier === APPLICATION_UNIVERSAL_IDENTIFIER, + ); + + expect(installedApp).toBeDefined(); + }); +}); +``` + +### Running tests + +Make sure your local Twenty server is running, then: + +```bash filename="Terminal" +yarn test +``` + +Or in watch mode during development: + +```bash filename="Terminal" +yarn test:watch +``` + +### Type checking + +You can also run type checking on your app without running tests: + +```bash filename="Terminal" +yarn twenty typecheck +``` + +This runs `tsc --noEmit` and reports any type errors. + +## CLI reference + +Beyond `dev`, `build`, `add`, and `typecheck`, the CLI provides commands for executing functions, viewing logs, and managing app installations. + +### Executing functions (`yarn twenty exec`) + +Run a logic function manually without triggering it via HTTP, cron, or database event: + +```bash filename="Terminal" +# Execute by function name +yarn twenty exec -n create-new-post-card + +# Execute by universalIdentifier +yarn twenty exec -u e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf + +# Pass a JSON payload +yarn twenty exec -n create-new-post-card -p '{"name": "Hello"}' + +# Execute the post-install function +yarn twenty exec --postInstall +``` + +### Viewing function logs (`yarn twenty logs`) + +Stream execution logs for your app's logic functions: + +```bash filename="Terminal" +# Stream all function logs +yarn twenty logs + +# Filter by function name +yarn twenty logs -n create-new-post-card + +# Filter by universalIdentifier +yarn twenty logs -u e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf +``` + + +This is different from `yarn twenty server logs`, which shows the Docker container logs. `yarn twenty logs` shows your app's function execution logs from the Twenty server. + + +### Uninstalling an app (`yarn twenty uninstall`) + +Remove your app from the active workspace: + +```bash filename="Terminal" +yarn twenty uninstall + +# Skip the confirmation prompt +yarn twenty uninstall --yes +``` + +## Managing remotes + +A **remote** is a Twenty server that your app connects to. During setup, the scaffolder creates one for you automatically. You can add more remotes or switch between them at any time. + +```bash filename="Terminal" +# Add a new remote (opens a browser for OAuth login) +yarn twenty remote add + +# Connect to a local Twenty server (auto-detects port 2020 or 3000) +yarn twenty remote add --local + +# Add a remote non-interactively (useful for CI) +yarn twenty remote add --api-url https://your-twenty-server.com --api-key $TWENTY_API_KEY --as my-remote + +# List all configured remotes +yarn twenty remote list + +# Switch the active remote +yarn twenty remote switch +``` + +Your credentials are stored in `~/.twenty/config.json`. + +## CI with GitHub Actions + +The scaffolder generates a ready-to-use GitHub Actions workflow at `.github/workflows/ci.yml`. It runs your integration tests automatically on every push to `main` and on pull requests. + +The workflow: + +1. Checks out your code +2. Spins up a temporary Twenty server using the `twentyhq/twenty/.github/actions/spawn-twenty-docker-image` action +3. Installs dependencies with `yarn install --immutable` +4. Runs `yarn test` with `TWENTY_API_URL` and `TWENTY_API_KEY` injected from the action outputs + +```yaml .github/workflows/ci.yml +name: CI + +on: + push: + branches: + - main + pull_request: {} + +env: + TWENTY_VERSION: latest + +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Spawn Twenty instance + id: twenty + uses: twentyhq/twenty/.github/actions/spawn-twenty-docker-image@main + with: + twenty-version: ${{ env.TWENTY_VERSION }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Enable Corepack + run: corepack enable + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + cache: 'yarn' + + - name: Install dependencies + run: yarn install --immutable + + - name: Run integration tests + run: yarn test + env: + TWENTY_API_URL: ${{ steps.twenty.outputs.server-url }} + TWENTY_API_KEY: ${{ steps.twenty.outputs.access-token }} +``` + +You don't need to configure any secrets — the `spawn-twenty-docker-image` action starts an ephemeral Twenty server directly in the runner and outputs the connection details. The `GITHUB_TOKEN` secret is provided automatically by GitHub. + +To pin a specific Twenty version instead of `latest`, change the `TWENTY_VERSION` environment variable at the top of the workflow. diff --git a/packages/twenty-docs/developers/extend/apps/data-model.mdx b/packages/twenty-docs/developers/extend/apps/data-model.mdx new file mode 100644 index 0000000000..17bec029b2 --- /dev/null +++ b/packages/twenty-docs/developers/extend/apps/data-model.mdx @@ -0,0 +1,498 @@ +--- +title: Data Model +description: Define objects, fields, roles, and application metadata with the Twenty SDK. +icon: "database" +--- + + + Apps are currently in alpha. The feature works but is still evolving. + + +The `twenty-sdk` package provides `defineEntity` functions to declare your app's data model. You must use `export default defineEntity({...})` for the SDK to detect your entities. These functions validate your configuration at build time and provide IDE autocompletion and type safety. + + + **File organization is up to you.** + Entity detection is AST-based — the SDK finds `export default defineEntity(...)` calls regardless of where the file lives. Grouping files by type (e.g., `logic-functions/`, `roles/`) is just a convention, not a requirement. + + + + + +Roles encapsulate permissions on your workspace's objects and actions. + +```ts restricted-company-role.ts +import { + defineRole, + PermissionFlag, + STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS, +} from 'twenty-sdk/define'; + +export default defineRole({ + universalIdentifier: '2c80f640-2083-4803-bb49-003e38279de6', + label: 'My new role', + description: 'A role that can be used in your workspace', + canReadAllObjectRecords: false, + canUpdateAllObjectRecords: false, + canSoftDeleteAllObjectRecords: false, + canDestroyAllObjectRecords: false, + canUpdateAllSettings: false, + canBeAssignedToAgents: false, + canBeAssignedToUsers: false, + canBeAssignedToApiKeys: false, + objectPermissions: [ + { + objectUniversalIdentifier: + STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.company.universalIdentifier, + canReadObjectRecords: true, + canUpdateObjectRecords: true, + canSoftDeleteObjectRecords: false, + canDestroyObjectRecords: false, + }, + ], + fieldPermissions: [ + { + objectUniversalIdentifier: + STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.company.universalIdentifier, + fieldUniversalIdentifier: + STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.company.fields.name.universalIdentifier, + canReadFieldValue: false, + canUpdateFieldValue: false, + }, + ], + permissionFlags: [PermissionFlag.APPLICATIONS], +}); +``` + + + + +Every app must have exactly one `defineApplication` call that describes: + +- **Identity**: identifiers, display name, and description. +- **Permissions**: which role its functions and front components use. +- **(Optional) Variables**: key–value pairs exposed to your functions as environment variables. +- **(Optional) Pre-install / post-install functions**: logic functions that run before or after installation. + +```ts src/application-config.ts +import { defineApplication } from 'twenty-sdk/define'; +import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from 'src/roles/default-role'; + +export default defineApplication({ + universalIdentifier: '39783023-bcac-41e3-b0d2-ff1944d8465d', + displayName: 'My Twenty App', + description: 'My first Twenty app', + icon: 'IconWorld', + applicationVariables: { + DEFAULT_RECIPIENT_NAME: { + universalIdentifier: '19e94e59-d4fe-4251-8981-b96d0a9f74de', + description: 'Default recipient name for postcards', + value: 'Jane Doe', + isSecret: false, + }, + }, + defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, +}); +``` + +Notes: +- `universalIdentifier` fields are deterministic IDs you own. Generate them once and keep them stable across syncs. +- `applicationVariables` become environment variables for your functions and front components (e.g., `DEFAULT_RECIPIENT_NAME` is available as `process.env.DEFAULT_RECIPIENT_NAME`). +- `defaultRoleUniversalIdentifier` must reference a role defined with `defineRole()` (see above). +- Pre-install and post-install functions are detected automatically during the manifest build — you do not need to reference them in `defineApplication()`. + +#### Marketplace metadata + +If you plan to [publish your app](/developers/extend/apps/publishing), these optional fields control how it appears in the marketplace: + +| Field | Description | +|-------|-------------| +| `author` | Author or company name | +| `category` | App category for marketplace filtering | +| `logoUrl` | Path to your app logo (e.g., `public/logo.png`) | +| `screenshots` | Array of screenshot paths (e.g., `public/screenshot-1.png`) | +| `aboutDescription` | Longer markdown description for the "About" tab. If omitted, the marketplace uses the package's `README.md` from npm | +| `websiteUrl` | Link to your website | +| `termsUrl` | Link to terms of service | +| `emailSupport` | Support email address | +| `issueReportUrl` | Link to issue tracker | + +#### Roles and permissions + +The `defaultRoleUniversalIdentifier` in `application-config.ts` designates the default role used by your app's logic functions and front components. See `defineRole` above for details. + +- The runtime token injected as `TWENTY_APP_ACCESS_TOKEN` is derived from this role. +- The typed client is restricted to the permissions granted to that role. +- Follow least-privilege: create a dedicated role with only the permissions your functions need. + +##### Default function role + +When you scaffold a new app, the CLI creates a default role file: + +```ts src/roles/default-role.ts +import { defineRole, PermissionFlag } from 'twenty-sdk/define'; + +export const DEFAULT_ROLE_UNIVERSAL_IDENTIFIER = + 'b648f87b-1d26-4961-b974-0908fd991061'; + +export default defineRole({ + universalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, + label: 'Default function role', + description: 'Default role for function Twenty client', + canReadAllObjectRecords: true, + canUpdateAllObjectRecords: false, + canSoftDeleteAllObjectRecords: false, + canDestroyAllObjectRecords: false, + canUpdateAllSettings: false, + canBeAssignedToAgents: false, + canBeAssignedToUsers: false, + canBeAssignedToApiKeys: false, + objectPermissions: [], + fieldPermissions: [], + permissionFlags: [], +}); +``` + +This role's `universalIdentifier` is referenced in `application-config.ts` as `defaultRoleUniversalIdentifier`: + +- **\*.role.ts** defines what the role can do. +- **application-config.ts** points to that role so your functions inherit its permissions. + +Notes: +- Start from the scaffolded role, then progressively restrict it following least-privilege. +- Replace `objectPermissions` and `fieldPermissions` with the objects and fields your functions actually need. +- `permissionFlags` control access to platform-level capabilities. Keep them minimal. +- See a working example: [`hello-world/src/roles/function-role.ts`](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/hello-world/src/roles/function-role.ts). + + + + +Custom objects describe both schema and behavior for records in your workspace. Use `defineObject()` to define objects with built-in validation: + +```ts postCard.object.ts +import { defineObject, FieldType } from 'twenty-sdk/define'; + +enum PostCardStatus { + DRAFT = 'DRAFT', + SENT = 'SENT', + DELIVERED = 'DELIVERED', + RETURNED = 'RETURNED', +} + +export default defineObject({ + universalIdentifier: '54b589ca-eeed-4950-a176-358418b85c05', + nameSingular: 'postCard', + namePlural: 'postCards', + labelSingular: 'Post Card', + labelPlural: 'Post Cards', + description: 'A post card object', + icon: 'IconMail', + fields: [ + { + universalIdentifier: '58a0a314-d7ea-4865-9850-7fb84e72f30b', + name: 'content', + type: FieldType.TEXT, + label: 'Content', + description: "Postcard's content", + icon: 'IconAbc', + }, + { + universalIdentifier: 'c6aa31f3-da76-4ac6-889f-475e226009ac', + name: 'recipientName', + type: FieldType.FULL_NAME, + label: 'Recipient name', + icon: 'IconUser', + }, + { + universalIdentifier: '95045777-a0ad-49ec-98f9-22f9fc0c8266', + name: 'recipientAddress', + type: FieldType.ADDRESS, + label: 'Recipient address', + icon: 'IconHome', + }, + { + universalIdentifier: '87b675b8-dd8c-4448-b4ca-20e5a2234a1e', + name: 'status', + type: FieldType.SELECT, + label: 'Status', + icon: 'IconSend', + defaultValue: `'${PostCardStatus.DRAFT}'`, + options: [ + { value: PostCardStatus.DRAFT, label: 'Draft', position: 0, color: 'gray' }, + { value: PostCardStatus.SENT, label: 'Sent', position: 1, color: 'orange' }, + { value: PostCardStatus.DELIVERED, label: 'Delivered', position: 2, color: 'green' }, + { value: PostCardStatus.RETURNED, label: 'Returned', position: 3, color: 'orange' }, + ], + }, + { + universalIdentifier: 'e06abe72-5b44-4e7f-93be-afc185a3c433', + name: 'deliveredAt', + type: FieldType.DATE_TIME, + label: 'Delivered at', + icon: 'IconCheck', + isNullable: true, + defaultValue: null, + }, + ], +}); +``` + +Key points: + +- Use `defineObject()` for built-in validation and better IDE support. +- The `universalIdentifier` must be unique and stable across deployments. +- Each field requires a `name`, `type`, `label`, and its own stable `universalIdentifier`. +- The `fields` array is optional — you can define objects without custom fields. +- You can scaffold new objects using `yarn twenty add`, which guides you through naming, fields, and relationships. + + +**Base fields are created automatically.** When you define a custom object, Twenty automatically adds standard fields + such as `id`, `name`, `createdAt`, `updatedAt`, `createdBy`, `updatedBy` and `deletedAt`. + You don't need to define these in your `fields` array — only add your custom fields. + You can override default fields by defining a field with the same name in your `fields` array, + but this is not recommended. + + + + + +Use `defineField()` to add fields to objects you don't own — such as standard Twenty objects (Person, Company, etc.) or objects from other apps. Unlike inline fields in `defineObject()`, standalone fields require an `objectUniversalIdentifier` to specify which object they extend: + +```ts src/fields/company-loyalty-tier.field.ts +import { defineField, FieldType } from 'twenty-sdk/define'; + +export default defineField({ + universalIdentifier: 'f2a1b3c4-d5e6-7890-abcd-ef1234567890', + objectUniversalIdentifier: '701aecb9-eb1c-4d84-9d94-b954b231b64b', // Company object + name: 'loyaltyTier', + type: FieldType.SELECT, + label: 'Loyalty Tier', + icon: 'IconStar', + options: [ + { value: 'BRONZE', label: 'Bronze', position: 0, color: 'orange' }, + { value: 'SILVER', label: 'Silver', position: 1, color: 'gray' }, + { value: 'GOLD', label: 'Gold', position: 2, color: 'yellow' }, + ], +}); +``` + +Key points: +- `objectUniversalIdentifier` identifies the target object. For standard objects, use `STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS` exported from `twenty-sdk`. +- When defining fields inline in `defineObject()`, you do **not** need `objectUniversalIdentifier` — it's inherited from the parent object. +- `defineField()` is the only way to add fields to objects you didn't create with `defineObject()`. + + + + +Relations connect objects together. In Twenty, relations are always **bidirectional** — you define both sides, and each side references the other. + +There are two relation types: + +| Relation type | Description | Has foreign key? | +|---------------|-------------|-----------------| +| `MANY_TO_ONE` | Many records of this object point to one record of the target | Yes (`joinColumnName`) | +| `ONE_TO_MANY` | One record of this object has many records of the target | No (inverse side) | + +#### How relations work + +Every relation requires **two fields** that reference each other: + +1. The **MANY_TO_ONE** side — lives on the object that holds the foreign key +2. The **ONE_TO_MANY** side — lives on the object that owns the collection + +Both fields use `FieldType.RELATION` and cross-reference each other via `relationTargetFieldMetadataUniversalIdentifier`. + +#### Example: Post Card has many Recipients + +Suppose a `PostCard` can be sent to many `PostCardRecipient` records. Each recipient belongs to exactly one post card. + +**Step 1: Define the ONE_TO_MANY side on PostCard** (the "one" side): + +```ts src/fields/post-card-recipients-on-post-card.field.ts +import { defineField, FieldType, RelationType } from 'twenty-sdk/define'; +import { POST_CARD_UNIVERSAL_IDENTIFIER } from '../objects/post-card.object'; +import { POST_CARD_RECIPIENT_UNIVERSAL_IDENTIFIER } from '../objects/post-card-recipient.object'; + +// Export so the other side can reference it +export const POST_CARD_RECIPIENTS_FIELD_ID = 'a1111111-1111-1111-1111-111111111111'; +// Import from the other side +import { POST_CARD_FIELD_ID } from './post-card-on-post-card-recipient.field'; + +export default defineField({ + universalIdentifier: POST_CARD_RECIPIENTS_FIELD_ID, + objectUniversalIdentifier: POST_CARD_UNIVERSAL_IDENTIFIER, + type: FieldType.RELATION, + name: 'postCardRecipients', + label: 'Post Card Recipients', + icon: 'IconUsers', + relationTargetObjectMetadataUniversalIdentifier: POST_CARD_RECIPIENT_UNIVERSAL_IDENTIFIER, + relationTargetFieldMetadataUniversalIdentifier: POST_CARD_FIELD_ID, + universalSettings: { + relationType: RelationType.ONE_TO_MANY, + }, +}); +``` + +**Step 2: Define the MANY_TO_ONE side on PostCardRecipient** (the "many" side — holds the foreign key): + +```ts src/fields/post-card-on-post-card-recipient.field.ts +import { defineField, FieldType, RelationType, OnDeleteAction } from 'twenty-sdk/define'; +import { POST_CARD_UNIVERSAL_IDENTIFIER } from '../objects/post-card.object'; +import { POST_CARD_RECIPIENT_UNIVERSAL_IDENTIFIER } from '../objects/post-card-recipient.object'; + +// Export so the other side can reference it +export const POST_CARD_FIELD_ID = 'b2222222-2222-2222-2222-222222222222'; +// Import from the other side +import { POST_CARD_RECIPIENTS_FIELD_ID } from './post-card-recipients-on-post-card.field'; + +export default defineField({ + universalIdentifier: POST_CARD_FIELD_ID, + objectUniversalIdentifier: POST_CARD_RECIPIENT_UNIVERSAL_IDENTIFIER, + type: FieldType.RELATION, + name: 'postCard', + label: 'Post Card', + icon: 'IconMail', + relationTargetObjectMetadataUniversalIdentifier: POST_CARD_UNIVERSAL_IDENTIFIER, + relationTargetFieldMetadataUniversalIdentifier: POST_CARD_RECIPIENTS_FIELD_ID, + universalSettings: { + relationType: RelationType.MANY_TO_ONE, + onDelete: OnDeleteAction.CASCADE, + joinColumnName: 'postCardId', + }, +}); +``` + + +**Circular imports:** Both relation fields reference each other's `universalIdentifier`. To avoid circular import issues, export your field IDs as named constants from each file, and import them in the other file. The build system resolves these at compile time. + + +#### Relating to standard objects + +To create a relation with a built-in Twenty object (Person, Company, etc.), use `STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS`: + +```ts src/fields/person-on-self-hosting-user.field.ts +import { + defineField, + FieldType, + RelationType, + OnDeleteAction, + STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS, +} from 'twenty-sdk/define'; +import { SELF_HOSTING_USER_UNIVERSAL_IDENTIFIER } from '../objects/self-hosting-user.object'; + +export const PERSON_FIELD_ID = 'c3333333-3333-3333-3333-333333333333'; +export const SELF_HOSTING_USER_REVERSE_FIELD_ID = 'd4444444-4444-4444-4444-444444444444'; + +export default defineField({ + universalIdentifier: PERSON_FIELD_ID, + objectUniversalIdentifier: SELF_HOSTING_USER_UNIVERSAL_IDENTIFIER, + type: FieldType.RELATION, + name: 'person', + label: 'Person', + description: 'Person matching with the self hosting user', + isNullable: true, + relationTargetObjectMetadataUniversalIdentifier: + STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.person.universalIdentifier, + relationTargetFieldMetadataUniversalIdentifier: SELF_HOSTING_USER_REVERSE_FIELD_ID, + universalSettings: { + relationType: RelationType.MANY_TO_ONE, + onDelete: OnDeleteAction.SET_NULL, + joinColumnName: 'personId', + }, +}); +``` + +#### Relation field properties + +| Property | Required | Description | +|----------|----------|-------------| +| `type` | Yes | Must be `FieldType.RELATION` | +| `relationTargetObjectMetadataUniversalIdentifier` | Yes | The `universalIdentifier` of the target object | +| `relationTargetFieldMetadataUniversalIdentifier` | Yes | The `universalIdentifier` of the matching field on the target object | +| `universalSettings.relationType` | Yes | `RelationType.MANY_TO_ONE` or `RelationType.ONE_TO_MANY` | +| `universalSettings.onDelete` | MANY_TO_ONE only | What happens when the referenced record is deleted: `CASCADE`, `SET_NULL`, `RESTRICT`, or `NO_ACTION` | +| `universalSettings.joinColumnName` | MANY_TO_ONE only | Database column name for the foreign key (e.g., `postCardId`) | + +#### Inline relation fields in defineObject + +You can also define relation fields directly inside `defineObject()`. In that case, omit `objectUniversalIdentifier` — it's inherited from the parent object: + +```ts +export default defineObject({ + universalIdentifier: '...', + nameSingular: 'postCardRecipient', + // ... + fields: [ + { + universalIdentifier: POST_CARD_FIELD_ID, + type: FieldType.RELATION, + name: 'postCard', + label: 'Post Card', + relationTargetObjectMetadataUniversalIdentifier: POST_CARD_UNIVERSAL_IDENTIFIER, + relationTargetFieldMetadataUniversalIdentifier: POST_CARD_RECIPIENTS_FIELD_ID, + universalSettings: { + relationType: RelationType.MANY_TO_ONE, + onDelete: OnDeleteAction.CASCADE, + joinColumnName: 'postCardId', + }, + }, + // ... other fields + ], +}); +``` + + + +## Scaffolding entities with `yarn twenty add` + +Instead of creating entity files by hand, you can use the interactive scaffolder: + +```bash filename="Terminal" +yarn twenty add +``` + +This prompts you to pick an entity type and walks you through the required fields. It generates a ready-to-use file with a stable `universalIdentifier` and the correct `defineEntity()` call. + +You can also pass the entity type directly to skip the first prompt: + +```bash filename="Terminal" +yarn twenty add object +yarn twenty add logicFunction +yarn twenty add frontComponent +``` + +### Available entity types + +| Entity type | Command | Generated file | +|-------------|---------|----------------| +| Object | `yarn twenty add object` | `src/objects/.ts` | +| Field | `yarn twenty add field` | `src/fields/.ts` | +| Logic function | `yarn twenty add logicFunction` | `src/logic-functions/.ts` | +| Front component | `yarn twenty add frontComponent` | `src/front-components/.tsx` | +| Role | `yarn twenty add role` | `src/roles/.ts` | +| Skill | `yarn twenty add skill` | `src/skills/.ts` | +| Agent | `yarn twenty add agent` | `src/agents/.ts` | +| View | `yarn twenty add view` | `src/views/.ts` | +| Navigation menu item | `yarn twenty add navigationMenuItem` | `src/navigation-menu-items/.ts` | +| Page layout | `yarn twenty add pageLayout` | `src/page-layouts/.ts` | + +### What the scaffolder generates + +Each entity type has its own template. For example, `yarn twenty add object` asks for: + +1. **Name (singular)** — e.g., `invoice` +2. **Name (plural)** — e.g., `invoices` +3. **Label (singular)** — auto-populated from the name (e.g., `Invoice`) +4. **Label (plural)** — auto-populated (e.g., `Invoices`) +5. **Create a view and navigation item?** — if you answer yes, the scaffolder also generates a matching view and sidebar link for the new object. + +Other entity types have simpler prompts — most only ask for a name. + +The `field` entity type is more detailed: it asks for the field name, label, type (from a list of all available field types like `TEXT`, `NUMBER`, `SELECT`, `RELATION`, etc.), and the target object's `universalIdentifier`. + +### Custom output path + +Use the `--path` flag to place the generated file in a custom location: + +```bash filename="Terminal" +yarn twenty add logicFunction --path src/custom-folder +``` diff --git a/packages/twenty-docs/developers/extend/apps/front-components.mdx b/packages/twenty-docs/developers/extend/apps/front-components.mdx new file mode 100644 index 0000000000..afefeab250 --- /dev/null +++ b/packages/twenty-docs/developers/extend/apps/front-components.mdx @@ -0,0 +1,423 @@ +--- +title: Front Components +description: Build React components that render inside Twenty's UI with sandboxed isolation. +icon: "window-maximize" +--- + + + Apps are currently in alpha. The feature works but is still evolving. + + +Front components are React components that render directly inside Twenty's UI. They run in an **isolated Web Worker** using Remote DOM — your code is sandboxed but renders natively in the page, not in an iframe. + +## Where front components can be used + +Front components can render in two locations within Twenty: + +- **Side panel** — Non-headless front components open in the right-hand side panel. This is the default behavior when a front component is triggered from the command menu. +- **Widgets (dashboards and record pages)** — Front components can be embedded as widgets inside page layouts. When configuring a dashboard or a record page layout, users can add a front component widget. + +## Basic example + +The quickest way to see a front component in action is to register it as a **command**. Adding a `command` field with `isPinned: true` makes it appear as a quick-action button in the top-right corner of the page — no page layout needed: + +```tsx src/front-components/hello-world.tsx +import { defineFrontComponent } from 'twenty-sdk/define'; + +const HelloWorld = () => { + return ( +
+

Hello from my app!

+

This component renders inside Twenty.

+
+ ); +}; + +export default defineFrontComponent({ + universalIdentifier: '74c526eb-cb68-4cf7-b05c-0dd8c288d948', + name: 'hello-world', + description: 'A simple front component', + component: HelloWorld, + command: { + universalIdentifier: 'd4e5f6a7-b8c9-0123-defa-456789012345', + shortLabel: 'Hello', + label: 'Hello World', + icon: 'IconBolt', + isPinned: true, + availabilityType: 'GLOBAL', + }, +}); +``` + +After syncing with `yarn twenty dev` (or running a one-shot `yarn twenty dev --once`), the quick action appears in the top-right corner of the page: + +
+ Quick action button in the top-right corner +
+ +Click it to render the component inline. + +## Configuration fields + +| Field | Required | Description | +|-------|----------|-------------| +| `universalIdentifier` | Yes | Stable unique ID for this component | +| `component` | Yes | A React component function | +| `name` | No | Display name | +| `description` | No | Description of what the component does | +| `isHeadless` | No | Set to `true` if the component has no visible UI (see below) | +| `command` | No | Register the component as a command (see [command options](#command-options) below) | + +## Placing a front component on a page + +Beyond commands, you can embed a front component directly into a record page by adding it as a widget in a **page layout**. See the [definePageLayout](/developers/extend/apps/skills-and-agents#definepagelayout) section for details. + +## Headless vs non-headless + +Front components come in two rendering modes controlled by the `isHeadless` option: + +**Non-headless (default)** — The component renders a visible UI. When triggered from the command menu it opens in the side panel. This is the default behavior when `isHeadless` is `false` or omitted. + +**Headless (`isHeadless: true`)** — The component mounts invisibly in the background. It does not open the side panel. Headless components are designed for actions that execute logic and then unmount themselves — for example, running an async task, navigating to a page, or showing a confirmation modal. They pair naturally with the SDK Command components described below. + +```tsx src/front-components/sync-tracker.tsx +import { defineFrontComponent } from 'twenty-sdk/define'; +import { useRecordId, enqueueSnackbar } from 'twenty-sdk/front-component'; +import { useEffect } from 'react'; + +const SyncTracker = () => { + const recordId = useRecordId(); + + useEffect(() => { + enqueueSnackbar({ message: `Tracking record ${recordId}`, variant: 'info' }); + }, [recordId]); + + return null; +}; + +export default defineFrontComponent({ + universalIdentifier: '...', + name: 'sync-tracker', + description: 'Tracks record views silently', + isHeadless: true, + component: SyncTracker, +}); +``` + +Because the component returns `null`, Twenty skips rendering a container for it — no empty space appears in the layout. The component still has access to all hooks and the host communication API. + +## SDK Command components + +The `twenty-sdk` package provides four Command helper components designed for headless front components. Each component executes an action on mount, handles errors by showing a snackbar notification, and automatically unmounts the front component when done. + +Import them from `twenty-sdk/command`: + +- **`Command`** — Runs an async callback via the `execute` prop. +- **`CommandLink`** — Navigates to an app path. Props: `to`, `params`, `queryParams`, `options`. +- **`CommandModal`** — Opens a confirmation modal. If the user confirms, executes the `execute` callback. Props: `title`, `subtitle`, `execute`, `confirmButtonText`, `confirmButtonAccent`. +- **`CommandOpenSidePanelPage`** — Opens a specific side panel page. Props: `page`, `pageTitle`, `pageIcon`. + +Here is a full example of a headless front component using `Command` to run an action from the command menu: + +```tsx src/front-components/run-action.tsx +import { defineFrontComponent } from 'twenty-sdk/define'; +import { Command } from 'twenty-sdk/command'; +import { CoreApiClient } from 'twenty-sdk/clients'; + +const RunAction = () => { + const execute = async () => { + const client = new CoreApiClient(); + + await client.mutation({ + createTask: { + __args: { data: { title: 'Created by my app' } }, + id: true, + }, + }); + }; + + return ; +}; + +export default defineFrontComponent({ + universalIdentifier: 'e5f6a7b8-c9d0-1234-efab-345678901234', + name: 'run-action', + description: 'Creates a task from the command menu', + component: RunAction, + isHeadless: true, + command: { + universalIdentifier: 'f6a7b8c9-d0e1-2345-fabc-456789012345', + label: 'Run my action', + icon: 'IconPlayerPlay', + }, +}); +``` + +And an example using `CommandModal` to ask for confirmation before executing: + +```tsx src/front-components/delete-draft.tsx +import { defineFrontComponent } from 'twenty-sdk/define'; +import { CommandModal } from 'twenty-sdk/command'; + +const DeleteDraft = () => { + const execute = async () => { + // perform the deletion + }; + + return ( + + ); +}; + +export default defineFrontComponent({ + universalIdentifier: 'a7b8c9d0-e1f2-3456-abcd-567890123456', + name: 'delete-draft', + description: 'Deletes a draft with confirmation', + component: DeleteDraft, + isHeadless: true, + command: { + universalIdentifier: 'b8c9d0e1-f2a3-4567-bcde-678901234567', + label: 'Delete draft', + icon: 'IconTrash', + }, +}); +``` + +## Accessing runtime context + +Inside your component, use SDK hooks to access the current user, record, and component instance: + +```tsx src/front-components/record-info.tsx +import { defineFrontComponent } from 'twenty-sdk/define'; +import { + useUserId, + useRecordId, + useFrontComponentId, +} from 'twenty-sdk/front-component'; + +const RecordInfo = () => { + const userId = useUserId(); + const recordId = useRecordId(); + const componentId = useFrontComponentId(); + + return ( +
+

User: {userId}

+

Record: {recordId ?? 'No record context'}

+

Component: {componentId}

+
+ ); +}; + +export default defineFrontComponent({ + universalIdentifier: 'b2c3d4e5-f6a7-8901-bcde-f23456789012', + name: 'record-info', + component: RecordInfo, +}); +``` + +Available hooks: + +| Hook | Returns | Description | +|------|---------|-------------| +| `useUserId()` | `string` or `null` | The current user's ID | +| `useRecordId()` | `string` or `null` | The current record's ID (when placed on a record page) | +| `useFrontComponentId()` | `string` | This component instance's ID | +| `useFrontComponentExecutionContext(selector)` | varies | Access the full execution context with a selector function | + +## Host communication API + +Front components can trigger navigation, modals, and notifications using functions from `twenty-sdk`: + +| Function | Description | +|----------|-------------| +| `navigate(to, params?, queryParams?, options?)` | Navigate to a page in the app | +| `openSidePanelPage(params)` | Open a side panel | +| `closeSidePanel()` | Close the side panel | +| `openCommandConfirmationModal(params)` | Show a confirmation dialog | +| `enqueueSnackbar(params)` | Show a toast notification | +| `unmountFrontComponent()` | Unmount the component | +| `updateProgress(progress)` | Update a progress indicator | + +Here is an example that uses the host API to show a snackbar and close the side panel after an action completes: + +```tsx src/front-components/archive-record.tsx +import { defineFrontComponent } from 'twenty-sdk/define'; +import { useRecordId } from 'twenty-sdk/front-component'; +import { enqueueSnackbar, closeSidePanel } from 'twenty-sdk/front-component'; +import { CoreApiClient } from 'twenty-sdk/clients'; + +const ArchiveRecord = () => { + const recordId = useRecordId(); + + const handleArchive = async () => { + const client = new CoreApiClient(); + + await client.mutation({ + updateTask: { + __args: { id: recordId, data: { status: 'ARCHIVED' } }, + id: true, + }, + }); + + await enqueueSnackbar({ + message: 'Record archived', + variant: 'success', + }); + + await closeSidePanel(); + }; + + return ( +
+

Archive this record?

+ +
+ ); +}; + +export default defineFrontComponent({ + universalIdentifier: 'c9d0e1f2-a3b4-5678-cdef-789012345678', + name: 'archive-record', + description: 'Archives the current record', + component: ArchiveRecord, +}); +``` + +## Command options + +Adding a `command` field to `defineFrontComponent` registers the component in the command menu (Cmd+K). If `isPinned` is `true`, it also appears as a quick-action button in the top-right corner of the page. + +| Field | Required | Description | +|-------|----------|-------------| +| `universalIdentifier` | Yes | Stable unique ID for the command | +| `label` | Yes | Full label shown in the command menu (Cmd+K) | +| `shortLabel` | No | Shorter label displayed on the pinned quick-action button | +| `icon` | No | Icon name displayed next to the label (e.g. `'IconBolt'`, `'IconSend'`) | +| `isPinned` | No | When `true`, shows the command as a quick-action button in the top-right corner of the page | +| `availabilityType` | No | Controls where the command appears: `'GLOBAL'` (always available), `'RECORD_SELECTION'` (only when records are selected), or `'FALLBACK'` (shown when no other commands match) | +| `availabilityObjectUniversalIdentifier` | No | Restrict the command to pages of a specific object type (e.g. only on Company records) | +| `conditionalAvailabilityExpression` | No | A boolean expression to dynamically control whether the command is visible (see below) | + +## Conditional availability expressions + +The `conditionalAvailabilityExpression` field lets you control when a command is visible based on the current page context. Import typed variables and operators from `twenty-sdk` to build expressions: + +```tsx +import { defineFrontComponent } from 'twenty-sdk/define'; +import { + pageType, + numberOfSelectedRecords, + objectPermissions, + everyEquals, + isDefined, +} from 'twenty-sdk/front-component'; + +export default defineFrontComponent({ + universalIdentifier: '...', + name: 'bulk-action', + component: BulkAction, + command: { + universalIdentifier: '...', + label: 'Bulk Update', + availabilityType: 'RECORD_SELECTION', + conditionalAvailabilityExpression: everyEquals( + objectPermissions, + 'canUpdateObjectRecords', + true, + ), + }, +}); +``` + +**Context variables** — these represent the current state of the page: + +| Variable | Type | Description | +|----------|------|-------------| +| `pageType` | `string` | Current page type (e.g. `'RecordIndexPage'`, `'RecordShowPage'`) | +| `isInSidePanel` | `boolean` | Whether the component is rendered in a side panel | +| `numberOfSelectedRecords` | `number` | Number of currently selected records | +| `isSelectAll` | `boolean` | Whether "select all" is active | +| `selectedRecords` | `array` | The selected record objects | +| `favoriteRecordIds` | `array` | IDs of favorited records | +| `objectPermissions` | `object` | Permissions for the current object type | +| `targetObjectReadPermissions` | `object` | Read permissions for the target object | +| `targetObjectWritePermissions` | `object` | Write permissions for the target object | +| `featureFlags` | `object` | Active feature flags | +| `objectMetadataItem` | `object` | Metadata of the current object type | +| `hasAnySoftDeleteFilterOnView` | `boolean` | Whether the current view has a soft-delete filter | + +**Operators** — combine variables into boolean expressions: + +| Operator | Description | +|----------|-------------| +| `isDefined(value)` | `true` if the value is not null/undefined | +| `isNonEmptyString(value)` | `true` if the value is a non-empty string | +| `includes(array, value)` | `true` if the array contains the value | +| `includesEvery(array, prop, value)` | `true` if every item's property includes the value | +| `every(array, prop)` | `true` if the property is truthy on every item | +| `everyDefined(array, prop)` | `true` if the property is defined on every item | +| `everyEquals(array, prop, value)` | `true` if the property equals the value on every item | +| `some(array, prop)` | `true` if the property is truthy on at least one item | +| `someDefined(array, prop)` | `true` if the property is defined on at least one item | +| `someEquals(array, prop, value)` | `true` if the property equals the value on at least one item | +| `someNonEmptyString(array, prop)` | `true` if the property is a non-empty string on at least one item | +| `none(array, prop)` | `true` if the property is falsy on every item | +| `noneDefined(array, prop)` | `true` if the property is undefined on every item | +| `noneEquals(array, prop, value)` | `true` if the property does not equal the value on any item | + +## Public assets + +Front components can access files from the app's `public/` directory using `getPublicAssetUrl`: + +```tsx +import { defineFrontComponent, getPublicAssetUrl } from 'twenty-sdk/define'; + +const Logo = () => Logo; + +export default defineFrontComponent({ + universalIdentifier: '...', + name: 'logo', + component: Logo, +}); +``` + +See the [public assets section](/developers/extend/apps/cli-and-testing#public-assets-public-folder) for details. + +## Styling + +Front components support multiple styling approaches. You can use: + +- **Inline styles** — `style={{ color: 'red' }}` +- **Twenty UI components** — import from `twenty-sdk/ui` (Button, Tag, Status, Chip, Avatar, and more) +- **Emotion** — CSS-in-JS with `@emotion/react` +- **Styled-components** — `styled.div` patterns +- **Tailwind CSS** — utility classes +- **Any CSS-in-JS library** compatible with React + +```tsx +import { defineFrontComponent } from 'twenty-sdk/define'; +import { Button, Tag, Status } from 'twenty-sdk/ui'; + +const StyledWidget = () => { + return ( +
+
+ ); +}; + +export default defineFrontComponent({ + universalIdentifier: 'e5f6a7b8-c9d0-1234-efab-567890123456', + name: 'styled-widget', + component: StyledWidget, +}); +``` diff --git a/packages/twenty-docs/developers/extend/apps/getting-started.mdx b/packages/twenty-docs/developers/extend/apps/getting-started.mdx index 46ffea8ba8..54c415c1f7 100644 --- a/packages/twenty-docs/developers/extend/apps/getting-started.mdx +++ b/packages/twenty-docs/developers/extend/apps/getting-started.mdx @@ -1,5 +1,6 @@ --- title: Getting Started +icon: "rocket" description: Create your first Twenty app in minutes. --- diff --git a/packages/twenty-docs/developers/extend/apps/layout.mdx b/packages/twenty-docs/developers/extend/apps/layout.mdx new file mode 100644 index 0000000000..39bc340cac --- /dev/null +++ b/packages/twenty-docs/developers/extend/apps/layout.mdx @@ -0,0 +1,135 @@ +--- +title: Layout +description: Define views, navigation menu items, and page layouts to shape how your app appears in Twenty. +icon: "table-columns" +--- + + + Apps are currently in alpha. The feature works but is still evolving. + + +Layout entities control how your app surfaces inside Twenty's UI — what lives in the sidebar, which saved views ship with the app, and how a record detail page is arranged. + +## Layout concepts + +| Concept | What it controls | Entity | +|---------|------------------|--------| +| **View** | A saved list configuration for an object — visible fields, order, filters, groups | `defineView` | +| **Navigation Menu Item** | An entry in the left sidebar that links to a view or an external URL | `defineNavigationMenuItem` | +| **Page Layout** | The tabs and widgets that make up a record's detail page | `definePageLayout` | + +Views, navigation items, and page layouts reference each other by `universalIdentifier`: + +- A **navigation menu item** of type `VIEW` points at a `defineView` identifier, so the sidebar link opens that saved view. +- A **page layout** of type `RECORD_PAGE` targets an object and can embed [front components](/developers/extend/apps/front-components) inside its tabs as widgets. + + + + +Views are saved configurations for how records of an object are displayed — including which fields are visible, their order, and any filters or groups applied. Use `defineView()` to ship pre-configured views with your app: + +```ts src/views/example-view.ts +import { defineView, ViewKey } from 'twenty-sdk/define'; +import { EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER } from '../objects/example-object'; +import { NAME_FIELD_UNIVERSAL_IDENTIFIER } from '../objects/example-object'; + +export default defineView({ + universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890', + name: 'All example items', + objectUniversalIdentifier: EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER, + icon: 'IconList', + key: ViewKey.INDEX, + position: 0, + fields: [ + { + universalIdentifier: 'f926bdb7-6af7-4683-9a09-adbca56c29f0', + fieldMetadataUniversalIdentifier: NAME_FIELD_UNIVERSAL_IDENTIFIER, + position: 0, + isVisible: true, + size: 200, + }, + ], +}); +``` + +Key points: +- `objectUniversalIdentifier` specifies which object this view applies to. +- `key` determines the view type (e.g., `ViewKey.INDEX` for the main list view). +- `fields` controls which columns appear and their order. Each field references a `fieldMetadataUniversalIdentifier`. +- You can also define `filters`, `filterGroups`, `groups`, and `fieldGroups` for more advanced configurations. +- `position` controls the ordering when multiple views exist for the same object. + + + + +Navigation menu items add custom entries to the workspace sidebar. Use `defineNavigationMenuItem()` to link to views, external URLs, or objects: + +```ts src/navigation-menu-items/example-navigation-menu-item.ts +import { defineNavigationMenuItem, NavigationMenuItemType } from 'twenty-sdk/define'; +import { EXAMPLE_VIEW_UNIVERSAL_IDENTIFIER } from '../views/example-view'; + +export default defineNavigationMenuItem({ + universalIdentifier: '9327db91-afa1-41b6-bd9d-2b51a26efb4c', + name: 'example-navigation-menu-item', + icon: 'IconList', + color: 'blue', + position: 0, + type: NavigationMenuItemType.VIEW, + viewUniversalIdentifier: EXAMPLE_VIEW_UNIVERSAL_IDENTIFIER, +}); +``` + +Key points: +- `type` determines what the menu item links to: `NavigationMenuItemType.VIEW` for a saved view, or `NavigationMenuItemType.LINK` for an external URL. +- For view links, set `viewUniversalIdentifier`. For external links, set `link`. +- `position` controls the ordering in the sidebar. +- `icon` and `color` (optional) customize the appearance. + + + + +Page layouts let you customize how a record detail page looks — which tabs appear, what widgets are inside each tab, and how they are arranged. Use `definePageLayout()` to ship custom layouts with your app: + +```ts src/page-layouts/example-record-page-layout.ts +import { definePageLayout, PageLayoutTabLayoutMode } from 'twenty-sdk/define'; +import { EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER } from '../objects/example-object'; +import { HELLO_WORLD_FRONT_COMPONENT_UNIVERSAL_IDENTIFIER } from '../front-components/hello-world'; + +export default definePageLayout({ + universalIdentifier: '203aeb94-6701-46d6-9af1-be2bbcc9e134', + name: 'Example Record Page', + type: 'RECORD_PAGE', + objectUniversalIdentifier: EXAMPLE_OBJECT_UNIVERSAL_IDENTIFIER, + tabs: [ + { + universalIdentifier: '6ed26b60-a51d-4ad7-86dd-1c04c7f3cac5', + title: 'Hello World', + position: 50, + icon: 'IconWorld', + layoutMode: PageLayoutTabLayoutMode.CANVAS, + widgets: [ + { + universalIdentifier: 'aa4234e0-2e5f-4c02-a96a-573449e2351d', + title: 'Hello World', + type: 'FRONT_COMPONENT', + configuration: { + configurationType: 'FRONT_COMPONENT', + frontComponentUniversalIdentifier: + HELLO_WORLD_FRONT_COMPONENT_UNIVERSAL_IDENTIFIER, + }, + }, + ], + }, + ], +}); +``` + +Key points: +- `type` is typically `'RECORD_PAGE'` to customize the detail view of a specific object. +- `objectUniversalIdentifier` specifies which object this layout applies to. +- Each `tab` defines a section of the page with a `title`, `position`, and `layoutMode` (`CANVAS` for free-form layout). +- Each `widget` inside a tab can render a front component, a relation list, or other built-in widget types. +- `position` on tabs controls their order. Use higher values (e.g., 50) to place custom tabs after built-in ones. + + + diff --git a/packages/twenty-docs/developers/extend/apps/logic-functions.mdx b/packages/twenty-docs/developers/extend/apps/logic-functions.mdx new file mode 100644 index 0000000000..9f74dcc896 --- /dev/null +++ b/packages/twenty-docs/developers/extend/apps/logic-functions.mdx @@ -0,0 +1,565 @@ +--- +title: Logic Functions +description: Define server-side TypeScript functions with HTTP, cron, and database event triggers. +icon: "bolt" +--- + + + Apps are currently in alpha. The feature works but is still evolving. + + +Logic functions are server-side TypeScript functions that run on the Twenty platform. They can be triggered by HTTP requests, cron schedules, or database events — and can also be exposed as tools for AI agents. + + + + +Each function file uses `defineLogicFunction()` to export a configuration with a handler and optional triggers. + +```ts src/logic-functions/createPostCard.logic-function.ts +import { defineLogicFunction } from 'twenty-sdk/define'; +import type { DatabaseEventPayload, ObjectRecordCreateEvent, CronPayload, RoutePayload } from 'twenty-sdk/define'; +import { CoreApiClient, type Person } from 'twenty-client-sdk/core'; + +const handler = async (params: RoutePayload) => { + const client = new CoreApiClient(); + const name = 'name' in params.queryStringParameters + ? params.queryStringParameters.name ?? process.env.DEFAULT_RECIPIENT_NAME ?? 'Hello world' + : 'Hello world'; + + const result = await client.mutation({ + createPostCard: { + __args: { data: { name } }, + id: true, + name: true, + }, + }); + return result; +}; + +export default defineLogicFunction({ + universalIdentifier: 'e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf', + name: 'create-new-post-card', + timeoutSeconds: 2, + handler, + httpRouteTriggerSettings: { + path: '/post-card/create', + httpMethod: 'GET', + isAuthRequired: true, + }, + /*databaseEventTriggerSettings: { + eventName: 'people.created', + },*/ + /*cronTriggerSettings: { + pattern: '0 0 1 1 *', + },*/ +}); +``` + +Available trigger types: +- **httpRoute**: Exposes your function on an HTTP path and method **under the `/s/` endpoint**: +> e.g. `path: '/post-card/create'` is callable at `https://your-twenty-server.com/s/post-card/create` +- **cron**: Runs your function on a schedule using a CRON expression. +- **databaseEvent**: Runs on workspace object lifecycle events. When the event operation is `updated`, specific fields to listen to can be specified in the `updatedFields` array. If left undefined or empty, any update will trigger the function. +> e.g. `person.updated`, `*.created`, `company.*` + + +You can also manually execute a function using the CLI: + +```bash filename="Terminal" +yarn twenty exec -n create-new-post-card -p '{"key": "value"}' +``` + +```bash filename="Terminal" +yarn twenty exec -y e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf +``` + +You can watch logs with: + +```bash filename="Terminal" +yarn twenty logs +``` + + +#### Route trigger payload + +When a route trigger invokes your logic function, it receives a `RoutePayload` object that follows the +[AWS HTTP API v2 format](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html). +Import the `RoutePayload` type from `twenty-sdk`: + +```ts +import { defineLogicFunction, type RoutePayload } from 'twenty-sdk/define'; + +const handler = async (event: RoutePayload) => { + const { headers, queryStringParameters, pathParameters, body } = event; + const { method, path } = event.requestContext.http; + + return { message: 'Success' }; +}; +``` + +The `RoutePayload` type has the following structure: + + | Property | Type | Description | Example | + |----------|------|-------------|---------| + | `headers` | `Record` | HTTP headers (only those listed in `forwardedRequestHeaders`) | see section below | + | `queryStringParameters` | `Record` | Query string parameters (multiple values joined with commas) | `/users?ids=1&ids=2&ids=3&name=Alice` -> `{ ids: '1,2,3', name: 'Alice' }`| + | `pathParameters` | `Record` | Path parameters extracted from the route pattern | `/users/:id`, `/users/123` -> `{ id: '123' }` | + | `body` | `object \| null` | Parsed request body (JSON) | `{ id: 1 }` -> `{ id: 1 }` | + | `isBase64Encoded` | `boolean` | Whether the body is base64 encoded | | + | `requestContext.http.method` | `string` | HTTP method (GET, POST, PUT, PATCH, DELETE) | | + | `requestContext.http.path` | `string` | Raw request path | | + + +#### forwardedRequestHeaders + +By default, HTTP headers from incoming requests are **not** passed to your logic function for security reasons. +To access specific headers, list them in the `forwardedRequestHeaders` array: + +```ts +export default defineLogicFunction({ + universalIdentifier: 'e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf', + name: 'webhook-handler', + handler, + httpRouteTriggerSettings: { + path: '/webhook', + httpMethod: 'POST', + isAuthRequired: false, + forwardedRequestHeaders: ['x-webhook-signature', 'content-type'], + }, +}); +``` + +In your handler, access the forwarded headers like this: + +```ts +const handler = async (event: RoutePayload) => { + const signature = event.headers['x-webhook-signature']; + const contentType = event.headers['content-type']; + + // Validate webhook signature... + return { received: true }; +}; +``` + + +Header names are normalized to lowercase. Access them using lowercase keys (e.g., `event.headers['content-type']`). + + +#### Exposing a function as a tool + +Logic functions can be exposed as **tools** for AI agents and workflows. When marked as a tool, a function becomes discoverable by Twenty's AI features and can be used in workflow automations. + +To mark a logic function as a tool, set `isTool: true`: + +```ts src/logic-functions/enrich-company.logic-function.ts +import { defineLogicFunction } from 'twenty-sdk/define'; +import { CoreApiClient } from 'twenty-client-sdk/core'; + +const handler = async (params: { companyName: string; domain?: string }) => { + const client = new CoreApiClient(); + + const result = await client.mutation({ + createTask: { + __args: { + data: { + title: `Enrich data for ${params.companyName}`, + body: `Domain: ${params.domain ?? 'unknown'}`, + }, + }, + id: true, + }, + }); + + return { taskId: result.createTask.id }; +}; + +export default defineLogicFunction({ + universalIdentifier: 'f47ac10b-58cc-4372-a567-0e02b2c3d479', + name: 'enrich-company', + description: 'Enrich a company record with external data', + timeoutSeconds: 10, + handler, + isTool: true, +}); +``` + +Key points: + +- You can combine `isTool` with triggers — a function can be both a tool (callable by AI agents) and triggered by events at the same time. +- **`toolInputSchema`** (optional): A JSON Schema object describing the parameters your function accepts. The schema is computed automatically from source code static analysis, but you can set it explicitly: + +```ts +export default defineLogicFunction({ + ..., + toolInputSchema: { + type: 'object', + properties: { + companyName: { + type: 'string', + description: 'The name of the company to enrich', + }, + domain: { + type: 'string', + description: 'The company website domain (optional)', + }, + }, + required: ['companyName'], + }, +}); +``` + + +**Write a good `description`.** AI agents rely on the function's `description` field to decide when to use the tool. Be specific about what the tool does and when it should be called. + + + + + +A post-install function is a logic function that runs automatically once your app has finished installing on a workspace. The server executes it **after** the app's metadata has been synchronized and the SDK client has been generated, so the workspace is fully ready to use and the new schema is in place. Typical use cases include seeding default data, creating initial records, configuring workspace settings, or provisioning resources on third-party services. + +```ts src/logic-functions/post-install.ts +import { definePostInstallLogicFunction, type InstallPayload } from 'twenty-sdk/define'; + +const handler = async (payload: InstallPayload): Promise => { + console.log('Post install logic function executed successfully!', payload.previousVersion); +}; + +export default definePostInstallLogicFunction({ + universalIdentifier: 'f7a2b9c1-3d4e-5678-abcd-ef9876543210', + name: 'post-install', + description: 'Runs after installation to set up the application.', + timeoutSeconds: 300, + shouldRunOnVersionUpgrade: false, + shouldRunSynchronously: false, + handler, +}); +``` + +You can also manually execute the post-install function at any time using the CLI: + +```bash filename="Terminal" +yarn twenty exec --postInstall +``` + +Key points: +- Post-install functions use `definePostInstallLogicFunction()` — a specialized variant that omits trigger settings (`cronTriggerSettings`, `databaseEventTriggerSettings`, `httpRouteTriggerSettings`, `isTool`). +- The handler receives an `InstallPayload` with `{ previousVersion?: string; newVersion: string }` — `newVersion` is the version being installed, and `previousVersion` is the version that was previously installed (or `undefined` on a fresh install). Use these values to distinguish fresh installs from upgrades and to run version-specific migration logic. +- **When the hook runs**: on fresh installs only, by default. Pass `shouldRunOnVersionUpgrade: true` if you also want it to run when the app is upgraded from a previous version. When omitted, the flag defaults to `false` and upgrades skip the hook. +- **Execution model — async by default, sync opt-in**: the `shouldRunSynchronously` flag controls *how* post-install is executed. + - `shouldRunSynchronously: false` *(default)* — the hook is **enqueued on the message queue** with `retryLimit: 3` and runs asynchronously in a worker. The install response returns as soon as the job is enqueued, so a slow or failing handler does not block the caller. The worker will retry up to three times. **Use this for long-running jobs** — seeding large datasets, calling slow third-party APIs, provisioning external resources, anything that might exceed a reasonable HTTP response window. + - `shouldRunSynchronously: true` — the hook is executed **inline during the install flow** (same executor as pre-install). The install request blocks until the handler finishes, and if it throws, the install caller receives a `POST_INSTALL_ERROR`. No automatic retries. **Use this for fast, must-complete-before-response work** — for example, emitting a validation error to the user, or quick setup that the client will rely on immediately after the install call returns. Keep in mind the metadata migration has already been applied by the time post-install runs, so a sync-mode failure does **not** roll back the schema changes — it only surfaces the error. +- Make sure your handler is idempotent. In async mode the queue may retry up to three times; in either mode the hook may run again on upgrades when `shouldRunOnVersionUpgrade: true`. +- The environment variables `APPLICATION_ID`, `APP_ACCESS_TOKEN`, and `API_URL` are available inside the handler (same as any other logic function), so you can call the Twenty API with an application access token scoped to your app. +- Only one post-install function is allowed per application. The manifest build will error if more than one is detected. +- The function's `universalIdentifier`, `shouldRunOnVersionUpgrade`, and `shouldRunSynchronously` are automatically attached to the application manifest under the `postInstallLogicFunction` field during the build — you do not need to reference them in `defineApplication()`. +- The default timeout is set to 300 seconds (5 minutes) to allow for longer setup tasks like data seeding. +- **Not executed in dev mode**: when an app is registered locally (via `yarn twenty dev`), the server skips the install flow entirely and syncs files directly through the CLI watcher — so post-install never runs in dev mode, regardless of `shouldRunSynchronously`. Use `yarn twenty exec --postInstall` to trigger it manually against a running workspace. + + + + +A pre-install function is a logic function that runs automatically during installation, **before the workspace metadata migration is applied**. It shares the same payload shape as post-install (`InstallPayload`), but it is positioned earlier in the install flow so it can prepare state that the upcoming migration depends on — typical uses include backing up data, validating compatibility with the new schema, or archiving records that are about to be restructured or dropped. + +```ts src/logic-functions/pre-install.ts +import { definePreInstallLogicFunction, type InstallPayload } from 'twenty-sdk/define'; + +const handler = async (payload: InstallPayload): Promise => { + console.log('Pre install logic function executed successfully!', payload.previousVersion); +}; + +export default definePreInstallLogicFunction({ + universalIdentifier: 'a1b2c3d4-5678-90ab-cdef-1234567890ab', + name: 'pre-install', + description: 'Runs before installation to prepare the application.', + timeoutSeconds: 300, + shouldRunOnVersionUpgrade: true, + handler, +}); +``` + +You can also manually execute the pre-install function at any time using the CLI: + +```bash filename="Terminal" +yarn twenty exec --preInstall +``` + +Key points: +- Pre-install functions use `definePreInstallLogicFunction()` — same specialized config as post-install, just attached to a different lifecycle slot. +- Both pre- and post-install handlers receive the same `InstallPayload` type: `{ previousVersion?: string; newVersion: string }`. Import it once and reuse it for both hooks. +- **When the hook runs**: positioned just before the workspace metadata migration (`synchronizeFromManifest`). Before executing, the server runs a purely additive "pared-down sync" that registers the **new** version's pre-install function in the workspace metadata — nothing else is touched — and then executes it. Because this sync is additive-only, the previous version's objects, fields, and data are still intact when your handler runs: you can safely read and back up pre-migration state. +- **Execution model**: pre-install is executed **synchronously** and **blocks the install**. If the handler throws, the install is aborted before any schema changes are applied — the workspace stays on the previous version in a consistent state. This is intentional: pre-install is your last chance to refuse a risky upgrade. +- As with post-install, only one pre-install function is allowed per application. It is attached to the application manifest under `preInstallLogicFunction` automatically during the build. +- **Not executed in dev mode**: same as post-install — the install flow is skipped entirely for locally-registered apps, so pre-install never runs under `yarn twenty dev`. Use `yarn twenty exec --preInstall` to trigger it manually. + + + + +Both hooks are part of the same install flow and receive the same `InstallPayload`. The difference is **when** they run relative to the workspace metadata migration, and that changes what data they can safely touch. + +``` +┌─────────────────────────────────────────────────────────────┐ +│ install flow │ +│ │ +│ upload package → [pre-install] → metadata migration → │ +│ generate SDK → [post-install] │ +│ │ +│ old schema visible new schema visible │ +└─────────────────────────────────────────────────────────────┘ +``` + +Pre-install is always **synchronous** (it blocks the install and can abort it). Post-install is **asynchronous by default** — enqueued on a worker with automatic retries — but can opt into synchronous execution with `shouldRunSynchronously: true`. See the `definePostInstallLogicFunction` accordion above for when to use each mode. + +**Use `post-install` for anything that needs the new schema to exist.** This is the common case: + +- Seeding default data (creating initial records, default views, demo content) against newly-added objects and fields. +- Registering webhooks with third-party services now that the app has its credentials. +- Calling your own API to finish setup that depends on the synchronized metadata. +- Idempotent "ensure this exists" logic that should reconcile state on every upgrade — combine with `shouldRunOnVersionUpgrade: true`. + +Example — seed a default `PostCard` record after install: + +```ts src/logic-functions/post-install.ts +import { definePostInstallLogicFunction, type InstallPayload } from 'twenty-sdk/define'; +import { createClient } from './generated/client'; + +const handler = async ({ previousVersion }: InstallPayload): Promise => { + if (previousVersion) return; // fresh installs only + + const client = createClient(); + await client.postCard.create({ + data: { title: 'Welcome to Postcard', content: 'Your first card!' }, + }); +}; + +export default definePostInstallLogicFunction({ + universalIdentifier: 'f7a2b9c1-3d4e-5678-abcd-ef9876543210', + name: 'post-install', + description: 'Seeds a welcome post card after install.', + timeoutSeconds: 300, + shouldRunOnVersionUpgrade: false, + handler, +}); +``` + +**Use `pre-install` when a migration would otherwise destroy or corrupt existing data.** Because pre-install runs against the *previous* schema and its failure rolls back the upgrade, it is the right place for anything risky: + +- **Backing up data that is about to be dropped or restructured** — e.g. you are removing a field in v2 and need to copy its values into another field or export them to storage before the migration runs. +- **Archiving records that a new constraint would invalidate** — e.g. a field is becoming `NOT NULL` and you need to delete or fix rows with null values first. +- **Validating compatibility and refusing the upgrade if the current data cannot be migrated cleanly** — throw from the handler and the install aborts with no changes applied. This is safer than discovering the incompatibility mid-migration. +- **Renaming or rekeying data** ahead of a schema change that would lose the association. + +Example — archive records before a destructive migration: + +```ts src/logic-functions/pre-install.ts +import { definePreInstallLogicFunction, type InstallPayload } from 'twenty-sdk/define'; +import { createClient } from './generated/client'; + +const handler = async ({ previousVersion, newVersion }: InstallPayload): Promise => { + // Only the 1.x → 2.x upgrade drops the legacy `notes` field. + if (!previousVersion?.startsWith('1.') || !newVersion.startsWith('2.')) { + return; + } + + const client = createClient(); + const legacyRecords = await client.postCard.findMany({ + where: { notes: { isNotNull: true } }, + }); + + if (legacyRecords.length === 0) return; + + // Copy legacy `notes` into the new `description` field before the migration + // drops the `notes` column. If this fails, the upgrade is aborted and the + // workspace stays on v1 with all data intact. + await Promise.all( + legacyRecords.map((record) => + client.postCard.update({ + where: { id: record.id }, + data: { description: record.notes }, + }), + ), + ); +}; + +export default definePreInstallLogicFunction({ + universalIdentifier: 'a1b2c3d4-5678-90ab-cdef-1234567890ab', + name: 'pre-install', + description: 'Backs up legacy notes into description before the v2 migration.', + timeoutSeconds: 300, + shouldRunOnVersionUpgrade: true, + handler, +}); +``` + +**Rule of thumb:** + +| You want to... | Use | +|---|---| +| Seed default data, configure the workspace, register external resources | `post-install` | +| Run long-running seeding or third-party calls that shouldn't block the install response | `post-install` (default — `shouldRunSynchronously: false`, with worker retries) | +| Run fast setup that the caller will rely on immediately after the install call returns | `post-install` with `shouldRunSynchronously: true` | +| Read or back up data that the upcoming migration would lose | `pre-install` | +| Reject an upgrade that would corrupt existing data | `pre-install` (throw from the handler) | +| Run reconciliation on every upgrade | `post-install` with `shouldRunOnVersionUpgrade: true` | +| Do one-off setup on the first install only | `post-install` with `shouldRunOnVersionUpgrade: false` (default) | + + +If in doubt, default to **post-install**. Only reach for pre-install when the migration itself is destructive and you need to intercept the previous state before it is gone. + + + + + +## Typed API clients (twenty-client-sdk) + +The `twenty-client-sdk` package provides two typed GraphQL clients for interacting with the Twenty API from your logic functions and front components. + +| Client | Import | Endpoint | Generated? | +|--------|--------|----------|------------| +| `CoreApiClient` | `twenty-client-sdk/core` | `/graphql` — workspace data (records, objects) | Yes, at dev/build time | +| `MetadataApiClient` | `twenty-client-sdk/metadata` | `/metadata` — workspace config, file uploads | No, ships pre-built | + + + + +`CoreApiClient` is the main client for querying and mutating workspace data. It is **generated from your workspace schema** during `yarn twenty dev` or `yarn twenty build`, so it is fully typed to match your objects and fields. + +```ts +import { CoreApiClient } from 'twenty-client-sdk/core'; + +const client = new CoreApiClient(); + +// Query records +const { companies } = await client.query({ + companies: { + edges: { + node: { + id: true, + name: true, + domainName: { + primaryLinkLabel: true, + primaryLinkUrl: true, + }, + }, + }, + }, +}); + +// Create a record +const { createCompany } = await client.mutation({ + createCompany: { + __args: { + data: { + name: 'Acme Corp', + }, + }, + id: true, + name: true, + }, +}); +``` + +The client uses a selection-set syntax: pass `true` to include a field, use `__args` for arguments, and nest objects for relations. You get full autocompletion and type checking based on your workspace schema. + + +**CoreApiClient is generated at dev/build time.** If you use it without running `yarn twenty dev` or `yarn twenty build` first, it throws an error. The generation happens automatically — the CLI introspects your workspace's GraphQL schema and generates a typed client using `@genql/cli`. + + +#### Using CoreSchema for type annotations + +`CoreSchema` provides TypeScript types matching your workspace objects — useful for typing component state or function parameters: + +```ts +import { CoreApiClient, CoreSchema } from 'twenty-client-sdk/core'; +import { useState } from 'react'; + +const [company, setCompany] = useState< + Pick | undefined +>(undefined); + +const client = new CoreApiClient(); +const result = await client.query({ + company: { + __args: { filter: { position: { eq: 1 } } }, + id: true, + name: true, + }, +}); +setCompany(result.company); +``` + + + + +`MetadataApiClient` ships pre-built with the SDK (no generation required). It queries the `/metadata` endpoint for workspace configuration, applications, and file uploads. + +```ts +import { MetadataApiClient } from 'twenty-client-sdk/metadata'; + +const metadataClient = new MetadataApiClient(); + +// List first 10 objects in the workspace +const { objects } = await metadataClient.query({ + objects: { + edges: { + node: { + id: true, + nameSingular: true, + namePlural: true, + labelSingular: true, + isCustom: true, + }, + }, + __args: { + filter: {}, + paging: { first: 10 }, + }, + }, +}); +``` + +#### Uploading files + +`MetadataApiClient` includes an `uploadFile` method for attaching files to file-type fields: + +```ts +import { MetadataApiClient } from 'twenty-client-sdk/metadata'; +import * as fs from 'fs'; + +const metadataClient = new MetadataApiClient(); + +const fileBuffer = fs.readFileSync('./invoice.pdf'); + +const uploadedFile = await metadataClient.uploadFile( + fileBuffer, // file contents as a Buffer + 'invoice.pdf', // filename + 'application/pdf', // MIME type + '58a0a314-d7ea-4865-9850-7fb84e72f30b', // field universalIdentifier +); + +console.log(uploadedFile); +// { id: '...', path: '...', size: 12345, createdAt: '...', url: 'https://...' } +``` + +| Parameter | Type | Description | +|-----------|------|-------------| +| `fileBuffer` | `Buffer` | The raw file contents | +| `filename` | `string` | The name of the file (used for storage and display) | +| `contentType` | `string` | MIME type (defaults to `application/octet-stream` if omitted) | +| `fieldMetadataUniversalIdentifier` | `string` | The `universalIdentifier` of the file-type field on your object | + +Key points: +- Uses the field's `universalIdentifier` (not its workspace-specific ID), so your upload code works across any workspace where your app is installed. +- The returned `url` is a signed URL you can use to access the uploaded file. + + + + + + + When your code runs on Twenty (logic functions or front components), the platform injects credentials as environment variables: + + - `TWENTY_API_URL` — Base URL of the Twenty API + - `TWENTY_APP_ACCESS_TOKEN` — Short-lived key scoped to your application's default function role + + You do **not** need to pass these to the clients — they read from `process.env` automatically. The API key's permissions are determined by the role referenced in `defaultRoleUniversalIdentifier` in your `application-config.ts`. + diff --git a/packages/twenty-docs/developers/extend/apps/publishing.mdx b/packages/twenty-docs/developers/extend/apps/publishing.mdx index 3f0df07a84..50c84a8e63 100644 --- a/packages/twenty-docs/developers/extend/apps/publishing.mdx +++ b/packages/twenty-docs/developers/extend/apps/publishing.mdx @@ -1,5 +1,6 @@ --- title: Publishing +icon: "upload" description: Distribute your Twenty app to the marketplace or deploy it internally. --- diff --git a/packages/twenty-docs/developers/extend/apps/skills-and-agents.mdx b/packages/twenty-docs/developers/extend/apps/skills-and-agents.mdx new file mode 100644 index 0000000000..3b61f1ae39 --- /dev/null +++ b/packages/twenty-docs/developers/extend/apps/skills-and-agents.mdx @@ -0,0 +1,69 @@ +--- +title: Skills & Agents +description: Define AI skills and agents for your app. +icon: "robot" +--- + + + Apps are currently in alpha. The feature works but is still evolving. + + +Apps can define AI capabilities that live inside the workspace — reusable skill instructions and agents with custom system prompts. + + + + +Skills define reusable instructions and capabilities that AI agents can use within your workspace. Use `defineSkill()` to define skills with built-in validation: + +```ts src/skills/example-skill.ts +import { defineSkill } from 'twenty-sdk/define'; + +export default defineSkill({ + universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890', + name: 'sales-outreach', + label: 'Sales Outreach', + description: 'Guides the AI agent through a structured sales outreach process', + icon: 'IconBrain', + content: `You are a sales outreach assistant. When reaching out to a prospect: +1. Research the company and recent news +2. Identify the prospect's role and likely pain points +3. Draft a personalized message referencing specific details +4. Keep the tone professional but conversational`, +}); +``` + +Key points: +- `name` is a unique identifier string for the skill (kebab-case recommended). +- `label` is the human-readable display name shown in the UI. +- `content` contains the skill instructions — this is the text the AI agent uses. +- `icon` (optional) sets the icon displayed in the UI. +- `description` (optional) provides additional context about the skill's purpose. + + + + +Agents are AI assistants that live inside your workspace. Use `defineAgent()` to create agents with a custom system prompt: + +```ts src/agents/example-agent.ts +import { defineAgent } from 'twenty-sdk/define'; + +export default defineAgent({ + universalIdentifier: 'b3c4d5e6-f7a8-9012-bcde-f34567890123', + name: 'sales-assistant', + label: 'Sales Assistant', + description: 'Helps the sales team draft outreach emails and research prospects', + icon: 'IconRobot', + prompt: 'You are a helpful sales assistant. Help users with their questions and tasks.', +}); +``` + +Key points: +- `name` is the unique identifier string for the agent (kebab-case recommended). +- `label` is the display name shown in the UI. +- `prompt` is the system prompt that defines the agent's behavior. +- `description` (optional) provides context about what the agent does. +- `icon` (optional) sets the icon displayed in the UI. +- `modelId` (optional) overrides the default AI model used by the agent. + + + diff --git a/packages/twenty-docs/developers/extend/oauth.mdx b/packages/twenty-docs/developers/extend/oauth.mdx new file mode 100644 index 0000000000..5152ea6254 --- /dev/null +++ b/packages/twenty-docs/developers/extend/oauth.mdx @@ -0,0 +1,189 @@ +--- +title: OAuth +icon: "key" +description: Authorization code flow with PKCE and client credentials for server-to-server access. +--- + +Twenty implements OAuth 2.0 with authorization code + PKCE for user-facing apps and client credentials for server-to-server access. Clients are registered dynamically via [RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591) — no manual setup in a dashboard. + +## When to Use OAuth + +| Scenario | Auth Method | +|----------|-------------| +| Internal scripts, automation | [API Key](/developers/extend/api#authentication) | +| External app acting on behalf of a user | **OAuth — Authorization Code** | +| Server-to-server, no user context | **OAuth — Client Credentials** | +| Twenty App with UI extensions | [Apps](/developers/extend/apps/getting-started) (OAuth is handled automatically) | + +## Register a Client + +Twenty supports **dynamic client registration** per [RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591). No manual setup needed — register programmatically: + +```bash +POST /oauth/register +Content-Type: application/json + +{ + "client_name": "My Integration", + "redirect_uris": ["https://myapp.com/callback"], + "grant_types": ["authorization_code"], + "token_endpoint_auth_method": "client_secret_post" +} +``` + +**Response:** + +```json +{ + "client_id": "abc123", + "client_secret": "secret456", + "client_name": "My Integration", + "redirect_uris": ["https://myapp.com/callback"] +} +``` + + +Store the `client_secret` securely — it cannot be retrieved later. + + +## Scopes + +| Scope | Access | +|-------|--------| +| `api` | Full read/write access to the Core and Metadata APIs | +| `profile` | Read the authenticated user's profile information | + +Request scopes as a space-separated string: `scope=api profile` + +## Authorization Code Flow + +Use this flow when your app acts on behalf of a Twenty user. + +### 1. Redirect the user to authorize + +``` +GET /oauth/authorize? + client_id=YOUR_CLIENT_ID& + response_type=code& + redirect_uri=https://myapp.com/callback& + scope=api& + state=random_state_value& + code_challenge=CHALLENGE& + code_challenge_method=S256 +``` + +| Parameter | Required | Description | +|-----------|----------|-------------| +| `client_id` | Yes | Your registered client ID | +| `response_type` | Yes | Must be `code` | +| `redirect_uri` | Yes | Must match a registered redirect URI | +| `scope` | No | Space-separated scopes (defaults to `api`) | +| `state` | Recommended | Random string to prevent CSRF attacks | +| `code_challenge` | Recommended | PKCE challenge (SHA-256 hash of verifier, base64url-encoded) | +| `code_challenge_method` | Recommended | Must be `S256` when using PKCE | + +The user sees a consent screen and approves or denies access. + +### 2. Handle the callback + +After authorization, Twenty redirects back to your `redirect_uri`: + +``` +https://myapp.com/callback?code=AUTH_CODE&state=random_state_value +``` + +Verify that `state` matches what you sent. + +### 3. Exchange the code for tokens + +```bash +POST /oauth/token +Content-Type: application/x-www-form-urlencoded + +grant_type=authorization_code& +code=AUTH_CODE& +redirect_uri=https://myapp.com/callback& +client_id=YOUR_CLIENT_ID& +client_secret=YOUR_CLIENT_SECRET& +code_verifier=YOUR_PKCE_VERIFIER +``` + +**Response:** + +```json +{ + "access_token": "eyJhbG...", + "token_type": "Bearer", + "expires_in": 3600, + "refresh_token": "dGhpcyBpcyBh..." +} +``` + +### 4. Use the access token + +```bash +GET /rest/companies +Authorization: Bearer ACCESS_TOKEN +``` + +### 5. Refresh when expired + +```bash +POST /oauth/token +Content-Type: application/x-www-form-urlencoded + +grant_type=refresh_token& +refresh_token=YOUR_REFRESH_TOKEN& +client_id=YOUR_CLIENT_ID& +client_secret=YOUR_CLIENT_SECRET +``` + +## Client Credentials Flow + +For server-to-server integrations with no user interaction: + +```bash +POST /oauth/token +Content-Type: application/x-www-form-urlencoded + +grant_type=client_credentials& +client_id=YOUR_CLIENT_ID& +client_secret=YOUR_CLIENT_SECRET& +scope=api +``` + +The returned token has workspace-level access, not tied to any specific user. + +## Server Discovery + +Twenty publishes its OAuth configuration at a standard discovery endpoint: + +``` +GET /.well-known/oauth-authorization-server +``` + +This returns all endpoints, supported grant types, scopes, and capabilities — useful for building generic OAuth clients. + +## API Endpoints Summary + +| Endpoint | Purpose | +|----------|---------| +| `/.well-known/oauth-authorization-server` | Server metadata discovery | +| `/oauth/register` | Dynamic client registration | +| `/oauth/authorize` | User authorization | +| `/oauth/token` | Token exchange and refresh | + +| Environment | Base URL | +|-------------|----------| +| **Cloud** | `https://api.twenty.com` | +| **Self-Hosted** | `https://{your-domain}` | + +## OAuth vs API Keys + +| | API Keys | OAuth | +|-|----------|-------| +| **Setup** | Generate in Settings | Register a client, implement flow | +| **User context** | None (workspace-level) | Specific user's permissions | +| **Best for** | Scripts, internal tools | External apps, multi-user integrations | +| **Token rotation** | Manual | Automatic via refresh tokens | +| **Scoped access** | Full API access | Granular via scopes | diff --git a/packages/twenty-docs/developers/extend/webhooks.mdx b/packages/twenty-docs/developers/extend/webhooks.mdx index 7b1cf25f01..84747af0da 100644 --- a/packages/twenty-docs/developers/extend/webhooks.mdx +++ b/packages/twenty-docs/developers/extend/webhooks.mdx @@ -1,12 +1,12 @@ --- title: Webhooks -description: Receive real-time notifications when events occur in your CRM. +icon: "satellite-dish" +description: Get notified when records change — HTTP POST to your endpoint on every create, update, or delete. --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - -Webhooks push data to your systems in real-time when events occur in Twenty — no polling required. Use them to keep external systems in sync, trigger automations, or send alerts. +Twenty sends an HTTP POST to your URL whenever a record is created, updated, or deleted. All object types are covered, including custom objects. ## Create a Webhook diff --git a/packages/twenty-docs/developers/introduction.mdx b/packages/twenty-docs/developers/introduction.mdx index 460a358f1d..9fc4b4742a 100644 --- a/packages/twenty-docs/developers/introduction.mdx +++ b/packages/twenty-docs/developers/introduction.mdx @@ -1,23 +1,28 @@ --- -title: Getting Started -description: Welcome to Twenty Developer Documentation, your resources for extending, self-hosting, and contributing to Twenty. +title: Developers +description: Build apps, use the API, self-host, or contribute to the codebase. --- import { CardTitle } from "/snippets/card-title.mdx" - - Extend - Build integrations with APIs, webhooks, and custom apps. + + Apps + Extend Twenty with custom objects, server-side logic, UI components, and AI agents — all as TypeScript packages. - + + API + REST and GraphQL APIs, webhooks, and OAuth. + + + Self-Host - Deploy and manage Twenty on your own infrastructure. + Run Twenty on your own infrastructure. - + Contribute - Join our open-source community and contribute to Twenty. + Set up the monorepo locally and submit PRs. diff --git a/packages/twenty-docs/developers/self-host/capabilities/cloud-providers.mdx b/packages/twenty-docs/developers/self-host/capabilities/cloud-providers.mdx index a5c14cb380..844f6883c2 100644 --- a/packages/twenty-docs/developers/self-host/capabilities/cloud-providers.mdx +++ b/packages/twenty-docs/developers/self-host/capabilities/cloud-providers.mdx @@ -1,5 +1,6 @@ --- title: Other methods +icon: "cloud" --- diff --git a/packages/twenty-docs/developers/self-host/capabilities/docker-compose.mdx b/packages/twenty-docs/developers/self-host/capabilities/docker-compose.mdx index dc098a33b3..ef70ed16a2 100644 --- a/packages/twenty-docs/developers/self-host/capabilities/docker-compose.mdx +++ b/packages/twenty-docs/developers/self-host/capabilities/docker-compose.mdx @@ -1,5 +1,6 @@ --- -title: 1-Click w/ Docker Compose +title: Docker Compose +icon: "docker" --- diff --git a/packages/twenty-docs/developers/self-host/capabilities/setup.mdx b/packages/twenty-docs/developers/self-host/capabilities/setup.mdx index f109b644eb..b4de463802 100644 --- a/packages/twenty-docs/developers/self-host/capabilities/setup.mdx +++ b/packages/twenty-docs/developers/self-host/capabilities/setup.mdx @@ -1,5 +1,6 @@ --- title: Setup +icon: "gear" --- # Configuration Management diff --git a/packages/twenty-docs/developers/self-host/capabilities/troubleshooting.mdx b/packages/twenty-docs/developers/self-host/capabilities/troubleshooting.mdx index 3724536435..cbebc67358 100644 --- a/packages/twenty-docs/developers/self-host/capabilities/troubleshooting.mdx +++ b/packages/twenty-docs/developers/self-host/capabilities/troubleshooting.mdx @@ -1,5 +1,6 @@ --- title: Troubleshooting +icon: "wrench" --- diff --git a/packages/twenty-docs/developers/self-host/capabilities/upgrade-guide.mdx b/packages/twenty-docs/developers/self-host/capabilities/upgrade-guide.mdx index 796d583043..962d72e7da 100644 --- a/packages/twenty-docs/developers/self-host/capabilities/upgrade-guide.mdx +++ b/packages/twenty-docs/developers/self-host/capabilities/upgrade-guide.mdx @@ -1,5 +1,6 @@ --- title: Upgrade guide +icon: "arrow-up-right-dots" --- ## General guidelines @@ -16,370 +17,14 @@ If you used Docker Compose, follow these steps: 3. Bring Twenty back online with `docker compose up -d` -If you want to upgrade your instance by few versions, e.g. from v0.33.0 to v0.35.0, you have to upgrade your instance sequentially, in this example from v0.33.0 to v0.34.0, then from v0.34.0 to v0.35.0. - **Make sure that after each upgraded version you have non-corrupted backup.** ## Version-specific upgrade steps -## v1.0 - -Hello Twenty v1.0! 🎉 - -## v0.60 - -### Performance Enhancements -All interactions with the metadata API have been optimized for better performance, particularly for object metadata manipulation and workspace creation operations. - -We've refactored our caching strategy to prioritize cache hits over database queries when possible, significantly improving the performance of metadata API operations. - -If you encounter any runtime issues after upgrading, you may need to flush your cache to ensure it's synchronized with the latest changes. Run this command in your twenty-server container: - -```bash -yarn command:prod cache:flush -``` - -### v0.55 - -Upgrade your Twenty instance to use v0.55 image - -You don't need to run any command anymore, the new image will automatically care about running all required migrations. - - -### `User does not have permission` error - -If you encounter authorization errors on most requests after upgrading, you may need to flush your cache to recompute the latest permissions. - -In your `twenty-server` container, run: -```bash -yarn command:prod cache:flush -``` - -This issue is specific to this Twenty version and should not be required for future upgrades. - -### v0.54 - -Since version `0.53`, no manual actions needed. - -#### Metadata schema deprecation - -We've merged the `metadata` schema into the `core` one to simplify data retrieval from `TypeORM`. -We have merged the `migrate` command step within the `upgrade` command. We do not recommend running `migrate` manually within any of your server/worker containers. - -### Since v0.53 - -Starting from `0.53`, upgrade is programmatically done within the `DockerFile`, this means from now on, you shouldn't have to run any command manually anymore. - -Make sure to keep upgrading your instance sequentially, without skipping any major version (e.g. `0.43.3` to `0.44.0` is allowed, but `0.43.1` to `0.45.0` isn't), else could lead to workspace version desynchronization that could result in runtime error and missing functionality. - -To check if a workspace has been correctly migrated you can review its version in database in `core.workspace` table. - -It should always be in the range of your current Twenty's instance `major.minor` version, you can view your instance version in the admin panel (at `/settings/admin-panel`, accessible if your user has `canAccessFullAdminPanel` property set to true in the database) or by running `echo $APP_VERSION` in your `twenty-server` container. - - -To fix a desynchronized workspace version, you will have to upgrade from the corresponding twenty's version following related upgrade guide sequentially and so on until it reaches desired version. - -#### `auditLog` removal - -We've removed the auditLog standard object, which means your backup size might be significantly reduced after this migration. - -### v0.51 to v0.52 - -Upgrade your Twenty instance to use v0.52 image - -``` -yarn database:migrate:prod -yarn command:prod upgrade -``` - -#### I have a workspace blocked in version between `0.52.0` and `0.52.6` - -Unfortunately `0.52.0` and `0.52.6` have been completely removed from dockerHub. -You will have to manually update your workspace version to `0.51.0` in database and upgrade using twenty version `0.52.11` following its just above upgrade guide. - - -### v0.50 to v0.51 - -Upgrade your Twenty instance to use v0.51 image - -``` -yarn database:migrate:prod -yarn command:prod upgrade -``` - -### v0.44.0 to v0.50.0 - -Upgrade your Twenty instance to use v0.50.0 image - -``` -yarn database:migrate:prod -yarn command:prod upgrade -``` - -#### Docker-compose.yml mutation - -This version includes a `docker-compose.yml` mutation to give `worker` service access to the `server-local-data` volume. -Please update your local `docker-compose.yml` with [v0.50.0 docker-compose.yml](https://github.com/twentyhq/twenty/blob/v0.50.0/packages/twenty-docker/docker-compose.yml) - -### v0.43.0 to v0.44.0 - -Upgrade your Twenty instance to use v0.44.0 image - -``` -yarn database:migrate:prod -yarn command:prod upgrade -``` - -### v0.42.0 to v0.43.0 - -Upgrade your Twenty instance to use v0.43.0 image - -``` -yarn database:migrate:prod -yarn command:prod upgrade -``` - -In this version, we have also switched to postgres:16 image in docker-compose.yml. - -#### (Option 1) Database migration - -Keeping the existing postgres-spilo image is fine, but you will have to freeze the version in your docker-compose.yml to be 0.43.0. - -#### (Option 2) Database migration - -If you want to migrate your database to the new postgres:16 image, please follow these steps: - -1. Dump your database from the old postgres-spilo container - -``` -docker exec -it twenty-db-1 sh -pg_dump -U {YOUR_POSTGRES_USER} -d {YOUR_POSTGRES_DB} > databases_backup.sql -exit -docker cp twenty-db-1:/home/postgres/databases_backup.sql . -``` - -Make sure your dump file is not empty. - -2. Upgrade your docker-compose.yml to use postgres:16 image as in the [docker-compose.yml](https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml) file. - -3. Restore the database to the new postgres:16 container - -``` -docker cp databases_backup.sql twenty-db-1:/databases_backup.sql -docker exec -it twenty-db-1 sh -psql -U {YOUR_POSTGRES_USER} -d {YOUR_POSTGRES_DB} -f databases_backup.sql -exit -``` - -### v0.41.0 to v0.42.0 - -Upgrade your Twenty instance to use v0.42.0 image - -``` -yarn database:migrate:prod -yarn command:prod upgrade-0.42 -``` - -**Environment Variables** - -- Removed: `FRONT_PORT`, `FRONT_PROTOCOL`, `FRONT_DOMAIN`, `PORT` -- Added: `FRONTEND_URL`, `NODE_PORT`, `MAX_NUMBER_OF_WORKSPACES_DELETED_PER_EXECUTION`, `MESSAGING_PROVIDER_MICROSOFT_ENABLED`, `CALENDAR_PROVIDER_MICROSOFT_ENABLED`, `IS_MICROSOFT_SYNC_ENABLED` - -### v0.40.0 to v0.41.0 - -Upgrade your Twenty instance to use v0.41.0 image - -``` -yarn database:migrate:prod -yarn command:prod upgrade-0.41 -``` - -**Environment Variables** - -- Removed: `AUTH_MICROSOFT_TENANT_ID` - - -### v0.35.0 to v0.40.0 - -Upgrade your Twenty instance to use v0.40.0 image - -``` -yarn database:migrate:prod -yarn command:prod upgrade-0.40 -``` - -**Environment Variables** - -- Added: `IS_EMAIL_VERIFICATION_REQUIRED`, `EMAIL_VERIFICATION_TOKEN_EXPIRES_IN`, `WORKFLOW_EXEC_THROTTLE_LIMIT`, `WORKFLOW_EXEC_THROTTLE_TTL` - -### v0.34.0 to v0.35.0 - -Upgrade your Twenty instance to use v0.35.0 image - -``` -yarn database:migrate:prod -yarn command:prod upgrade-0.35 -``` - -The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas) -The `yarn command:prod upgrade-0.35` takes care of the data migration of all workspaces. - -**Environment Variables** - -- We replaced `ENABLE_DB_MIGRATIONS` with `DISABLE_DB_MIGRATIONS` (default value is now `false`, you probably don't have to set anything) - -### v0.33.0 to v0.34.0 - -Upgrade your Twenty instance to use v0.34.0 image - -``` -yarn database:migrate:prod -yarn command:prod upgrade-0.34 -``` - -The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas) -The `yarn command:prod upgrade-0.34` takes care of the data migration of all workspaces. - -**Environment Variables** - -- Removed: `FRONT_BASE_URL` -- Added: `FRONT_DOMAIN`, `FRONT_PROTOCOL`, `FRONT_PORT` - -We have updated the way we handle the frontend URL. -You can now set the frontend URL using the `FRONT_DOMAIN`, `FRONT_PROTOCOL` and `FRONT_PORT` variables. -If FRONT_DOMAIN is not set, the frontend URL will fall back to `SERVER_URL`. - -### v0.32.0 to v0.33.0 - -Upgrade your Twenty instance to use v0.33.0 image - -``` -yarn command:prod cache:flush -yarn database:migrate:prod -yarn command:prod upgrade-0.33 -``` - -The `yarn command:prod cache:flush` command will flush the Redis cache. -The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas) -The `yarn command:prod upgrade-0.33` takes care of the data migration of all workspaces. - -Starting from this version, twenty-postgres image for DB became deprecated and twenty-postgres-spilo is used instead. -If you want to keep using twenty-postgres image, simply replace `twentycrm/twenty-postgres:${TAG}` with `twentycrm/twenty-postgres` in docker-compose.yml. - -### v0.31.0 to v0.32.0 - -Upgrade your Twenty instance to use v0.32.0 image - -**Schema and data migration** -``` -yarn database:migrate:prod -yarn command:prod upgrade-0.32 -``` - -The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas) -The `yarn command:prod upgrade-0.32` takes care of the data migration of all workspaces. - -**Environment Variables** - -We have updated the way we handle the Redis connection. - -- Removed: `REDIS_HOST`, `REDIS_PORT`, `REDIS_USERNAME`, `REDIS_PASSWORD` -- Added: `REDIS_URL` - -Update your `.env` file to use the new `REDIS_URL` variable instead of the individual Redis connection parameters. - -We have also simplified the way we handle the JWT tokens. - -- Removed: `ACCESS_TOKEN_SECRET`, `LOGIN_TOKEN_SECRET`, `REFRESH_TOKEN_SECRET`, `FILE_TOKEN_SECRET` -- Added: `APP_SECRET` - -Update your `.env` file to use the new `APP_SECRET` variable instead of the individual tokens secrets (you can use the same secret as before or generate a new random string) - -**Connected Account** - -If you are using connected account to synchronize your Google emails and calendars, you will need to activate the [People API](https://developers.google.com/people) on your Google Admin console. - - -### v0.30.0 to v0.31.0 - -Upgrade your Twenty instance to use v0.31.0 image - -**Schema and data migration**: -``` -yarn database:migrate:prod -yarn command:prod upgrade-0.31 -``` - -The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas) -The `yarn command:prod upgrade-0.31` takes care of the data migration of all workspaces. - -### v0.24.0 to v0.30.0 - -Upgrade your Twenty instance to use v0.30.0 image - -**Breaking change**: -To enhance performances, Twenty now requires redis cache to be configured. We have updated our [docker-compose.yml](https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/docker-compose.yml) to reflect this. -Make sure to update your configuration and to update your environment variables accordingly: -``` -REDIS_HOST={your-redis-host} -REDIS_PORT={your-redis-port} -CACHE_STORAGE_TYPE=redis -``` - -**Schema and data migration**: -``` -yarn database:migrate:prod -yarn command:prod upgrade-0.30 -``` - -The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas) -The `yarn command:prod upgrade-0.30` takes care of the data migration of all workspaces. - -### v0.23.0 to v0.24.0 - -Upgrade your Twenty instance to use v0.24.0 image - -Run the following commands: - -``` -yarn database:migrate:prod -yarn command:prod upgrade-0.24 -``` - -The `yarn database:migrate:prod` command will apply the migrations to the database structure (core and metadata schemas) -The `yarn command:prod upgrade-0.24` takes care of the data migration of all workspaces. - -### v0.22.0 to v0.23.0 - -Upgrade your Twenty instance to use v0.23.0 image - -Run the following commands: - -``` -yarn database:migrate:prod -yarn command:prod upgrade-0.23 -``` - -The `yarn database:migrate:prod` command will apply the migrations to the Database. -The `yarn command:prod upgrade-0.23` takes care of the data migration, including transferring activities to tasks/notes. - -### v0.21.0 to v0.22.0 - -Upgrade your Twenty instance to use v0.22.0 image - -Run the following commands: - -``` -yarn database:migrate:prod -yarn command:prod workspace:sync-metadata -f -yarn command:prod upgrade-0.22 -``` - -The `yarn database:migrate:prod` command will apply the migrations to the Database. -The `yarn command:prod workspace:sync-metadata -f` command will sync the definition of standard objects to the metadata tables and apply to required migrations to existing workspaces. -The `yarn command:prod upgrade-0.22` command will apply specific data transformations to adapt to the new object defaultRequestInstrumentationOptions. - - +## After v1.21 +We know support sequential upgrades. You don't need to go through each version one by one. +## Before v1.21 +Make sure to go through every major tagged version when upgrading (upgrade v1.6.x to v.7.y, then v.7.y to v.8.z, etc.). diff --git a/packages/twenty-docs/docs.json b/packages/twenty-docs/docs.json index 48cc9415ac..1e90a6bc50 100644 --- a/packages/twenty-docs/docs.json +++ b/packages/twenty-docs/docs.json @@ -18,7 +18,7 @@ "navbar": { "primary": { "type": "button", - "label": "Get Started", + "label": "Try Twenty", "href": "https://app.twenty.com/welcome" } }, @@ -35,30 +35,39 @@ { "language": "en", "tabs": [ + { + "tab": "Getting Started", + "groups": [ + { + "group": "Welcome", + "pages": [ + "getting-started/introduction", + "getting-started/key-features", + "getting-started/quickstart" + ] + }, + { + "group": "Core Concepts", + "pages": [ + "getting-started/core-concepts/data-model", + "getting-started/core-concepts/layout", + "getting-started/core-concepts/workflows", + "getting-started/core-concepts/calendar-and-email", + "getting-started/core-concepts/ai", + "getting-started/core-concepts/apps", + "getting-started/core-concepts/dashboards", + "getting-started/core-concepts/glossary" + ] + } + ] + }, { "tab": "User Guide", "groups": [ { - "group": "Discover Twenty", - "icon": "rocket", + "group": "Overview", "pages": [ - "user-guide/introduction", - { - "group": "Capabilities", - "pages": [ - "user-guide/getting-started/capabilities/what-is-twenty", - "user-guide/getting-started/capabilities/implementation-services", - "user-guide/getting-started/capabilities/glossary" - ] - }, - { - "group": "How-Tos", - "pages": [ - "user-guide/getting-started/how-tos/create-workspace", - "user-guide/getting-started/how-tos/navigate-around-twenty", - "user-guide/getting-started/how-tos/configure-your-workspace" - ] - } + "user-guide/introduction" ] }, { @@ -67,7 +76,7 @@ "pages": [ "user-guide/data-model/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "user-guide/data-model/capabilities/objects", "user-guide/data-model/capabilities/fields", @@ -93,7 +102,7 @@ "pages": [ "user-guide/data-migration/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "user-guide/data-migration/capabilities/file-formats", "user-guide/data-migration/capabilities/field-mapping", @@ -125,7 +134,7 @@ "pages": [ "user-guide/calendar-emails/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "user-guide/calendar-emails/capabilities/mailbox", "user-guide/calendar-emails/capabilities/calendar" @@ -150,7 +159,7 @@ "pages": [ "user-guide/workflows/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "user-guide/workflows/capabilities/workflow-triggers", "user-guide/workflows/capabilities/workflow-actions", @@ -213,7 +222,7 @@ "pages": [ "user-guide/ai/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "user-guide/ai/capabilities/ai-chatbot", "user-guide/ai/capabilities/ai-agents", @@ -229,19 +238,26 @@ ] }, { - "group": "Views & Pipelines", - "icon": "table", + "group": "Layout", + "icon": "table-columns", "pages": [ - "user-guide/views-pipelines/overview", + "user-guide/layout/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ - "user-guide/views-pipelines/capabilities/table-views", - "user-guide/views-pipelines/capabilities/kanban-views", - "user-guide/views-pipelines/capabilities/calendar-view", - "user-guide/views-pipelines/capabilities/filters-and-sorting", - "user-guide/views-pipelines/capabilities/fields-and-columns", - "user-guide/views-pipelines/capabilities/view-settings" + "user-guide/layout/capabilities/navigation", + { + "group": "Views", + "pages": [ + "user-guide/views-pipelines/capabilities/table-views", + "user-guide/views-pipelines/capabilities/kanban-views", + "user-guide/views-pipelines/capabilities/calendar-view", + "user-guide/views-pipelines/capabilities/filters-and-sorting", + "user-guide/views-pipelines/capabilities/fields-and-columns", + "user-guide/views-pipelines/capabilities/view-settings" + ] + }, + "user-guide/layout/capabilities/record-pages" ] }, { @@ -264,7 +280,7 @@ "pages": [ "user-guide/dashboards/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "user-guide/dashboards/capabilities/dashboards", "user-guide/dashboards/capabilities/widgets", @@ -286,7 +302,7 @@ "pages": [ "user-guide/permissions-access/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "user-guide/permissions-access/capabilities/permissions", "user-guide/permissions-access/capabilities/sso-configuration" @@ -306,7 +322,7 @@ "pages": [ "user-guide/billing/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "user-guide/billing/capabilities/pricing-plans", "user-guide/billing/capabilities/credits" @@ -326,7 +342,7 @@ "pages": [ "user-guide/settings/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "user-guide/settings/capabilities/workspace-settings", "user-guide/settings/capabilities/member-management", @@ -350,129 +366,49 @@ "tab": "Developers", "groups": [ { - "group": "Developers", + "group": "Overview", "pages": [ "developers/introduction" ] }, { - "group": "Extend", - "icon": "plug", + "group": "Apps", + "pages": [ + "developers/extend/apps/getting-started", + "developers/extend/apps/building", + "developers/extend/apps/data-model", + "developers/extend/apps/logic-functions", + "developers/extend/apps/front-components", + "developers/extend/apps/layout", + "developers/extend/apps/skills-and-agents", + "developers/extend/apps/cli-and-testing", + "developers/extend/apps/publishing" + ] + }, + { + "group": "API", "pages": [ "developers/extend/api", "developers/extend/webhooks", - { - "group": "Apps", - "pages": [ - "developers/extend/apps/getting-started", - "developers/extend/apps/building", - "developers/extend/apps/publishing" - ] - } + "developers/extend/oauth" ] }, { "group": "Self-Host", - "icon": "desktop", "pages": [ - "developers/self-host/self-host", - { - "group": "Capabilities", - "pages": [ - "developers/self-host/capabilities/docker-compose", - "developers/self-host/capabilities/setup", - "developers/self-host/capabilities/upgrade-guide", - "developers/self-host/capabilities/cloud-providers", - "developers/self-host/capabilities/troubleshooting" - ] - } + "developers/self-host/capabilities/docker-compose", + "developers/self-host/capabilities/setup", + "developers/self-host/capabilities/upgrade-guide", + "developers/self-host/capabilities/cloud-providers", + "developers/self-host/capabilities/troubleshooting" ] }, { "group": "Contribute", - "icon": "github", "pages": [ - "developers/contribute/contribute", - { - "group": "Capabilities", - "pages": [ - "developers/contribute/capabilities/local-setup", - "developers/contribute/capabilities/bug-and-requests", - { - "group": "Frontend Development", - "pages": [ - "developers/contribute/capabilities/frontend-development/storybook", - { - "group": "Twenty UI", - "pages": [ - "twenty-ui/introduction", - { - "group": "Display", - "pages": [ - "twenty-ui/display/checkmark", - "twenty-ui/display/chip", - "twenty-ui/display/icons", - "twenty-ui/display/soon-pill", - "twenty-ui/display/tag", - "twenty-ui/display/app-tooltip" - ] - }, - { - "group": "Feedback", - "pages": [ - "twenty-ui/progress-bar" - ] - }, - { - "group": "Input", - "pages": [ - "twenty-ui/input/buttons", - "twenty-ui/input/color-scheme", - "twenty-ui/input/text", - "twenty-ui/input/checkbox", - "twenty-ui/input/icon-picker", - "twenty-ui/input/image-input", - "twenty-ui/input/radio", - "twenty-ui/input/select", - "twenty-ui/input/toggle", - "twenty-ui/input/block-editor" - ] - }, - { - "group": "Navigation", - "pages": [ - "twenty-ui/navigation", - "twenty-ui/navigation/breadcrumb", - "twenty-ui/navigation/links", - "twenty-ui/navigation/menu-item", - "twenty-ui/navigation/navigation-bar", - "twenty-ui/navigation/step-bar" - ] - } - ] - }, - "developers/contribute/capabilities/frontend-development/frontend-commands", - "developers/contribute/capabilities/frontend-development/work-with-figma", - "developers/contribute/capabilities/frontend-development/best-practices-front", - "developers/contribute/capabilities/frontend-development/style-guide", - "developers/contribute/capabilities/frontend-development/folder-architecture-front", - "developers/contribute/capabilities/frontend-development/hotkeys" - ] - }, - { - "group": "Backend Development", - "pages": [ - "developers/contribute/capabilities/backend-development/server-commands", - "developers/contribute/capabilities/backend-development/feature-flags", - "developers/contribute/capabilities/backend-development/folder-architecture-server", - "developers/contribute/capabilities/backend-development/zapier", - "developers/contribute/capabilities/backend-development/best-practices-server", - "developers/contribute/capabilities/backend-development/custom-objects", - "developers/contribute/capabilities/backend-development/queue" - ] - } - ] - } + "developers/contribute/capabilities/local-setup", + "developers/contribute/commands", + "developers/contribute/style-guide" ] } ] @@ -482,30 +418,39 @@ { "language": "fr", "tabs": [ + { + "tab": "Getting Started", + "groups": [ + { + "group": "Welcome", + "pages": [ + "l/fr/getting-started/introduction", + "l/fr/getting-started/key-features", + "l/fr/getting-started/quickstart" + ] + }, + { + "group": "Core Concepts", + "pages": [ + "l/fr/getting-started/core-concepts/data-model", + "l/fr/getting-started/core-concepts/layout", + "l/fr/getting-started/core-concepts/workflows", + "l/fr/getting-started/core-concepts/calendar-and-email", + "l/fr/getting-started/core-concepts/ai", + "l/fr/getting-started/core-concepts/apps", + "l/fr/getting-started/core-concepts/dashboards", + "l/fr/getting-started/core-concepts/glossary" + ] + } + ] + }, { "tab": "Guide de l'utilisateur", "groups": [ { - "group": "Découvrez Twenty", - "icon": "rocket", + "group": "Overview", "pages": [ - "l/fr/user-guide/introduction", - { - "group": "Capacités", - "pages": [ - "l/fr/user-guide/getting-started/capabilities/what-is-twenty", - "l/fr/user-guide/getting-started/capabilities/implementation-services", - "l/fr/user-guide/getting-started/capabilities/glossary" - ] - }, - { - "group": "Guides pratiques", - "pages": [ - "l/fr/user-guide/getting-started/how-tos/create-workspace", - "l/fr/user-guide/getting-started/how-tos/navigate-around-twenty", - "l/fr/user-guide/getting-started/how-tos/configure-your-workspace" - ] - } + "l/fr/user-guide/introduction" ] }, { @@ -514,7 +459,7 @@ "pages": [ "l/fr/user-guide/data-model/overview", { - "group": "Capacités", + "group": "Reference", "pages": [ "l/fr/user-guide/data-model/capabilities/objects", "l/fr/user-guide/data-model/capabilities/fields", @@ -540,7 +485,7 @@ "pages": [ "l/fr/user-guide/data-migration/overview", { - "group": "Capacités", + "group": "Reference", "pages": [ "l/fr/user-guide/data-migration/capabilities/file-formats", "l/fr/user-guide/data-migration/capabilities/field-mapping", @@ -572,7 +517,7 @@ "pages": [ "l/fr/user-guide/calendar-emails/overview", { - "group": "Capacités", + "group": "Reference", "pages": [ "l/fr/user-guide/calendar-emails/capabilities/mailbox", "l/fr/user-guide/calendar-emails/capabilities/calendar" @@ -597,7 +542,7 @@ "pages": [ "l/fr/user-guide/workflows/overview", { - "group": "Capacités", + "group": "Reference", "pages": [ "l/fr/user-guide/workflows/capabilities/workflow-triggers", "l/fr/user-guide/workflows/capabilities/workflow-actions", @@ -660,7 +605,7 @@ "pages": [ "l/fr/user-guide/ai/overview", { - "group": "Capacités", + "group": "Reference", "pages": [ "l/fr/user-guide/ai/capabilities/ai-chatbot", "l/fr/user-guide/ai/capabilities/ai-agents", @@ -676,23 +621,30 @@ ] }, { - "group": "Vues et pipelines", - "icon": "table", + "group": "Layout", + "icon": "table-columns", "pages": [ - "l/fr/user-guide/views-pipelines/overview", + "l/fr/user-guide/layout/overview", { - "group": "Capacités", + "group": "Reference", "pages": [ - "l/fr/user-guide/views-pipelines/capabilities/table-views", - "l/fr/user-guide/views-pipelines/capabilities/kanban-views", - "l/fr/user-guide/views-pipelines/capabilities/calendar-view", - "l/fr/user-guide/views-pipelines/capabilities/filters-and-sorting", - "l/fr/user-guide/views-pipelines/capabilities/fields-and-columns", - "l/fr/user-guide/views-pipelines/capabilities/view-settings" + "l/fr/user-guide/layout/capabilities/navigation", + { + "group": "Views", + "pages": [ + "l/fr/user-guide/views-pipelines/capabilities/table-views", + "l/fr/user-guide/views-pipelines/capabilities/kanban-views", + "l/fr/user-guide/views-pipelines/capabilities/calendar-view", + "l/fr/user-guide/views-pipelines/capabilities/filters-and-sorting", + "l/fr/user-guide/views-pipelines/capabilities/fields-and-columns", + "l/fr/user-guide/views-pipelines/capabilities/view-settings" + ] + }, + "l/fr/user-guide/layout/capabilities/record-pages" ] }, { - "group": "Guides pratiques", + "group": "How-Tos", "pages": [ "l/fr/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping", "l/fr/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects", @@ -711,7 +663,7 @@ "pages": [ "l/fr/user-guide/dashboards/overview", { - "group": "Capacités", + "group": "Reference", "pages": [ "l/fr/user-guide/dashboards/capabilities/dashboards", "l/fr/user-guide/dashboards/capabilities/widgets", @@ -733,7 +685,7 @@ "pages": [ "l/fr/user-guide/permissions-access/overview", { - "group": "Capacités", + "group": "Reference", "pages": [ "l/fr/user-guide/permissions-access/capabilities/permissions", "l/fr/user-guide/permissions-access/capabilities/sso-configuration" @@ -753,7 +705,7 @@ "pages": [ "l/fr/user-guide/billing/overview", { - "group": "Capacités", + "group": "Reference", "pages": [ "l/fr/user-guide/billing/capabilities/pricing-plans", "l/fr/user-guide/billing/capabilities/credits" @@ -773,7 +725,7 @@ "pages": [ "l/fr/user-guide/settings/overview", { - "group": "Capacités", + "group": "Reference", "pages": [ "l/fr/user-guide/settings/capabilities/workspace-settings", "l/fr/user-guide/settings/capabilities/member-management", @@ -797,129 +749,49 @@ "tab": "Développeurs", "groups": [ { - "group": "Développeurs", + "group": "Overview", "pages": [ "l/fr/developers/introduction" ] }, { - "group": "Étendre", - "icon": "plug", + "group": "Apps", + "pages": [ + "l/fr/developers/extend/apps/getting-started", + "l/fr/developers/extend/apps/building", + "l/fr/developers/extend/apps/data-model", + "l/fr/developers/extend/apps/logic-functions", + "l/fr/developers/extend/apps/front-components", + "l/fr/developers/extend/apps/layout", + "l/fr/developers/extend/apps/skills-and-agents", + "l/fr/developers/extend/apps/cli-and-testing", + "l/fr/developers/extend/apps/publishing" + ] + }, + { + "group": "API", "pages": [ "l/fr/developers/extend/api", "l/fr/developers/extend/webhooks", - { - "group": "Apps", - "pages": [ - "l/fr/developers/extend/apps/getting-started", - "l/fr/developers/extend/apps/building", - "l/fr/developers/extend/apps/publishing" - ] - } + "l/fr/developers/extend/oauth" ] }, { "group": "Auto-hébergement", - "icon": "desktop", "pages": [ - "l/fr/developers/self-host/self-host", - { - "group": "Capacités", - "pages": [ - "l/fr/developers/self-host/capabilities/docker-compose", - "l/fr/developers/self-host/capabilities/setup", - "l/fr/developers/self-host/capabilities/upgrade-guide", - "l/fr/developers/self-host/capabilities/cloud-providers", - "l/fr/developers/self-host/capabilities/troubleshooting" - ] - } + "l/fr/developers/self-host/capabilities/docker-compose", + "l/fr/developers/self-host/capabilities/setup", + "l/fr/developers/self-host/capabilities/upgrade-guide", + "l/fr/developers/self-host/capabilities/cloud-providers", + "l/fr/developers/self-host/capabilities/troubleshooting" ] }, { "group": "Contribuer", - "icon": "github", "pages": [ - "l/fr/developers/contribute/contribute", - { - "group": "Capacités", - "pages": [ - "l/fr/developers/contribute/capabilities/local-setup", - "l/fr/developers/contribute/capabilities/bug-and-requests", - { - "group": "Développement frontend", - "pages": [ - "l/fr/developers/contribute/capabilities/frontend-development/storybook", - { - "group": "Twenty UI", - "pages": [ - "l/fr/twenty-ui/introduction", - { - "group": "Afficher", - "pages": [ - "l/fr/twenty-ui/display/checkmark", - "l/fr/twenty-ui/display/chip", - "l/fr/twenty-ui/display/icons", - "l/fr/twenty-ui/display/soon-pill", - "l/fr/twenty-ui/display/tag", - "l/fr/twenty-ui/display/app-tooltip" - ] - }, - { - "group": "Retour d'information", - "pages": [ - "l/fr/twenty-ui/progress-bar" - ] - }, - { - "group": "Entrée ", - "pages": [ - "l/fr/twenty-ui/input/buttons", - "l/fr/twenty-ui/input/color-scheme", - "l/fr/twenty-ui/input/text", - "l/fr/twenty-ui/input/checkbox", - "l/fr/twenty-ui/input/icon-picker", - "l/fr/twenty-ui/input/image-input", - "l/fr/twenty-ui/input/radio", - "l/fr/twenty-ui/input/select", - "l/fr/twenty-ui/input/toggle", - "l/fr/twenty-ui/input/block-editor" - ] - }, - { - "group": "Navigation", - "pages": [ - "l/fr/twenty-ui/navigation", - "l/fr/twenty-ui/navigation/breadcrumb", - "l/fr/twenty-ui/navigation/links", - "l/fr/twenty-ui/navigation/menu-item", - "l/fr/twenty-ui/navigation/navigation-bar", - "l/fr/twenty-ui/navigation/step-bar" - ] - } - ] - }, - "l/fr/developers/contribute/capabilities/frontend-development/frontend-commands", - "l/fr/developers/contribute/capabilities/frontend-development/work-with-figma", - "l/fr/developers/contribute/capabilities/frontend-development/best-practices-front", - "l/fr/developers/contribute/capabilities/frontend-development/style-guide", - "l/fr/developers/contribute/capabilities/frontend-development/folder-architecture-front", - "l/fr/developers/contribute/capabilities/frontend-development/hotkeys" - ] - }, - { - "group": "Développement backend", - "pages": [ - "l/fr/developers/contribute/capabilities/backend-development/server-commands", - "l/fr/developers/contribute/capabilities/backend-development/feature-flags", - "l/fr/developers/contribute/capabilities/backend-development/folder-architecture-server", - "l/fr/developers/contribute/capabilities/backend-development/zapier", - "l/fr/developers/contribute/capabilities/backend-development/best-practices-server", - "l/fr/developers/contribute/capabilities/backend-development/custom-objects", - "l/fr/developers/contribute/capabilities/backend-development/queue" - ] - } - ] - } + "l/fr/developers/contribute/capabilities/local-setup", + "l/fr/developers/contribute/commands", + "l/fr/developers/contribute/style-guide" ] } ] @@ -929,30 +801,39 @@ { "language": "ar", "tabs": [ + { + "tab": "Getting Started", + "groups": [ + { + "group": "Welcome", + "pages": [ + "l/ar/getting-started/introduction", + "l/ar/getting-started/key-features", + "l/ar/getting-started/quickstart" + ] + }, + { + "group": "Core Concepts", + "pages": [ + "l/ar/getting-started/core-concepts/data-model", + "l/ar/getting-started/core-concepts/layout", + "l/ar/getting-started/core-concepts/workflows", + "l/ar/getting-started/core-concepts/calendar-and-email", + "l/ar/getting-started/core-concepts/ai", + "l/ar/getting-started/core-concepts/apps", + "l/ar/getting-started/core-concepts/dashboards", + "l/ar/getting-started/core-concepts/glossary" + ] + } + ] + }, { "tab": "دليل المستخدم", "groups": [ { - "group": "اكتشف Twenty", - "icon": "rocket", + "group": "Overview", "pages": [ - "l/ar/user-guide/introduction", - { - "group": "القدرات", - "pages": [ - "l/ar/user-guide/getting-started/capabilities/what-is-twenty", - "l/ar/user-guide/getting-started/capabilities/implementation-services", - "l/ar/user-guide/getting-started/capabilities/glossary" - ] - }, - { - "group": "الإرشادات", - "pages": [ - "l/ar/user-guide/getting-started/how-tos/create-workspace", - "l/ar/user-guide/getting-started/how-tos/navigate-around-twenty", - "l/ar/user-guide/getting-started/how-tos/configure-your-workspace" - ] - } + "l/ar/user-guide/introduction" ] }, { @@ -961,7 +842,7 @@ "pages": [ "l/ar/user-guide/data-model/overview", { - "group": "القدرات", + "group": "Reference", "pages": [ "l/ar/user-guide/data-model/capabilities/objects", "l/ar/user-guide/data-model/capabilities/fields", @@ -987,7 +868,7 @@ "pages": [ "l/ar/user-guide/data-migration/overview", { - "group": "القدرات", + "group": "Reference", "pages": [ "l/ar/user-guide/data-migration/capabilities/file-formats", "l/ar/user-guide/data-migration/capabilities/field-mapping", @@ -1019,7 +900,7 @@ "pages": [ "l/ar/user-guide/calendar-emails/overview", { - "group": "القدرات", + "group": "Reference", "pages": [ "l/ar/user-guide/calendar-emails/capabilities/mailbox", "l/ar/user-guide/calendar-emails/capabilities/calendar" @@ -1044,7 +925,7 @@ "pages": [ "l/ar/user-guide/workflows/overview", { - "group": "القدرات", + "group": "Reference", "pages": [ "l/ar/user-guide/workflows/capabilities/workflow-triggers", "l/ar/user-guide/workflows/capabilities/workflow-actions", @@ -1107,7 +988,7 @@ "pages": [ "l/ar/user-guide/ai/overview", { - "group": "القدرات", + "group": "Reference", "pages": [ "l/ar/user-guide/ai/capabilities/ai-chatbot", "l/ar/user-guide/ai/capabilities/ai-agents", @@ -1123,23 +1004,30 @@ ] }, { - "group": "طرق العرض والمسارات", - "icon": "table", + "group": "Layout", + "icon": "table-columns", "pages": [ - "l/ar/user-guide/views-pipelines/overview", + "l/ar/user-guide/layout/overview", { - "group": "القدرات", + "group": "Reference", "pages": [ - "l/ar/user-guide/views-pipelines/capabilities/table-views", - "l/ar/user-guide/views-pipelines/capabilities/kanban-views", - "l/ar/user-guide/views-pipelines/capabilities/calendar-view", - "l/ar/user-guide/views-pipelines/capabilities/filters-and-sorting", - "l/ar/user-guide/views-pipelines/capabilities/fields-and-columns", - "l/ar/user-guide/views-pipelines/capabilities/view-settings" + "l/ar/user-guide/layout/capabilities/navigation", + { + "group": "Views", + "pages": [ + "l/ar/user-guide/views-pipelines/capabilities/table-views", + "l/ar/user-guide/views-pipelines/capabilities/kanban-views", + "l/ar/user-guide/views-pipelines/capabilities/calendar-view", + "l/ar/user-guide/views-pipelines/capabilities/filters-and-sorting", + "l/ar/user-guide/views-pipelines/capabilities/fields-and-columns", + "l/ar/user-guide/views-pipelines/capabilities/view-settings" + ] + }, + "l/ar/user-guide/layout/capabilities/record-pages" ] }, { - "group": "الإرشادات", + "group": "How-Tos", "pages": [ "l/ar/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping", "l/ar/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects", @@ -1158,7 +1046,7 @@ "pages": [ "l/ar/user-guide/dashboards/overview", { - "group": "القدرات", + "group": "Reference", "pages": [ "l/ar/user-guide/dashboards/capabilities/dashboards", "l/ar/user-guide/dashboards/capabilities/widgets", @@ -1180,7 +1068,7 @@ "pages": [ "l/ar/user-guide/permissions-access/overview", { - "group": "القدرات", + "group": "Reference", "pages": [ "l/ar/user-guide/permissions-access/capabilities/permissions", "l/ar/user-guide/permissions-access/capabilities/sso-configuration" @@ -1200,7 +1088,7 @@ "pages": [ "l/ar/user-guide/billing/overview", { - "group": "القدرات", + "group": "Reference", "pages": [ "l/ar/user-guide/billing/capabilities/pricing-plans", "l/ar/user-guide/billing/capabilities/credits" @@ -1220,7 +1108,7 @@ "pages": [ "l/ar/user-guide/settings/overview", { - "group": "القدرات", + "group": "Reference", "pages": [ "l/ar/user-guide/settings/capabilities/workspace-settings", "l/ar/user-guide/settings/capabilities/member-management", @@ -1244,129 +1132,49 @@ "tab": "المطورون", "groups": [ { - "group": "المطورون", + "group": "Overview", "pages": [ "l/ar/developers/introduction" ] }, { - "group": "التوسيع", - "icon": "plug", + "group": "التطبيقات", + "pages": [ + "l/ar/developers/extend/apps/getting-started", + "l/ar/developers/extend/apps/building", + "l/ar/developers/extend/apps/data-model", + "l/ar/developers/extend/apps/logic-functions", + "l/ar/developers/extend/apps/front-components", + "l/ar/developers/extend/apps/layout", + "l/ar/developers/extend/apps/skills-and-agents", + "l/ar/developers/extend/apps/cli-and-testing", + "l/ar/developers/extend/apps/publishing" + ] + }, + { + "group": "API", "pages": [ "l/ar/developers/extend/api", "l/ar/developers/extend/webhooks", - { - "group": "التطبيقات", - "pages": [ - "l/ar/developers/extend/apps/getting-started", - "l/ar/developers/extend/apps/building", - "l/ar/developers/extend/apps/publishing" - ] - } + "l/ar/developers/extend/oauth" ] }, { "group": "الاستضافة الذاتية", - "icon": "desktop", "pages": [ - "l/ar/developers/self-host/self-host", - { - "group": "القدرات", - "pages": [ - "l/ar/developers/self-host/capabilities/docker-compose", - "l/ar/developers/self-host/capabilities/setup", - "l/ar/developers/self-host/capabilities/upgrade-guide", - "l/ar/developers/self-host/capabilities/cloud-providers", - "l/ar/developers/self-host/capabilities/troubleshooting" - ] - } + "l/ar/developers/self-host/capabilities/docker-compose", + "l/ar/developers/self-host/capabilities/setup", + "l/ar/developers/self-host/capabilities/upgrade-guide", + "l/ar/developers/self-host/capabilities/cloud-providers", + "l/ar/developers/self-host/capabilities/troubleshooting" ] }, { "group": "المساهمة", - "icon": "github", "pages": [ - "l/ar/developers/contribute/contribute", - { - "group": "القدرات", - "pages": [ - "l/ar/developers/contribute/capabilities/local-setup", - "l/ar/developers/contribute/capabilities/bug-and-requests", - { - "group": "تطوير الواجهة الأمامية", - "pages": [ - "l/ar/developers/contribute/capabilities/frontend-development/storybook", - { - "group": "Twenty UI", - "pages": [ - "l/ar/twenty-ui/introduction", - { - "group": "عرض", - "pages": [ - "l/ar/twenty-ui/display/checkmark", - "l/ar/twenty-ui/display/chip", - "l/ar/twenty-ui/display/icons", - "l/ar/twenty-ui/display/soon-pill", - "l/ar/twenty-ui/display/tag", - "l/ar/twenty-ui/display/app-tooltip" - ] - }, - { - "group": "التغذية الراجعة", - "pages": [ - "l/ar/twenty-ui/progress-bar" - ] - }, - { - "group": "إدخال", - "pages": [ - "l/ar/twenty-ui/input/buttons", - "l/ar/twenty-ui/input/color-scheme", - "l/ar/twenty-ui/input/text", - "l/ar/twenty-ui/input/checkbox", - "l/ar/twenty-ui/input/icon-picker", - "l/ar/twenty-ui/input/image-input", - "l/ar/twenty-ui/input/radio", - "l/ar/twenty-ui/input/select", - "l/ar/twenty-ui/input/toggle", - "l/ar/twenty-ui/input/block-editor" - ] - }, - { - "group": "التنقل", - "pages": [ - "l/ar/twenty-ui/navigation", - "l/ar/twenty-ui/navigation/breadcrumb", - "l/ar/twenty-ui/navigation/links", - "l/ar/twenty-ui/navigation/menu-item", - "l/ar/twenty-ui/navigation/navigation-bar", - "l/ar/twenty-ui/navigation/step-bar" - ] - } - ] - }, - "l/ar/developers/contribute/capabilities/frontend-development/frontend-commands", - "l/ar/developers/contribute/capabilities/frontend-development/work-with-figma", - "l/ar/developers/contribute/capabilities/frontend-development/best-practices-front", - "l/ar/developers/contribute/capabilities/frontend-development/style-guide", - "l/ar/developers/contribute/capabilities/frontend-development/folder-architecture-front", - "l/ar/developers/contribute/capabilities/frontend-development/hotkeys" - ] - }, - { - "group": "تطوير الواجهة الخلفية", - "pages": [ - "l/ar/developers/contribute/capabilities/backend-development/server-commands", - "l/ar/developers/contribute/capabilities/backend-development/feature-flags", - "l/ar/developers/contribute/capabilities/backend-development/folder-architecture-server", - "l/ar/developers/contribute/capabilities/backend-development/zapier", - "l/ar/developers/contribute/capabilities/backend-development/best-practices-server", - "l/ar/developers/contribute/capabilities/backend-development/custom-objects", - "l/ar/developers/contribute/capabilities/backend-development/queue" - ] - } - ] - } + "l/ar/developers/contribute/capabilities/local-setup", + "l/ar/developers/contribute/commands", + "l/ar/developers/contribute/style-guide" ] } ] @@ -1376,30 +1184,39 @@ { "language": "cs", "tabs": [ + { + "tab": "Getting Started", + "groups": [ + { + "group": "Welcome", + "pages": [ + "l/cs/getting-started/introduction", + "l/cs/getting-started/key-features", + "l/cs/getting-started/quickstart" + ] + }, + { + "group": "Core Concepts", + "pages": [ + "l/cs/getting-started/core-concepts/data-model", + "l/cs/getting-started/core-concepts/layout", + "l/cs/getting-started/core-concepts/workflows", + "l/cs/getting-started/core-concepts/calendar-and-email", + "l/cs/getting-started/core-concepts/ai", + "l/cs/getting-started/core-concepts/apps", + "l/cs/getting-started/core-concepts/dashboards", + "l/cs/getting-started/core-concepts/glossary" + ] + } + ] + }, { "tab": "Uživatelská příručka", "groups": [ { - "group": "Objevte Twenty", - "icon": "rocket", + "group": "Overview", "pages": [ - "l/cs/user-guide/introduction", - { - "group": "Možnosti", - "pages": [ - "l/cs/user-guide/getting-started/capabilities/what-is-twenty", - "l/cs/user-guide/getting-started/capabilities/implementation-services", - "l/cs/user-guide/getting-started/capabilities/glossary" - ] - }, - { - "group": "Návody", - "pages": [ - "l/cs/user-guide/getting-started/how-tos/create-workspace", - "l/cs/user-guide/getting-started/how-tos/navigate-around-twenty", - "l/cs/user-guide/getting-started/how-tos/configure-your-workspace" - ] - } + "l/cs/user-guide/introduction" ] }, { @@ -1408,7 +1225,7 @@ "pages": [ "l/cs/user-guide/data-model/overview", { - "group": "Možnosti", + "group": "Reference", "pages": [ "l/cs/user-guide/data-model/capabilities/objects", "l/cs/user-guide/data-model/capabilities/fields", @@ -1434,7 +1251,7 @@ "pages": [ "l/cs/user-guide/data-migration/overview", { - "group": "Možnosti", + "group": "Reference", "pages": [ "l/cs/user-guide/data-migration/capabilities/file-formats", "l/cs/user-guide/data-migration/capabilities/field-mapping", @@ -1466,7 +1283,7 @@ "pages": [ "l/cs/user-guide/calendar-emails/overview", { - "group": "Možnosti", + "group": "Reference", "pages": [ "l/cs/user-guide/calendar-emails/capabilities/mailbox", "l/cs/user-guide/calendar-emails/capabilities/calendar" @@ -1491,7 +1308,7 @@ "pages": [ "l/cs/user-guide/workflows/overview", { - "group": "Možnosti", + "group": "Reference", "pages": [ "l/cs/user-guide/workflows/capabilities/workflow-triggers", "l/cs/user-guide/workflows/capabilities/workflow-actions", @@ -1554,7 +1371,7 @@ "pages": [ "l/cs/user-guide/ai/overview", { - "group": "Možnosti", + "group": "Reference", "pages": [ "l/cs/user-guide/ai/capabilities/ai-chatbot", "l/cs/user-guide/ai/capabilities/ai-agents", @@ -1570,23 +1387,30 @@ ] }, { - "group": "Zobrazení a pipeline", - "icon": "table", + "group": "Layout", + "icon": "table-columns", "pages": [ - "l/cs/user-guide/views-pipelines/overview", + "l/cs/user-guide/layout/overview", { - "group": "Možnosti", + "group": "Reference", "pages": [ - "l/cs/user-guide/views-pipelines/capabilities/table-views", - "l/cs/user-guide/views-pipelines/capabilities/kanban-views", - "l/cs/user-guide/views-pipelines/capabilities/calendar-view", - "l/cs/user-guide/views-pipelines/capabilities/filters-and-sorting", - "l/cs/user-guide/views-pipelines/capabilities/fields-and-columns", - "l/cs/user-guide/views-pipelines/capabilities/view-settings" + "l/cs/user-guide/layout/capabilities/navigation", + { + "group": "Views", + "pages": [ + "l/cs/user-guide/views-pipelines/capabilities/table-views", + "l/cs/user-guide/views-pipelines/capabilities/kanban-views", + "l/cs/user-guide/views-pipelines/capabilities/calendar-view", + "l/cs/user-guide/views-pipelines/capabilities/filters-and-sorting", + "l/cs/user-guide/views-pipelines/capabilities/fields-and-columns", + "l/cs/user-guide/views-pipelines/capabilities/view-settings" + ] + }, + "l/cs/user-guide/layout/capabilities/record-pages" ] }, { - "group": "Návody", + "group": "How-Tos", "pages": [ "l/cs/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping", "l/cs/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects", @@ -1605,7 +1429,7 @@ "pages": [ "l/cs/user-guide/dashboards/overview", { - "group": "Možnosti", + "group": "Reference", "pages": [ "l/cs/user-guide/dashboards/capabilities/dashboards", "l/cs/user-guide/dashboards/capabilities/widgets", @@ -1627,7 +1451,7 @@ "pages": [ "l/cs/user-guide/permissions-access/overview", { - "group": "Možnosti", + "group": "Reference", "pages": [ "l/cs/user-guide/permissions-access/capabilities/permissions", "l/cs/user-guide/permissions-access/capabilities/sso-configuration" @@ -1647,7 +1471,7 @@ "pages": [ "l/cs/user-guide/billing/overview", { - "group": "Možnosti", + "group": "Reference", "pages": [ "l/cs/user-guide/billing/capabilities/pricing-plans", "l/cs/user-guide/billing/capabilities/credits" @@ -1667,7 +1491,7 @@ "pages": [ "l/cs/user-guide/settings/overview", { - "group": "Možnosti", + "group": "Reference", "pages": [ "l/cs/user-guide/settings/capabilities/workspace-settings", "l/cs/user-guide/settings/capabilities/member-management", @@ -1691,129 +1515,49 @@ "tab": "Vývojáři", "groups": [ { - "group": "Vývojáři", + "group": "Overview", "pages": [ "l/cs/developers/introduction" ] }, { - "group": "Rozšíření", - "icon": "plug", + "group": "Aplikace", + "pages": [ + "l/cs/developers/extend/apps/getting-started", + "l/cs/developers/extend/apps/building", + "l/cs/developers/extend/apps/data-model", + "l/cs/developers/extend/apps/logic-functions", + "l/cs/developers/extend/apps/front-components", + "l/cs/developers/extend/apps/layout", + "l/cs/developers/extend/apps/skills-and-agents", + "l/cs/developers/extend/apps/cli-and-testing", + "l/cs/developers/extend/apps/publishing" + ] + }, + { + "group": "API", "pages": [ "l/cs/developers/extend/api", "l/cs/developers/extend/webhooks", - { - "group": "Aplikace", - "pages": [ - "l/cs/developers/extend/apps/getting-started", - "l/cs/developers/extend/apps/building", - "l/cs/developers/extend/apps/publishing" - ] - } + "l/cs/developers/extend/oauth" ] }, { "group": "Vlastní hosting", - "icon": "desktop", "pages": [ - "l/cs/developers/self-host/self-host", - { - "group": "Možnosti", - "pages": [ - "l/cs/developers/self-host/capabilities/docker-compose", - "l/cs/developers/self-host/capabilities/setup", - "l/cs/developers/self-host/capabilities/upgrade-guide", - "l/cs/developers/self-host/capabilities/cloud-providers", - "l/cs/developers/self-host/capabilities/troubleshooting" - ] - } + "l/cs/developers/self-host/capabilities/docker-compose", + "l/cs/developers/self-host/capabilities/setup", + "l/cs/developers/self-host/capabilities/upgrade-guide", + "l/cs/developers/self-host/capabilities/cloud-providers", + "l/cs/developers/self-host/capabilities/troubleshooting" ] }, { "group": "Přispět", - "icon": "github", "pages": [ - "l/cs/developers/contribute/contribute", - { - "group": "Možnosti", - "pages": [ - "l/cs/developers/contribute/capabilities/local-setup", - "l/cs/developers/contribute/capabilities/bug-and-requests", - { - "group": "Vývoj frontendu", - "pages": [ - "l/cs/developers/contribute/capabilities/frontend-development/storybook", - { - "group": "Twenty UI", - "pages": [ - "l/cs/twenty-ui/introduction", - { - "group": "Zobrazit", - "pages": [ - "l/cs/twenty-ui/display/checkmark", - "l/cs/twenty-ui/display/chip", - "l/cs/twenty-ui/display/icons", - "l/cs/twenty-ui/display/soon-pill", - "l/cs/twenty-ui/display/tag", - "l/cs/twenty-ui/display/app-tooltip" - ] - }, - { - "group": "Zpětná vazba", - "pages": [ - "l/cs/twenty-ui/progress-bar" - ] - }, - { - "group": "Vstup", - "pages": [ - "l/cs/twenty-ui/input/buttons", - "l/cs/twenty-ui/input/color-scheme", - "l/cs/twenty-ui/input/text", - "l/cs/twenty-ui/input/checkbox", - "l/cs/twenty-ui/input/icon-picker", - "l/cs/twenty-ui/input/image-input", - "l/cs/twenty-ui/input/radio", - "l/cs/twenty-ui/input/select", - "l/cs/twenty-ui/input/toggle", - "l/cs/twenty-ui/input/block-editor" - ] - }, - { - "group": "Navigace", - "pages": [ - "l/cs/twenty-ui/navigation", - "l/cs/twenty-ui/navigation/breadcrumb", - "l/cs/twenty-ui/navigation/links", - "l/cs/twenty-ui/navigation/menu-item", - "l/cs/twenty-ui/navigation/navigation-bar", - "l/cs/twenty-ui/navigation/step-bar" - ] - } - ] - }, - "l/cs/developers/contribute/capabilities/frontend-development/frontend-commands", - "l/cs/developers/contribute/capabilities/frontend-development/work-with-figma", - "l/cs/developers/contribute/capabilities/frontend-development/best-practices-front", - "l/cs/developers/contribute/capabilities/frontend-development/style-guide", - "l/cs/developers/contribute/capabilities/frontend-development/folder-architecture-front", - "l/cs/developers/contribute/capabilities/frontend-development/hotkeys" - ] - }, - { - "group": "Vývoj backendu", - "pages": [ - "l/cs/developers/contribute/capabilities/backend-development/server-commands", - "l/cs/developers/contribute/capabilities/backend-development/feature-flags", - "l/cs/developers/contribute/capabilities/backend-development/folder-architecture-server", - "l/cs/developers/contribute/capabilities/backend-development/zapier", - "l/cs/developers/contribute/capabilities/backend-development/best-practices-server", - "l/cs/developers/contribute/capabilities/backend-development/custom-objects", - "l/cs/developers/contribute/capabilities/backend-development/queue" - ] - } - ] - } + "l/cs/developers/contribute/capabilities/local-setup", + "l/cs/developers/contribute/commands", + "l/cs/developers/contribute/style-guide" ] } ] @@ -1823,30 +1567,39 @@ { "language": "de", "tabs": [ + { + "tab": "Getting Started", + "groups": [ + { + "group": "Welcome", + "pages": [ + "l/de/getting-started/introduction", + "l/de/getting-started/key-features", + "l/de/getting-started/quickstart" + ] + }, + { + "group": "Core Concepts", + "pages": [ + "l/de/getting-started/core-concepts/data-model", + "l/de/getting-started/core-concepts/layout", + "l/de/getting-started/core-concepts/workflows", + "l/de/getting-started/core-concepts/calendar-and-email", + "l/de/getting-started/core-concepts/ai", + "l/de/getting-started/core-concepts/apps", + "l/de/getting-started/core-concepts/dashboards", + "l/de/getting-started/core-concepts/glossary" + ] + } + ] + }, { "tab": "Benutzerhandbuch", "groups": [ { - "group": "Entdecken Sie Twenty", - "icon": "rocket", + "group": "Overview", "pages": [ - "l/de/user-guide/introduction", - { - "group": "Funktionen", - "pages": [ - "l/de/user-guide/getting-started/capabilities/what-is-twenty", - "l/de/user-guide/getting-started/capabilities/implementation-services", - "l/de/user-guide/getting-started/capabilities/glossary" - ] - }, - { - "group": "Anleitungen", - "pages": [ - "l/de/user-guide/getting-started/how-tos/create-workspace", - "l/de/user-guide/getting-started/how-tos/navigate-around-twenty", - "l/de/user-guide/getting-started/how-tos/configure-your-workspace" - ] - } + "l/de/user-guide/introduction" ] }, { @@ -1855,7 +1608,7 @@ "pages": [ "l/de/user-guide/data-model/overview", { - "group": "Funktionen", + "group": "Reference", "pages": [ "l/de/user-guide/data-model/capabilities/objects", "l/de/user-guide/data-model/capabilities/fields", @@ -1881,7 +1634,7 @@ "pages": [ "l/de/user-guide/data-migration/overview", { - "group": "Funktionen", + "group": "Reference", "pages": [ "l/de/user-guide/data-migration/capabilities/file-formats", "l/de/user-guide/data-migration/capabilities/field-mapping", @@ -1913,7 +1666,7 @@ "pages": [ "l/de/user-guide/calendar-emails/overview", { - "group": "Funktionen", + "group": "Reference", "pages": [ "l/de/user-guide/calendar-emails/capabilities/mailbox", "l/de/user-guide/calendar-emails/capabilities/calendar" @@ -1938,7 +1691,7 @@ "pages": [ "l/de/user-guide/workflows/overview", { - "group": "Funktionen", + "group": "Reference", "pages": [ "l/de/user-guide/workflows/capabilities/workflow-triggers", "l/de/user-guide/workflows/capabilities/workflow-actions", @@ -2001,7 +1754,7 @@ "pages": [ "l/de/user-guide/ai/overview", { - "group": "Funktionen", + "group": "Reference", "pages": [ "l/de/user-guide/ai/capabilities/ai-chatbot", "l/de/user-guide/ai/capabilities/ai-agents", @@ -2017,23 +1770,30 @@ ] }, { - "group": "Ansichten & Pipelines", - "icon": "table", + "group": "Layout", + "icon": "table-columns", "pages": [ - "l/de/user-guide/views-pipelines/overview", + "l/de/user-guide/layout/overview", { - "group": "Funktionen", + "group": "Reference", "pages": [ - "l/de/user-guide/views-pipelines/capabilities/table-views", - "l/de/user-guide/views-pipelines/capabilities/kanban-views", - "l/de/user-guide/views-pipelines/capabilities/calendar-view", - "l/de/user-guide/views-pipelines/capabilities/filters-and-sorting", - "l/de/user-guide/views-pipelines/capabilities/fields-and-columns", - "l/de/user-guide/views-pipelines/capabilities/view-settings" + "l/de/user-guide/layout/capabilities/navigation", + { + "group": "Views", + "pages": [ + "l/de/user-guide/views-pipelines/capabilities/table-views", + "l/de/user-guide/views-pipelines/capabilities/kanban-views", + "l/de/user-guide/views-pipelines/capabilities/calendar-view", + "l/de/user-guide/views-pipelines/capabilities/filters-and-sorting", + "l/de/user-guide/views-pipelines/capabilities/fields-and-columns", + "l/de/user-guide/views-pipelines/capabilities/view-settings" + ] + }, + "l/de/user-guide/layout/capabilities/record-pages" ] }, { - "group": "Anleitungen", + "group": "How-Tos", "pages": [ "l/de/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping", "l/de/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects", @@ -2052,7 +1812,7 @@ "pages": [ "l/de/user-guide/dashboards/overview", { - "group": "Funktionen", + "group": "Reference", "pages": [ "l/de/user-guide/dashboards/capabilities/dashboards", "l/de/user-guide/dashboards/capabilities/widgets", @@ -2074,7 +1834,7 @@ "pages": [ "l/de/user-guide/permissions-access/overview", { - "group": "Funktionen", + "group": "Reference", "pages": [ "l/de/user-guide/permissions-access/capabilities/permissions", "l/de/user-guide/permissions-access/capabilities/sso-configuration" @@ -2094,7 +1854,7 @@ "pages": [ "l/de/user-guide/billing/overview", { - "group": "Funktionen", + "group": "Reference", "pages": [ "l/de/user-guide/billing/capabilities/pricing-plans", "l/de/user-guide/billing/capabilities/credits" @@ -2114,7 +1874,7 @@ "pages": [ "l/de/user-guide/settings/overview", { - "group": "Funktionen", + "group": "Reference", "pages": [ "l/de/user-guide/settings/capabilities/workspace-settings", "l/de/user-guide/settings/capabilities/member-management", @@ -2138,129 +1898,49 @@ "tab": "Entwickler", "groups": [ { - "group": "Entwickler", + "group": "Overview", "pages": [ "l/de/developers/introduction" ] }, { - "group": "Erweitern", - "icon": "plug", + "group": "Apps", + "pages": [ + "l/de/developers/extend/apps/getting-started", + "l/de/developers/extend/apps/building", + "l/de/developers/extend/apps/data-model", + "l/de/developers/extend/apps/logic-functions", + "l/de/developers/extend/apps/front-components", + "l/de/developers/extend/apps/layout", + "l/de/developers/extend/apps/skills-and-agents", + "l/de/developers/extend/apps/cli-and-testing", + "l/de/developers/extend/apps/publishing" + ] + }, + { + "group": "API", "pages": [ "l/de/developers/extend/api", "l/de/developers/extend/webhooks", - { - "group": "Apps", - "pages": [ - "l/de/developers/extend/apps/getting-started", - "l/de/developers/extend/apps/building", - "l/de/developers/extend/apps/publishing" - ] - } + "l/de/developers/extend/oauth" ] }, { "group": "Selbsthosting", - "icon": "desktop", "pages": [ - "l/de/developers/self-host/self-host", - { - "group": "Funktionen", - "pages": [ - "l/de/developers/self-host/capabilities/docker-compose", - "l/de/developers/self-host/capabilities/setup", - "l/de/developers/self-host/capabilities/upgrade-guide", - "l/de/developers/self-host/capabilities/cloud-providers", - "l/de/developers/self-host/capabilities/troubleshooting" - ] - } + "l/de/developers/self-host/capabilities/docker-compose", + "l/de/developers/self-host/capabilities/setup", + "l/de/developers/self-host/capabilities/upgrade-guide", + "l/de/developers/self-host/capabilities/cloud-providers", + "l/de/developers/self-host/capabilities/troubleshooting" ] }, { "group": "Mitwirken", - "icon": "github", "pages": [ - "l/de/developers/contribute/contribute", - { - "group": "Funktionen", - "pages": [ - "l/de/developers/contribute/capabilities/local-setup", - "l/de/developers/contribute/capabilities/bug-and-requests", - { - "group": "Frontend-Entwicklung", - "pages": [ - "l/de/developers/contribute/capabilities/frontend-development/storybook", - { - "group": "Twenty UI", - "pages": [ - "l/de/twenty-ui/introduction", - { - "group": "Anzeigen", - "pages": [ - "l/de/twenty-ui/display/checkmark", - "l/de/twenty-ui/display/chip", - "l/de/twenty-ui/display/icons", - "l/de/twenty-ui/display/soon-pill", - "l/de/twenty-ui/display/tag", - "l/de/twenty-ui/display/app-tooltip" - ] - }, - { - "group": "Rückmeldung", - "pages": [ - "l/de/twenty-ui/progress-bar" - ] - }, - { - "group": "Eingabe", - "pages": [ - "l/de/twenty-ui/input/buttons", - "l/de/twenty-ui/input/color-scheme", - "l/de/twenty-ui/input/text", - "l/de/twenty-ui/input/checkbox", - "l/de/twenty-ui/input/icon-picker", - "l/de/twenty-ui/input/image-input", - "l/de/twenty-ui/input/radio", - "l/de/twenty-ui/input/select", - "l/de/twenty-ui/input/toggle", - "l/de/twenty-ui/input/block-editor" - ] - }, - { - "group": "Navigation", - "pages": [ - "l/de/twenty-ui/navigation", - "l/de/twenty-ui/navigation/breadcrumb", - "l/de/twenty-ui/navigation/links", - "l/de/twenty-ui/navigation/menu-item", - "l/de/twenty-ui/navigation/navigation-bar", - "l/de/twenty-ui/navigation/step-bar" - ] - } - ] - }, - "l/de/developers/contribute/capabilities/frontend-development/frontend-commands", - "l/de/developers/contribute/capabilities/frontend-development/work-with-figma", - "l/de/developers/contribute/capabilities/frontend-development/best-practices-front", - "l/de/developers/contribute/capabilities/frontend-development/style-guide", - "l/de/developers/contribute/capabilities/frontend-development/folder-architecture-front", - "l/de/developers/contribute/capabilities/frontend-development/hotkeys" - ] - }, - { - "group": "Backend-Entwicklung", - "pages": [ - "l/de/developers/contribute/capabilities/backend-development/server-commands", - "l/de/developers/contribute/capabilities/backend-development/feature-flags", - "l/de/developers/contribute/capabilities/backend-development/folder-architecture-server", - "l/de/developers/contribute/capabilities/backend-development/zapier", - "l/de/developers/contribute/capabilities/backend-development/best-practices-server", - "l/de/developers/contribute/capabilities/backend-development/custom-objects", - "l/de/developers/contribute/capabilities/backend-development/queue" - ] - } - ] - } + "l/de/developers/contribute/capabilities/local-setup", + "l/de/developers/contribute/commands", + "l/de/developers/contribute/style-guide" ] } ] @@ -2270,30 +1950,39 @@ { "language": "es", "tabs": [ + { + "tab": "Getting Started", + "groups": [ + { + "group": "Welcome", + "pages": [ + "l/es/getting-started/introduction", + "l/es/getting-started/key-features", + "l/es/getting-started/quickstart" + ] + }, + { + "group": "Core Concepts", + "pages": [ + "l/es/getting-started/core-concepts/data-model", + "l/es/getting-started/core-concepts/layout", + "l/es/getting-started/core-concepts/workflows", + "l/es/getting-started/core-concepts/calendar-and-email", + "l/es/getting-started/core-concepts/ai", + "l/es/getting-started/core-concepts/apps", + "l/es/getting-started/core-concepts/dashboards", + "l/es/getting-started/core-concepts/glossary" + ] + } + ] + }, { "tab": "Guía de usuario", "groups": [ { - "group": "Descubre Twenty", - "icon": "rocket", + "group": "Overview", "pages": [ - "l/es/user-guide/introduction", - { - "group": "Capacidades", - "pages": [ - "l/es/user-guide/getting-started/capabilities/what-is-twenty", - "l/es/user-guide/getting-started/capabilities/implementation-services", - "l/es/user-guide/getting-started/capabilities/glossary" - ] - }, - { - "group": "Guías prácticas", - "pages": [ - "l/es/user-guide/getting-started/how-tos/create-workspace", - "l/es/user-guide/getting-started/how-tos/navigate-around-twenty", - "l/es/user-guide/getting-started/how-tos/configure-your-workspace" - ] - } + "l/es/user-guide/introduction" ] }, { @@ -2302,7 +1991,7 @@ "pages": [ "l/es/user-guide/data-model/overview", { - "group": "Capacidades", + "group": "Reference", "pages": [ "l/es/user-guide/data-model/capabilities/objects", "l/es/user-guide/data-model/capabilities/fields", @@ -2328,7 +2017,7 @@ "pages": [ "l/es/user-guide/data-migration/overview", { - "group": "Capacidades", + "group": "Reference", "pages": [ "l/es/user-guide/data-migration/capabilities/file-formats", "l/es/user-guide/data-migration/capabilities/field-mapping", @@ -2360,7 +2049,7 @@ "pages": [ "l/es/user-guide/calendar-emails/overview", { - "group": "Capacidades", + "group": "Reference", "pages": [ "l/es/user-guide/calendar-emails/capabilities/mailbox", "l/es/user-guide/calendar-emails/capabilities/calendar" @@ -2385,7 +2074,7 @@ "pages": [ "l/es/user-guide/workflows/overview", { - "group": "Capacidades", + "group": "Reference", "pages": [ "l/es/user-guide/workflows/capabilities/workflow-triggers", "l/es/user-guide/workflows/capabilities/workflow-actions", @@ -2448,7 +2137,7 @@ "pages": [ "l/es/user-guide/ai/overview", { - "group": "Capacidades", + "group": "Reference", "pages": [ "l/es/user-guide/ai/capabilities/ai-chatbot", "l/es/user-guide/ai/capabilities/ai-agents", @@ -2464,23 +2153,30 @@ ] }, { - "group": "Vistas y canalizaciones", - "icon": "table", + "group": "Layout", + "icon": "table-columns", "pages": [ - "l/es/user-guide/views-pipelines/overview", + "l/es/user-guide/layout/overview", { - "group": "Capacidades", + "group": "Reference", "pages": [ - "l/es/user-guide/views-pipelines/capabilities/table-views", - "l/es/user-guide/views-pipelines/capabilities/kanban-views", - "l/es/user-guide/views-pipelines/capabilities/calendar-view", - "l/es/user-guide/views-pipelines/capabilities/filters-and-sorting", - "l/es/user-guide/views-pipelines/capabilities/fields-and-columns", - "l/es/user-guide/views-pipelines/capabilities/view-settings" + "l/es/user-guide/layout/capabilities/navigation", + { + "group": "Views", + "pages": [ + "l/es/user-guide/views-pipelines/capabilities/table-views", + "l/es/user-guide/views-pipelines/capabilities/kanban-views", + "l/es/user-guide/views-pipelines/capabilities/calendar-view", + "l/es/user-guide/views-pipelines/capabilities/filters-and-sorting", + "l/es/user-guide/views-pipelines/capabilities/fields-and-columns", + "l/es/user-guide/views-pipelines/capabilities/view-settings" + ] + }, + "l/es/user-guide/layout/capabilities/record-pages" ] }, { - "group": "Guías prácticas", + "group": "How-Tos", "pages": [ "l/es/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping", "l/es/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects", @@ -2499,7 +2195,7 @@ "pages": [ "l/es/user-guide/dashboards/overview", { - "group": "Capacidades", + "group": "Reference", "pages": [ "l/es/user-guide/dashboards/capabilities/dashboards", "l/es/user-guide/dashboards/capabilities/widgets", @@ -2521,7 +2217,7 @@ "pages": [ "l/es/user-guide/permissions-access/overview", { - "group": "Capacidades", + "group": "Reference", "pages": [ "l/es/user-guide/permissions-access/capabilities/permissions", "l/es/user-guide/permissions-access/capabilities/sso-configuration" @@ -2541,7 +2237,7 @@ "pages": [ "l/es/user-guide/billing/overview", { - "group": "Capacidades", + "group": "Reference", "pages": [ "l/es/user-guide/billing/capabilities/pricing-plans", "l/es/user-guide/billing/capabilities/credits" @@ -2561,7 +2257,7 @@ "pages": [ "l/es/user-guide/settings/overview", { - "group": "Capacidades", + "group": "Reference", "pages": [ "l/es/user-guide/settings/capabilities/workspace-settings", "l/es/user-guide/settings/capabilities/member-management", @@ -2585,129 +2281,49 @@ "tab": "Desarrolladores", "groups": [ { - "group": "Desarrolladores", + "group": "Overview", "pages": [ "l/es/developers/introduction" ] }, { - "group": "Ampliar", - "icon": "plug", + "group": "Apps", + "pages": [ + "l/es/developers/extend/apps/getting-started", + "l/es/developers/extend/apps/building", + "l/es/developers/extend/apps/data-model", + "l/es/developers/extend/apps/logic-functions", + "l/es/developers/extend/apps/front-components", + "l/es/developers/extend/apps/layout", + "l/es/developers/extend/apps/skills-and-agents", + "l/es/developers/extend/apps/cli-and-testing", + "l/es/developers/extend/apps/publishing" + ] + }, + { + "group": "API", "pages": [ "l/es/developers/extend/api", "l/es/developers/extend/webhooks", - { - "group": "Apps", - "pages": [ - "l/es/developers/extend/apps/getting-started", - "l/es/developers/extend/apps/building", - "l/es/developers/extend/apps/publishing" - ] - } + "l/es/developers/extend/oauth" ] }, { "group": "Autoalojamiento", - "icon": "desktop", "pages": [ - "l/es/developers/self-host/self-host", - { - "group": "Capacidades", - "pages": [ - "l/es/developers/self-host/capabilities/docker-compose", - "l/es/developers/self-host/capabilities/setup", - "l/es/developers/self-host/capabilities/upgrade-guide", - "l/es/developers/self-host/capabilities/cloud-providers", - "l/es/developers/self-host/capabilities/troubleshooting" - ] - } + "l/es/developers/self-host/capabilities/docker-compose", + "l/es/developers/self-host/capabilities/setup", + "l/es/developers/self-host/capabilities/upgrade-guide", + "l/es/developers/self-host/capabilities/cloud-providers", + "l/es/developers/self-host/capabilities/troubleshooting" ] }, { "group": "Contribuir", - "icon": "github", "pages": [ - "l/es/developers/contribute/contribute", - { - "group": "Capacidades", - "pages": [ - "l/es/developers/contribute/capabilities/local-setup", - "l/es/developers/contribute/capabilities/bug-and-requests", - { - "group": "Desarrollo Frontend", - "pages": [ - "l/es/developers/contribute/capabilities/frontend-development/storybook", - { - "group": "Twenty UI", - "pages": [ - "l/es/twenty-ui/introduction", - { - "group": "Mostrar", - "pages": [ - "l/es/twenty-ui/display/checkmark", - "l/es/twenty-ui/display/chip", - "l/es/twenty-ui/display/icons", - "l/es/twenty-ui/display/soon-pill", - "l/es/twenty-ui/display/tag", - "l/es/twenty-ui/display/app-tooltip" - ] - }, - { - "group": "Retroalimentación", - "pages": [ - "l/es/twenty-ui/progress-bar" - ] - }, - { - "group": "Entrada", - "pages": [ - "l/es/twenty-ui/input/buttons", - "l/es/twenty-ui/input/color-scheme", - "l/es/twenty-ui/input/text", - "l/es/twenty-ui/input/checkbox", - "l/es/twenty-ui/input/icon-picker", - "l/es/twenty-ui/input/image-input", - "l/es/twenty-ui/input/radio", - "l/es/twenty-ui/input/select", - "l/es/twenty-ui/input/toggle", - "l/es/twenty-ui/input/block-editor" - ] - }, - { - "group": "Navegación", - "pages": [ - "l/es/twenty-ui/navigation", - "l/es/twenty-ui/navigation/breadcrumb", - "l/es/twenty-ui/navigation/links", - "l/es/twenty-ui/navigation/menu-item", - "l/es/twenty-ui/navigation/navigation-bar", - "l/es/twenty-ui/navigation/step-bar" - ] - } - ] - }, - "l/es/developers/contribute/capabilities/frontend-development/frontend-commands", - "l/es/developers/contribute/capabilities/frontend-development/work-with-figma", - "l/es/developers/contribute/capabilities/frontend-development/best-practices-front", - "l/es/developers/contribute/capabilities/frontend-development/style-guide", - "l/es/developers/contribute/capabilities/frontend-development/folder-architecture-front", - "l/es/developers/contribute/capabilities/frontend-development/hotkeys" - ] - }, - { - "group": "Desarrollo Backend", - "pages": [ - "l/es/developers/contribute/capabilities/backend-development/server-commands", - "l/es/developers/contribute/capabilities/backend-development/feature-flags", - "l/es/developers/contribute/capabilities/backend-development/folder-architecture-server", - "l/es/developers/contribute/capabilities/backend-development/zapier", - "l/es/developers/contribute/capabilities/backend-development/best-practices-server", - "l/es/developers/contribute/capabilities/backend-development/custom-objects", - "l/es/developers/contribute/capabilities/backend-development/queue" - ] - } - ] - } + "l/es/developers/contribute/capabilities/local-setup", + "l/es/developers/contribute/commands", + "l/es/developers/contribute/style-guide" ] } ] @@ -2717,30 +2333,39 @@ { "language": "it", "tabs": [ + { + "tab": "Getting Started", + "groups": [ + { + "group": "Welcome", + "pages": [ + "l/it/getting-started/introduction", + "l/it/getting-started/key-features", + "l/it/getting-started/quickstart" + ] + }, + { + "group": "Core Concepts", + "pages": [ + "l/it/getting-started/core-concepts/data-model", + "l/it/getting-started/core-concepts/layout", + "l/it/getting-started/core-concepts/workflows", + "l/it/getting-started/core-concepts/calendar-and-email", + "l/it/getting-started/core-concepts/ai", + "l/it/getting-started/core-concepts/apps", + "l/it/getting-started/core-concepts/dashboards", + "l/it/getting-started/core-concepts/glossary" + ] + } + ] + }, { "tab": "Guida utente", "groups": [ { - "group": "Scopri Twenty", - "icon": "rocket", + "group": "Overview", "pages": [ - "l/it/user-guide/introduction", - { - "group": "Funzionalità", - "pages": [ - "l/it/user-guide/getting-started/capabilities/what-is-twenty", - "l/it/user-guide/getting-started/capabilities/implementation-services", - "l/it/user-guide/getting-started/capabilities/glossary" - ] - }, - { - "group": "Guide pratiche", - "pages": [ - "l/it/user-guide/getting-started/how-tos/create-workspace", - "l/it/user-guide/getting-started/how-tos/navigate-around-twenty", - "l/it/user-guide/getting-started/how-tos/configure-your-workspace" - ] - } + "l/it/user-guide/introduction" ] }, { @@ -2749,7 +2374,7 @@ "pages": [ "l/it/user-guide/data-model/overview", { - "group": "Funzionalità", + "group": "Reference", "pages": [ "l/it/user-guide/data-model/capabilities/objects", "l/it/user-guide/data-model/capabilities/fields", @@ -2775,7 +2400,7 @@ "pages": [ "l/it/user-guide/data-migration/overview", { - "group": "Funzionalità", + "group": "Reference", "pages": [ "l/it/user-guide/data-migration/capabilities/file-formats", "l/it/user-guide/data-migration/capabilities/field-mapping", @@ -2807,7 +2432,7 @@ "pages": [ "l/it/user-guide/calendar-emails/overview", { - "group": "Funzionalità", + "group": "Reference", "pages": [ "l/it/user-guide/calendar-emails/capabilities/mailbox", "l/it/user-guide/calendar-emails/capabilities/calendar" @@ -2832,7 +2457,7 @@ "pages": [ "l/it/user-guide/workflows/overview", { - "group": "Funzionalità", + "group": "Reference", "pages": [ "l/it/user-guide/workflows/capabilities/workflow-triggers", "l/it/user-guide/workflows/capabilities/workflow-actions", @@ -2895,7 +2520,7 @@ "pages": [ "l/it/user-guide/ai/overview", { - "group": "Funzionalità", + "group": "Reference", "pages": [ "l/it/user-guide/ai/capabilities/ai-chatbot", "l/it/user-guide/ai/capabilities/ai-agents", @@ -2911,23 +2536,30 @@ ] }, { - "group": "Viste & Pipeline", - "icon": "table", + "group": "Layout", + "icon": "table-columns", "pages": [ - "l/it/user-guide/views-pipelines/overview", + "l/it/user-guide/layout/overview", { - "group": "Funzionalità", + "group": "Reference", "pages": [ - "l/it/user-guide/views-pipelines/capabilities/table-views", - "l/it/user-guide/views-pipelines/capabilities/kanban-views", - "l/it/user-guide/views-pipelines/capabilities/calendar-view", - "l/it/user-guide/views-pipelines/capabilities/filters-and-sorting", - "l/it/user-guide/views-pipelines/capabilities/fields-and-columns", - "l/it/user-guide/views-pipelines/capabilities/view-settings" + "l/it/user-guide/layout/capabilities/navigation", + { + "group": "Views", + "pages": [ + "l/it/user-guide/views-pipelines/capabilities/table-views", + "l/it/user-guide/views-pipelines/capabilities/kanban-views", + "l/it/user-guide/views-pipelines/capabilities/calendar-view", + "l/it/user-guide/views-pipelines/capabilities/filters-and-sorting", + "l/it/user-guide/views-pipelines/capabilities/fields-and-columns", + "l/it/user-guide/views-pipelines/capabilities/view-settings" + ] + }, + "l/it/user-guide/layout/capabilities/record-pages" ] }, { - "group": "Guide pratiche", + "group": "How-Tos", "pages": [ "l/it/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping", "l/it/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects", @@ -2946,7 +2578,7 @@ "pages": [ "l/it/user-guide/dashboards/overview", { - "group": "Funzionalità", + "group": "Reference", "pages": [ "l/it/user-guide/dashboards/capabilities/dashboards", "l/it/user-guide/dashboards/capabilities/widgets", @@ -2968,7 +2600,7 @@ "pages": [ "l/it/user-guide/permissions-access/overview", { - "group": "Funzionalità", + "group": "Reference", "pages": [ "l/it/user-guide/permissions-access/capabilities/permissions", "l/it/user-guide/permissions-access/capabilities/sso-configuration" @@ -2988,7 +2620,7 @@ "pages": [ "l/it/user-guide/billing/overview", { - "group": "Funzionalità", + "group": "Reference", "pages": [ "l/it/user-guide/billing/capabilities/pricing-plans", "l/it/user-guide/billing/capabilities/credits" @@ -3008,7 +2640,7 @@ "pages": [ "l/it/user-guide/settings/overview", { - "group": "Funzionalità", + "group": "Reference", "pages": [ "l/it/user-guide/settings/capabilities/workspace-settings", "l/it/user-guide/settings/capabilities/member-management", @@ -3032,129 +2664,49 @@ "tab": "Sviluppatori", "groups": [ { - "group": "Sviluppatori", + "group": "Overview", "pages": [ "l/it/developers/introduction" ] }, { - "group": "Estendi", - "icon": "plug", + "group": "App", + "pages": [ + "l/it/developers/extend/apps/getting-started", + "l/it/developers/extend/apps/building", + "l/it/developers/extend/apps/data-model", + "l/it/developers/extend/apps/logic-functions", + "l/it/developers/extend/apps/front-components", + "l/it/developers/extend/apps/layout", + "l/it/developers/extend/apps/skills-and-agents", + "l/it/developers/extend/apps/cli-and-testing", + "l/it/developers/extend/apps/publishing" + ] + }, + { + "group": "API", "pages": [ "l/it/developers/extend/api", "l/it/developers/extend/webhooks", - { - "group": "App", - "pages": [ - "l/it/developers/extend/apps/getting-started", - "l/it/developers/extend/apps/building", - "l/it/developers/extend/apps/publishing" - ] - } + "l/it/developers/extend/oauth" ] }, { "group": "Auto-ospitazione", - "icon": "desktop", "pages": [ - "l/it/developers/self-host/self-host", - { - "group": "Funzionalità", - "pages": [ - "l/it/developers/self-host/capabilities/docker-compose", - "l/it/developers/self-host/capabilities/setup", - "l/it/developers/self-host/capabilities/upgrade-guide", - "l/it/developers/self-host/capabilities/cloud-providers", - "l/it/developers/self-host/capabilities/troubleshooting" - ] - } + "l/it/developers/self-host/capabilities/docker-compose", + "l/it/developers/self-host/capabilities/setup", + "l/it/developers/self-host/capabilities/upgrade-guide", + "l/it/developers/self-host/capabilities/cloud-providers", + "l/it/developers/self-host/capabilities/troubleshooting" ] }, { "group": "Contribuire", - "icon": "github", "pages": [ - "l/it/developers/contribute/contribute", - { - "group": "Funzionalità", - "pages": [ - "l/it/developers/contribute/capabilities/local-setup", - "l/it/developers/contribute/capabilities/bug-and-requests", - { - "group": "Sviluppo Frontend", - "pages": [ - "l/it/developers/contribute/capabilities/frontend-development/storybook", - { - "group": "Twenty UI", - "pages": [ - "l/it/twenty-ui/introduction", - { - "group": "Mostra", - "pages": [ - "l/it/twenty-ui/display/checkmark", - "l/it/twenty-ui/display/chip", - "l/it/twenty-ui/display/icons", - "l/it/twenty-ui/display/soon-pill", - "l/it/twenty-ui/display/tag", - "l/it/twenty-ui/display/app-tooltip" - ] - }, - { - "group": "Feedback", - "pages": [ - "l/it/twenty-ui/progress-bar" - ] - }, - { - "group": "Input", - "pages": [ - "l/it/twenty-ui/input/buttons", - "l/it/twenty-ui/input/color-scheme", - "l/it/twenty-ui/input/text", - "l/it/twenty-ui/input/checkbox", - "l/it/twenty-ui/input/icon-picker", - "l/it/twenty-ui/input/image-input", - "l/it/twenty-ui/input/radio", - "l/it/twenty-ui/input/select", - "l/it/twenty-ui/input/toggle", - "l/it/twenty-ui/input/block-editor" - ] - }, - { - "group": "Navigazione", - "pages": [ - "l/it/twenty-ui/navigation", - "l/it/twenty-ui/navigation/breadcrumb", - "l/it/twenty-ui/navigation/links", - "l/it/twenty-ui/navigation/menu-item", - "l/it/twenty-ui/navigation/navigation-bar", - "l/it/twenty-ui/navigation/step-bar" - ] - } - ] - }, - "l/it/developers/contribute/capabilities/frontend-development/frontend-commands", - "l/it/developers/contribute/capabilities/frontend-development/work-with-figma", - "l/it/developers/contribute/capabilities/frontend-development/best-practices-front", - "l/it/developers/contribute/capabilities/frontend-development/style-guide", - "l/it/developers/contribute/capabilities/frontend-development/folder-architecture-front", - "l/it/developers/contribute/capabilities/frontend-development/hotkeys" - ] - }, - { - "group": "Sviluppo Backend", - "pages": [ - "l/it/developers/contribute/capabilities/backend-development/server-commands", - "l/it/developers/contribute/capabilities/backend-development/feature-flags", - "l/it/developers/contribute/capabilities/backend-development/folder-architecture-server", - "l/it/developers/contribute/capabilities/backend-development/zapier", - "l/it/developers/contribute/capabilities/backend-development/best-practices-server", - "l/it/developers/contribute/capabilities/backend-development/custom-objects", - "l/it/developers/contribute/capabilities/backend-development/queue" - ] - } - ] - } + "l/it/developers/contribute/capabilities/local-setup", + "l/it/developers/contribute/commands", + "l/it/developers/contribute/style-guide" ] } ] @@ -3164,30 +2716,39 @@ { "language": "ja", "tabs": [ + { + "tab": "Getting Started", + "groups": [ + { + "group": "Welcome", + "pages": [ + "l/ja/getting-started/introduction", + "l/ja/getting-started/key-features", + "l/ja/getting-started/quickstart" + ] + }, + { + "group": "Core Concepts", + "pages": [ + "l/ja/getting-started/core-concepts/data-model", + "l/ja/getting-started/core-concepts/layout", + "l/ja/getting-started/core-concepts/workflows", + "l/ja/getting-started/core-concepts/calendar-and-email", + "l/ja/getting-started/core-concepts/ai", + "l/ja/getting-started/core-concepts/apps", + "l/ja/getting-started/core-concepts/dashboards", + "l/ja/getting-started/core-concepts/glossary" + ] + } + ] + }, { "tab": "ユーザーガイド", "groups": [ { - "group": "Twenty を知る", - "icon": "rocket", + "group": "Overview", "pages": [ - "l/ja/user-guide/introduction", - { - "group": "機能", - "pages": [ - "l/ja/user-guide/getting-started/capabilities/what-is-twenty", - "l/ja/user-guide/getting-started/capabilities/implementation-services", - "l/ja/user-guide/getting-started/capabilities/glossary" - ] - }, - { - "group": "ハウツー", - "pages": [ - "l/ja/user-guide/getting-started/how-tos/create-workspace", - "l/ja/user-guide/getting-started/how-tos/navigate-around-twenty", - "l/ja/user-guide/getting-started/how-tos/configure-your-workspace" - ] - } + "l/ja/user-guide/introduction" ] }, { @@ -3196,7 +2757,7 @@ "pages": [ "l/ja/user-guide/data-model/overview", { - "group": "機能", + "group": "Reference", "pages": [ "l/ja/user-guide/data-model/capabilities/objects", "l/ja/user-guide/data-model/capabilities/fields", @@ -3222,7 +2783,7 @@ "pages": [ "l/ja/user-guide/data-migration/overview", { - "group": "機能", + "group": "Reference", "pages": [ "l/ja/user-guide/data-migration/capabilities/file-formats", "l/ja/user-guide/data-migration/capabilities/field-mapping", @@ -3254,7 +2815,7 @@ "pages": [ "l/ja/user-guide/calendar-emails/overview", { - "group": "機能", + "group": "Reference", "pages": [ "l/ja/user-guide/calendar-emails/capabilities/mailbox", "l/ja/user-guide/calendar-emails/capabilities/calendar" @@ -3279,7 +2840,7 @@ "pages": [ "l/ja/user-guide/workflows/overview", { - "group": "機能", + "group": "Reference", "pages": [ "l/ja/user-guide/workflows/capabilities/workflow-triggers", "l/ja/user-guide/workflows/capabilities/workflow-actions", @@ -3342,7 +2903,7 @@ "pages": [ "l/ja/user-guide/ai/overview", { - "group": "機能", + "group": "Reference", "pages": [ "l/ja/user-guide/ai/capabilities/ai-chatbot", "l/ja/user-guide/ai/capabilities/ai-agents", @@ -3358,23 +2919,30 @@ ] }, { - "group": "ビューとパイプライン", - "icon": "table", + "group": "Layout", + "icon": "table-columns", "pages": [ - "l/ja/user-guide/views-pipelines/overview", + "l/ja/user-guide/layout/overview", { - "group": "機能", + "group": "Reference", "pages": [ - "l/ja/user-guide/views-pipelines/capabilities/table-views", - "l/ja/user-guide/views-pipelines/capabilities/kanban-views", - "l/ja/user-guide/views-pipelines/capabilities/calendar-view", - "l/ja/user-guide/views-pipelines/capabilities/filters-and-sorting", - "l/ja/user-guide/views-pipelines/capabilities/fields-and-columns", - "l/ja/user-guide/views-pipelines/capabilities/view-settings" + "l/ja/user-guide/layout/capabilities/navigation", + { + "group": "Views", + "pages": [ + "l/ja/user-guide/views-pipelines/capabilities/table-views", + "l/ja/user-guide/views-pipelines/capabilities/kanban-views", + "l/ja/user-guide/views-pipelines/capabilities/calendar-view", + "l/ja/user-guide/views-pipelines/capabilities/filters-and-sorting", + "l/ja/user-guide/views-pipelines/capabilities/fields-and-columns", + "l/ja/user-guide/views-pipelines/capabilities/view-settings" + ] + }, + "l/ja/user-guide/layout/capabilities/record-pages" ] }, { - "group": "ハウツー", + "group": "How-Tos", "pages": [ "l/ja/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping", "l/ja/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects", @@ -3393,7 +2961,7 @@ "pages": [ "l/ja/user-guide/dashboards/overview", { - "group": "機能", + "group": "Reference", "pages": [ "l/ja/user-guide/dashboards/capabilities/dashboards", "l/ja/user-guide/dashboards/capabilities/widgets", @@ -3415,7 +2983,7 @@ "pages": [ "l/ja/user-guide/permissions-access/overview", { - "group": "機能", + "group": "Reference", "pages": [ "l/ja/user-guide/permissions-access/capabilities/permissions", "l/ja/user-guide/permissions-access/capabilities/sso-configuration" @@ -3435,7 +3003,7 @@ "pages": [ "l/ja/user-guide/billing/overview", { - "group": "機能", + "group": "Reference", "pages": [ "l/ja/user-guide/billing/capabilities/pricing-plans", "l/ja/user-guide/billing/capabilities/credits" @@ -3455,7 +3023,7 @@ "pages": [ "l/ja/user-guide/settings/overview", { - "group": "機能", + "group": "Reference", "pages": [ "l/ja/user-guide/settings/capabilities/workspace-settings", "l/ja/user-guide/settings/capabilities/member-management", @@ -3479,129 +3047,49 @@ "tab": "開発者", "groups": [ { - "group": "開発者", + "group": "Overview", "pages": [ "l/ja/developers/introduction" ] }, { - "group": "拡張", - "icon": "plug", + "group": "Apps", + "pages": [ + "l/ja/developers/extend/apps/getting-started", + "l/ja/developers/extend/apps/building", + "l/ja/developers/extend/apps/data-model", + "l/ja/developers/extend/apps/logic-functions", + "l/ja/developers/extend/apps/front-components", + "l/ja/developers/extend/apps/layout", + "l/ja/developers/extend/apps/skills-and-agents", + "l/ja/developers/extend/apps/cli-and-testing", + "l/ja/developers/extend/apps/publishing" + ] + }, + { + "group": "API", "pages": [ "l/ja/developers/extend/api", "l/ja/developers/extend/webhooks", - { - "group": "Apps", - "pages": [ - "l/ja/developers/extend/apps/getting-started", - "l/ja/developers/extend/apps/building", - "l/ja/developers/extend/apps/publishing" - ] - } + "l/ja/developers/extend/oauth" ] }, { "group": "セルフホスト", - "icon": "desktop", "pages": [ - "l/ja/developers/self-host/self-host", - { - "group": "機能", - "pages": [ - "l/ja/developers/self-host/capabilities/docker-compose", - "l/ja/developers/self-host/capabilities/setup", - "l/ja/developers/self-host/capabilities/upgrade-guide", - "l/ja/developers/self-host/capabilities/cloud-providers", - "l/ja/developers/self-host/capabilities/troubleshooting" - ] - } + "l/ja/developers/self-host/capabilities/docker-compose", + "l/ja/developers/self-host/capabilities/setup", + "l/ja/developers/self-host/capabilities/upgrade-guide", + "l/ja/developers/self-host/capabilities/cloud-providers", + "l/ja/developers/self-host/capabilities/troubleshooting" ] }, { "group": "貢献", - "icon": "github", "pages": [ - "l/ja/developers/contribute/contribute", - { - "group": "機能", - "pages": [ - "l/ja/developers/contribute/capabilities/local-setup", - "l/ja/developers/contribute/capabilities/bug-and-requests", - { - "group": "フロントエンド開発", - "pages": [ - "l/ja/developers/contribute/capabilities/frontend-development/storybook", - { - "group": "Twenty UI", - "pages": [ - "l/ja/twenty-ui/introduction", - { - "group": "表示", - "pages": [ - "l/ja/twenty-ui/display/checkmark", - "l/ja/twenty-ui/display/chip", - "l/ja/twenty-ui/display/icons", - "l/ja/twenty-ui/display/soon-pill", - "l/ja/twenty-ui/display/tag", - "l/ja/twenty-ui/display/app-tooltip" - ] - }, - { - "group": "フィードバック", - "pages": [ - "l/ja/twenty-ui/progress-bar" - ] - }, - { - "group": "入力", - "pages": [ - "l/ja/twenty-ui/input/buttons", - "l/ja/twenty-ui/input/color-scheme", - "l/ja/twenty-ui/input/text", - "l/ja/twenty-ui/input/checkbox", - "l/ja/twenty-ui/input/icon-picker", - "l/ja/twenty-ui/input/image-input", - "l/ja/twenty-ui/input/radio", - "l/ja/twenty-ui/input/select", - "l/ja/twenty-ui/input/toggle", - "l/ja/twenty-ui/input/block-editor" - ] - }, - { - "group": "ナビゲーション", - "pages": [ - "l/ja/twenty-ui/navigation", - "l/ja/twenty-ui/navigation/breadcrumb", - "l/ja/twenty-ui/navigation/links", - "l/ja/twenty-ui/navigation/menu-item", - "l/ja/twenty-ui/navigation/navigation-bar", - "l/ja/twenty-ui/navigation/step-bar" - ] - } - ] - }, - "l/ja/developers/contribute/capabilities/frontend-development/frontend-commands", - "l/ja/developers/contribute/capabilities/frontend-development/work-with-figma", - "l/ja/developers/contribute/capabilities/frontend-development/best-practices-front", - "l/ja/developers/contribute/capabilities/frontend-development/style-guide", - "l/ja/developers/contribute/capabilities/frontend-development/folder-architecture-front", - "l/ja/developers/contribute/capabilities/frontend-development/hotkeys" - ] - }, - { - "group": "バックエンド開発", - "pages": [ - "l/ja/developers/contribute/capabilities/backend-development/server-commands", - "l/ja/developers/contribute/capabilities/backend-development/feature-flags", - "l/ja/developers/contribute/capabilities/backend-development/folder-architecture-server", - "l/ja/developers/contribute/capabilities/backend-development/zapier", - "l/ja/developers/contribute/capabilities/backend-development/best-practices-server", - "l/ja/developers/contribute/capabilities/backend-development/custom-objects", - "l/ja/developers/contribute/capabilities/backend-development/queue" - ] - } - ] - } + "l/ja/developers/contribute/capabilities/local-setup", + "l/ja/developers/contribute/commands", + "l/ja/developers/contribute/style-guide" ] } ] @@ -3611,30 +3099,39 @@ { "language": "ko", "tabs": [ + { + "tab": "Getting Started", + "groups": [ + { + "group": "Welcome", + "pages": [ + "l/ko/getting-started/introduction", + "l/ko/getting-started/key-features", + "l/ko/getting-started/quickstart" + ] + }, + { + "group": "Core Concepts", + "pages": [ + "l/ko/getting-started/core-concepts/data-model", + "l/ko/getting-started/core-concepts/layout", + "l/ko/getting-started/core-concepts/workflows", + "l/ko/getting-started/core-concepts/calendar-and-email", + "l/ko/getting-started/core-concepts/ai", + "l/ko/getting-started/core-concepts/apps", + "l/ko/getting-started/core-concepts/dashboards", + "l/ko/getting-started/core-concepts/glossary" + ] + } + ] + }, { "tab": "사용자 안내서", "groups": [ { - "group": "Twenty 알아보기", - "icon": "rocket", + "group": "Overview", "pages": [ - "l/ko/user-guide/introduction", - { - "group": "기능", - "pages": [ - "l/ko/user-guide/getting-started/capabilities/what-is-twenty", - "l/ko/user-guide/getting-started/capabilities/implementation-services", - "l/ko/user-guide/getting-started/capabilities/glossary" - ] - }, - { - "group": "사용 방법", - "pages": [ - "l/ko/user-guide/getting-started/how-tos/create-workspace", - "l/ko/user-guide/getting-started/how-tos/navigate-around-twenty", - "l/ko/user-guide/getting-started/how-tos/configure-your-workspace" - ] - } + "l/ko/user-guide/introduction" ] }, { @@ -3643,7 +3140,7 @@ "pages": [ "l/ko/user-guide/data-model/overview", { - "group": "기능", + "group": "Reference", "pages": [ "l/ko/user-guide/data-model/capabilities/objects", "l/ko/user-guide/data-model/capabilities/fields", @@ -3669,7 +3166,7 @@ "pages": [ "l/ko/user-guide/data-migration/overview", { - "group": "기능", + "group": "Reference", "pages": [ "l/ko/user-guide/data-migration/capabilities/file-formats", "l/ko/user-guide/data-migration/capabilities/field-mapping", @@ -3701,7 +3198,7 @@ "pages": [ "l/ko/user-guide/calendar-emails/overview", { - "group": "기능", + "group": "Reference", "pages": [ "l/ko/user-guide/calendar-emails/capabilities/mailbox", "l/ko/user-guide/calendar-emails/capabilities/calendar" @@ -3726,7 +3223,7 @@ "pages": [ "l/ko/user-guide/workflows/overview", { - "group": "기능", + "group": "Reference", "pages": [ "l/ko/user-guide/workflows/capabilities/workflow-triggers", "l/ko/user-guide/workflows/capabilities/workflow-actions", @@ -3789,7 +3286,7 @@ "pages": [ "l/ko/user-guide/ai/overview", { - "group": "기능", + "group": "Reference", "pages": [ "l/ko/user-guide/ai/capabilities/ai-chatbot", "l/ko/user-guide/ai/capabilities/ai-agents", @@ -3805,23 +3302,30 @@ ] }, { - "group": "뷰 및 파이프라인", - "icon": "table", + "group": "Layout", + "icon": "table-columns", "pages": [ - "l/ko/user-guide/views-pipelines/overview", + "l/ko/user-guide/layout/overview", { - "group": "기능", + "group": "Reference", "pages": [ - "l/ko/user-guide/views-pipelines/capabilities/table-views", - "l/ko/user-guide/views-pipelines/capabilities/kanban-views", - "l/ko/user-guide/views-pipelines/capabilities/calendar-view", - "l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting", - "l/ko/user-guide/views-pipelines/capabilities/fields-and-columns", - "l/ko/user-guide/views-pipelines/capabilities/view-settings" + "l/ko/user-guide/layout/capabilities/navigation", + { + "group": "Views", + "pages": [ + "l/ko/user-guide/views-pipelines/capabilities/table-views", + "l/ko/user-guide/views-pipelines/capabilities/kanban-views", + "l/ko/user-guide/views-pipelines/capabilities/calendar-view", + "l/ko/user-guide/views-pipelines/capabilities/filters-and-sorting", + "l/ko/user-guide/views-pipelines/capabilities/fields-and-columns", + "l/ko/user-guide/views-pipelines/capabilities/view-settings" + ] + }, + "l/ko/user-guide/layout/capabilities/record-pages" ] }, { - "group": "사용 방법", + "group": "How-Tos", "pages": [ "l/ko/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping", "l/ko/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects", @@ -3840,7 +3344,7 @@ "pages": [ "l/ko/user-guide/dashboards/overview", { - "group": "기능", + "group": "Reference", "pages": [ "l/ko/user-guide/dashboards/capabilities/dashboards", "l/ko/user-guide/dashboards/capabilities/widgets", @@ -3862,7 +3366,7 @@ "pages": [ "l/ko/user-guide/permissions-access/overview", { - "group": "기능", + "group": "Reference", "pages": [ "l/ko/user-guide/permissions-access/capabilities/permissions", "l/ko/user-guide/permissions-access/capabilities/sso-configuration" @@ -3882,7 +3386,7 @@ "pages": [ "l/ko/user-guide/billing/overview", { - "group": "기능", + "group": "Reference", "pages": [ "l/ko/user-guide/billing/capabilities/pricing-plans", "l/ko/user-guide/billing/capabilities/credits" @@ -3902,7 +3406,7 @@ "pages": [ "l/ko/user-guide/settings/overview", { - "group": "기능", + "group": "Reference", "pages": [ "l/ko/user-guide/settings/capabilities/workspace-settings", "l/ko/user-guide/settings/capabilities/member-management", @@ -3926,129 +3430,49 @@ "tab": "개발자", "groups": [ { - "group": "개발자", + "group": "Overview", "pages": [ "l/ko/developers/introduction" ] }, { - "group": "확장", - "icon": "plug", + "group": "Apps", + "pages": [ + "l/ko/developers/extend/apps/getting-started", + "l/ko/developers/extend/apps/building", + "l/ko/developers/extend/apps/data-model", + "l/ko/developers/extend/apps/logic-functions", + "l/ko/developers/extend/apps/front-components", + "l/ko/developers/extend/apps/layout", + "l/ko/developers/extend/apps/skills-and-agents", + "l/ko/developers/extend/apps/cli-and-testing", + "l/ko/developers/extend/apps/publishing" + ] + }, + { + "group": "API", "pages": [ "l/ko/developers/extend/api", "l/ko/developers/extend/webhooks", - { - "group": "Apps", - "pages": [ - "l/ko/developers/extend/apps/getting-started", - "l/ko/developers/extend/apps/building", - "l/ko/developers/extend/apps/publishing" - ] - } + "l/ko/developers/extend/oauth" ] }, { "group": "셀프 호스팅", - "icon": "desktop", "pages": [ - "l/ko/developers/self-host/self-host", - { - "group": "기능", - "pages": [ - "l/ko/developers/self-host/capabilities/docker-compose", - "l/ko/developers/self-host/capabilities/setup", - "l/ko/developers/self-host/capabilities/upgrade-guide", - "l/ko/developers/self-host/capabilities/cloud-providers", - "l/ko/developers/self-host/capabilities/troubleshooting" - ] - } + "l/ko/developers/self-host/capabilities/docker-compose", + "l/ko/developers/self-host/capabilities/setup", + "l/ko/developers/self-host/capabilities/upgrade-guide", + "l/ko/developers/self-host/capabilities/cloud-providers", + "l/ko/developers/self-host/capabilities/troubleshooting" ] }, { "group": "기여", - "icon": "github", "pages": [ - "l/ko/developers/contribute/contribute", - { - "group": "기능", - "pages": [ - "l/ko/developers/contribute/capabilities/local-setup", - "l/ko/developers/contribute/capabilities/bug-and-requests", - { - "group": "프론트엔드 개발", - "pages": [ - "l/ko/developers/contribute/capabilities/frontend-development/storybook", - { - "group": "Twenty UI", - "pages": [ - "l/ko/twenty-ui/introduction", - { - "group": "표시", - "pages": [ - "l/ko/twenty-ui/display/checkmark", - "l/ko/twenty-ui/display/chip", - "l/ko/twenty-ui/display/icons", - "l/ko/twenty-ui/display/soon-pill", - "l/ko/twenty-ui/display/tag", - "l/ko/twenty-ui/display/app-tooltip" - ] - }, - { - "group": "피드백", - "pages": [ - "l/ko/twenty-ui/progress-bar" - ] - }, - { - "group": "입력", - "pages": [ - "l/ko/twenty-ui/input/buttons", - "l/ko/twenty-ui/input/color-scheme", - "l/ko/twenty-ui/input/text", - "l/ko/twenty-ui/input/checkbox", - "l/ko/twenty-ui/input/icon-picker", - "l/ko/twenty-ui/input/image-input", - "l/ko/twenty-ui/input/radio", - "l/ko/twenty-ui/input/select", - "l/ko/twenty-ui/input/toggle", - "l/ko/twenty-ui/input/block-editor" - ] - }, - { - "group": "네비게이션", - "pages": [ - "l/ko/twenty-ui/navigation", - "l/ko/twenty-ui/navigation/breadcrumb", - "l/ko/twenty-ui/navigation/links", - "l/ko/twenty-ui/navigation/menu-item", - "l/ko/twenty-ui/navigation/navigation-bar", - "l/ko/twenty-ui/navigation/step-bar" - ] - } - ] - }, - "l/ko/developers/contribute/capabilities/frontend-development/frontend-commands", - "l/ko/developers/contribute/capabilities/frontend-development/work-with-figma", - "l/ko/developers/contribute/capabilities/frontend-development/best-practices-front", - "l/ko/developers/contribute/capabilities/frontend-development/style-guide", - "l/ko/developers/contribute/capabilities/frontend-development/folder-architecture-front", - "l/ko/developers/contribute/capabilities/frontend-development/hotkeys" - ] - }, - { - "group": "백엔드 개발", - "pages": [ - "l/ko/developers/contribute/capabilities/backend-development/server-commands", - "l/ko/developers/contribute/capabilities/backend-development/feature-flags", - "l/ko/developers/contribute/capabilities/backend-development/folder-architecture-server", - "l/ko/developers/contribute/capabilities/backend-development/zapier", - "l/ko/developers/contribute/capabilities/backend-development/best-practices-server", - "l/ko/developers/contribute/capabilities/backend-development/custom-objects", - "l/ko/developers/contribute/capabilities/backend-development/queue" - ] - } - ] - } + "l/ko/developers/contribute/capabilities/local-setup", + "l/ko/developers/contribute/commands", + "l/ko/developers/contribute/style-guide" ] } ] @@ -4058,30 +3482,39 @@ { "language": "pt", "tabs": [ + { + "tab": "Getting Started", + "groups": [ + { + "group": "Welcome", + "pages": [ + "l/pt/getting-started/introduction", + "l/pt/getting-started/key-features", + "l/pt/getting-started/quickstart" + ] + }, + { + "group": "Core Concepts", + "pages": [ + "l/pt/getting-started/core-concepts/data-model", + "l/pt/getting-started/core-concepts/layout", + "l/pt/getting-started/core-concepts/workflows", + "l/pt/getting-started/core-concepts/calendar-and-email", + "l/pt/getting-started/core-concepts/ai", + "l/pt/getting-started/core-concepts/apps", + "l/pt/getting-started/core-concepts/dashboards", + "l/pt/getting-started/core-concepts/glossary" + ] + } + ] + }, { "tab": "User Guide", "groups": [ { - "group": "Discover Twenty", - "icon": "rocket", + "group": "Overview", "pages": [ - "l/pt/user-guide/introduction", - { - "group": "Capabilities", - "pages": [ - "l/pt/user-guide/getting-started/capabilities/what-is-twenty", - "l/pt/user-guide/getting-started/capabilities/implementation-services", - "l/pt/user-guide/getting-started/capabilities/glossary" - ] - }, - { - "group": "How-Tos", - "pages": [ - "l/pt/user-guide/getting-started/how-tos/create-workspace", - "l/pt/user-guide/getting-started/how-tos/navigate-around-twenty", - "l/pt/user-guide/getting-started/how-tos/configure-your-workspace" - ] - } + "l/pt/user-guide/introduction" ] }, { @@ -4090,7 +3523,7 @@ "pages": [ "l/pt/user-guide/data-model/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "l/pt/user-guide/data-model/capabilities/objects", "l/pt/user-guide/data-model/capabilities/fields", @@ -4116,7 +3549,7 @@ "pages": [ "l/pt/user-guide/data-migration/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "l/pt/user-guide/data-migration/capabilities/file-formats", "l/pt/user-guide/data-migration/capabilities/field-mapping", @@ -4148,7 +3581,7 @@ "pages": [ "l/pt/user-guide/calendar-emails/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "l/pt/user-guide/calendar-emails/capabilities/mailbox", "l/pt/user-guide/calendar-emails/capabilities/calendar" @@ -4173,7 +3606,7 @@ "pages": [ "l/pt/user-guide/workflows/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "l/pt/user-guide/workflows/capabilities/workflow-triggers", "l/pt/user-guide/workflows/capabilities/workflow-actions", @@ -4236,7 +3669,7 @@ "pages": [ "l/pt/user-guide/ai/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "l/pt/user-guide/ai/capabilities/ai-chatbot", "l/pt/user-guide/ai/capabilities/ai-agents", @@ -4252,19 +3685,26 @@ ] }, { - "group": "Visualizações e pipelines", - "icon": "table", + "group": "Layout", + "icon": "table-columns", "pages": [ - "l/pt/user-guide/views-pipelines/overview", + "l/pt/user-guide/layout/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ - "l/pt/user-guide/views-pipelines/capabilities/table-views", - "l/pt/user-guide/views-pipelines/capabilities/kanban-views", - "l/pt/user-guide/views-pipelines/capabilities/calendar-view", - "l/pt/user-guide/views-pipelines/capabilities/filters-and-sorting", - "l/pt/user-guide/views-pipelines/capabilities/fields-and-columns", - "l/pt/user-guide/views-pipelines/capabilities/view-settings" + "l/pt/user-guide/layout/capabilities/navigation", + { + "group": "Views", + "pages": [ + "l/pt/user-guide/views-pipelines/capabilities/table-views", + "l/pt/user-guide/views-pipelines/capabilities/kanban-views", + "l/pt/user-guide/views-pipelines/capabilities/calendar-view", + "l/pt/user-guide/views-pipelines/capabilities/filters-and-sorting", + "l/pt/user-guide/views-pipelines/capabilities/fields-and-columns", + "l/pt/user-guide/views-pipelines/capabilities/view-settings" + ] + }, + "l/pt/user-guide/layout/capabilities/record-pages" ] }, { @@ -4287,7 +3727,7 @@ "pages": [ "l/pt/user-guide/dashboards/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "l/pt/user-guide/dashboards/capabilities/dashboards", "l/pt/user-guide/dashboards/capabilities/widgets", @@ -4309,7 +3749,7 @@ "pages": [ "l/pt/user-guide/permissions-access/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "l/pt/user-guide/permissions-access/capabilities/permissions", "l/pt/user-guide/permissions-access/capabilities/sso-configuration" @@ -4329,7 +3769,7 @@ "pages": [ "l/pt/user-guide/billing/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "l/pt/user-guide/billing/capabilities/pricing-plans", "l/pt/user-guide/billing/capabilities/credits" @@ -4349,7 +3789,7 @@ "pages": [ "l/pt/user-guide/settings/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "l/pt/user-guide/settings/capabilities/workspace-settings", "l/pt/user-guide/settings/capabilities/member-management", @@ -4373,129 +3813,49 @@ "tab": "Programadores", "groups": [ { - "group": "Programadores", + "group": "Overview", "pages": [ "l/pt/developers/introduction" ] }, { - "group": "Extend", - "icon": "plug", + "group": "Aplicativos", + "pages": [ + "l/pt/developers/extend/apps/getting-started", + "l/pt/developers/extend/apps/building", + "l/pt/developers/extend/apps/data-model", + "l/pt/developers/extend/apps/logic-functions", + "l/pt/developers/extend/apps/front-components", + "l/pt/developers/extend/apps/layout", + "l/pt/developers/extend/apps/skills-and-agents", + "l/pt/developers/extend/apps/cli-and-testing", + "l/pt/developers/extend/apps/publishing" + ] + }, + { + "group": "API", "pages": [ "l/pt/developers/extend/api", "l/pt/developers/extend/webhooks", - { - "group": "Aplicativos", - "pages": [ - "l/pt/developers/extend/apps/getting-started", - "l/pt/developers/extend/apps/building", - "l/pt/developers/extend/apps/publishing" - ] - } + "l/pt/developers/extend/oauth" ] }, { "group": "Self-Host", - "icon": "desktop", "pages": [ - "l/pt/developers/self-host/self-host", - { - "group": "Capabilities", - "pages": [ - "l/pt/developers/self-host/capabilities/docker-compose", - "l/pt/developers/self-host/capabilities/setup", - "l/pt/developers/self-host/capabilities/upgrade-guide", - "l/pt/developers/self-host/capabilities/cloud-providers", - "l/pt/developers/self-host/capabilities/troubleshooting" - ] - } + "l/pt/developers/self-host/capabilities/docker-compose", + "l/pt/developers/self-host/capabilities/setup", + "l/pt/developers/self-host/capabilities/upgrade-guide", + "l/pt/developers/self-host/capabilities/cloud-providers", + "l/pt/developers/self-host/capabilities/troubleshooting" ] }, { "group": "Contribute", - "icon": "github", "pages": [ - "l/pt/developers/contribute/contribute", - { - "group": "Capabilities", - "pages": [ - "l/pt/developers/contribute/capabilities/local-setup", - "l/pt/developers/contribute/capabilities/bug-and-requests", - { - "group": "Desenvolvimento Frontend", - "pages": [ - "l/pt/developers/contribute/capabilities/frontend-development/storybook", - { - "group": "Twenty UI", - "pages": [ - "l/pt/twenty-ui/introduction", - { - "group": "Exibir", - "pages": [ - "l/pt/twenty-ui/display/checkmark", - "l/pt/twenty-ui/display/chip", - "l/pt/twenty-ui/display/icons", - "l/pt/twenty-ui/display/soon-pill", - "l/pt/twenty-ui/display/tag", - "l/pt/twenty-ui/display/app-tooltip" - ] - }, - { - "group": "Feedback", - "pages": [ - "l/pt/twenty-ui/progress-bar" - ] - }, - { - "group": "Entrada", - "pages": [ - "l/pt/twenty-ui/input/buttons", - "l/pt/twenty-ui/input/color-scheme", - "l/pt/twenty-ui/input/text", - "l/pt/twenty-ui/input/checkbox", - "l/pt/twenty-ui/input/icon-picker", - "l/pt/twenty-ui/input/image-input", - "l/pt/twenty-ui/input/radio", - "l/pt/twenty-ui/input/select", - "l/pt/twenty-ui/input/toggle", - "l/pt/twenty-ui/input/block-editor" - ] - }, - { - "group": "Navegação", - "pages": [ - "l/pt/twenty-ui/navigation", - "l/pt/twenty-ui/navigation/breadcrumb", - "l/pt/twenty-ui/navigation/links", - "l/pt/twenty-ui/navigation/menu-item", - "l/pt/twenty-ui/navigation/navigation-bar", - "l/pt/twenty-ui/navigation/step-bar" - ] - } - ] - }, - "l/pt/developers/contribute/capabilities/frontend-development/frontend-commands", - "l/pt/developers/contribute/capabilities/frontend-development/work-with-figma", - "l/pt/developers/contribute/capabilities/frontend-development/best-practices-front", - "l/pt/developers/contribute/capabilities/frontend-development/style-guide", - "l/pt/developers/contribute/capabilities/frontend-development/folder-architecture-front", - "l/pt/developers/contribute/capabilities/frontend-development/hotkeys" - ] - }, - { - "group": "Desenvolvimento Backend", - "pages": [ - "l/pt/developers/contribute/capabilities/backend-development/server-commands", - "l/pt/developers/contribute/capabilities/backend-development/feature-flags", - "l/pt/developers/contribute/capabilities/backend-development/folder-architecture-server", - "l/pt/developers/contribute/capabilities/backend-development/zapier", - "l/pt/developers/contribute/capabilities/backend-development/best-practices-server", - "l/pt/developers/contribute/capabilities/backend-development/custom-objects", - "l/pt/developers/contribute/capabilities/backend-development/queue" - ] - } - ] - } + "l/pt/developers/contribute/capabilities/local-setup", + "l/pt/developers/contribute/commands", + "l/pt/developers/contribute/style-guide" ] } ] @@ -4505,30 +3865,39 @@ { "language": "ro", "tabs": [ + { + "tab": "Getting Started", + "groups": [ + { + "group": "Welcome", + "pages": [ + "l/ro/getting-started/introduction", + "l/ro/getting-started/key-features", + "l/ro/getting-started/quickstart" + ] + }, + { + "group": "Core Concepts", + "pages": [ + "l/ro/getting-started/core-concepts/data-model", + "l/ro/getting-started/core-concepts/layout", + "l/ro/getting-started/core-concepts/workflows", + "l/ro/getting-started/core-concepts/calendar-and-email", + "l/ro/getting-started/core-concepts/ai", + "l/ro/getting-started/core-concepts/apps", + "l/ro/getting-started/core-concepts/dashboards", + "l/ro/getting-started/core-concepts/glossary" + ] + } + ] + }, { "tab": "User Guide", "groups": [ { - "group": "Discover Twenty", - "icon": "rocket", + "group": "Overview", "pages": [ - "l/ro/user-guide/introduction", - { - "group": "Capabilities", - "pages": [ - "l/ro/user-guide/getting-started/capabilities/what-is-twenty", - "l/ro/user-guide/getting-started/capabilities/implementation-services", - "l/ro/user-guide/getting-started/capabilities/glossary" - ] - }, - { - "group": "How-Tos", - "pages": [ - "l/ro/user-guide/getting-started/how-tos/create-workspace", - "l/ro/user-guide/getting-started/how-tos/navigate-around-twenty", - "l/ro/user-guide/getting-started/how-tos/configure-your-workspace" - ] - } + "l/ro/user-guide/introduction" ] }, { @@ -4537,7 +3906,7 @@ "pages": [ "l/ro/user-guide/data-model/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "l/ro/user-guide/data-model/capabilities/objects", "l/ro/user-guide/data-model/capabilities/fields", @@ -4563,7 +3932,7 @@ "pages": [ "l/ro/user-guide/data-migration/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "l/ro/user-guide/data-migration/capabilities/file-formats", "l/ro/user-guide/data-migration/capabilities/field-mapping", @@ -4595,7 +3964,7 @@ "pages": [ "l/ro/user-guide/calendar-emails/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "l/ro/user-guide/calendar-emails/capabilities/mailbox", "l/ro/user-guide/calendar-emails/capabilities/calendar" @@ -4620,7 +3989,7 @@ "pages": [ "l/ro/user-guide/workflows/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "l/ro/user-guide/workflows/capabilities/workflow-triggers", "l/ro/user-guide/workflows/capabilities/workflow-actions", @@ -4683,7 +4052,7 @@ "pages": [ "l/ro/user-guide/ai/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "l/ro/user-guide/ai/capabilities/ai-chatbot", "l/ro/user-guide/ai/capabilities/ai-agents", @@ -4699,19 +4068,26 @@ ] }, { - "group": "Vizualizări și fluxuri", - "icon": "table", + "group": "Layout", + "icon": "table-columns", "pages": [ - "l/ro/user-guide/views-pipelines/overview", + "l/ro/user-guide/layout/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ - "l/ro/user-guide/views-pipelines/capabilities/table-views", - "l/ro/user-guide/views-pipelines/capabilities/kanban-views", - "l/ro/user-guide/views-pipelines/capabilities/calendar-view", - "l/ro/user-guide/views-pipelines/capabilities/filters-and-sorting", - "l/ro/user-guide/views-pipelines/capabilities/fields-and-columns", - "l/ro/user-guide/views-pipelines/capabilities/view-settings" + "l/ro/user-guide/layout/capabilities/navigation", + { + "group": "Views", + "pages": [ + "l/ro/user-guide/views-pipelines/capabilities/table-views", + "l/ro/user-guide/views-pipelines/capabilities/kanban-views", + "l/ro/user-guide/views-pipelines/capabilities/calendar-view", + "l/ro/user-guide/views-pipelines/capabilities/filters-and-sorting", + "l/ro/user-guide/views-pipelines/capabilities/fields-and-columns", + "l/ro/user-guide/views-pipelines/capabilities/view-settings" + ] + }, + "l/ro/user-guide/layout/capabilities/record-pages" ] }, { @@ -4734,7 +4110,7 @@ "pages": [ "l/ro/user-guide/dashboards/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "l/ro/user-guide/dashboards/capabilities/dashboards", "l/ro/user-guide/dashboards/capabilities/widgets", @@ -4756,7 +4132,7 @@ "pages": [ "l/ro/user-guide/permissions-access/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "l/ro/user-guide/permissions-access/capabilities/permissions", "l/ro/user-guide/permissions-access/capabilities/sso-configuration" @@ -4776,7 +4152,7 @@ "pages": [ "l/ro/user-guide/billing/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "l/ro/user-guide/billing/capabilities/pricing-plans", "l/ro/user-guide/billing/capabilities/credits" @@ -4796,7 +4172,7 @@ "pages": [ "l/ro/user-guide/settings/overview", { - "group": "Capabilities", + "group": "Reference", "pages": [ "l/ro/user-guide/settings/capabilities/workspace-settings", "l/ro/user-guide/settings/capabilities/member-management", @@ -4820,129 +4196,49 @@ "tab": "Dezvoltatori", "groups": [ { - "group": "Dezvoltatori", + "group": "Overview", "pages": [ "l/ro/developers/introduction" ] }, { - "group": "Extend", - "icon": "plug", + "group": "Aplicații", + "pages": [ + "l/ro/developers/extend/apps/getting-started", + "l/ro/developers/extend/apps/building", + "l/ro/developers/extend/apps/data-model", + "l/ro/developers/extend/apps/logic-functions", + "l/ro/developers/extend/apps/front-components", + "l/ro/developers/extend/apps/layout", + "l/ro/developers/extend/apps/skills-and-agents", + "l/ro/developers/extend/apps/cli-and-testing", + "l/ro/developers/extend/apps/publishing" + ] + }, + { + "group": "API", "pages": [ "l/ro/developers/extend/api", "l/ro/developers/extend/webhooks", - { - "group": "Aplicații", - "pages": [ - "l/ro/developers/extend/apps/getting-started", - "l/ro/developers/extend/apps/building", - "l/ro/developers/extend/apps/publishing" - ] - } + "l/ro/developers/extend/oauth" ] }, { "group": "Self-Host", - "icon": "desktop", "pages": [ - "l/ro/developers/self-host/self-host", - { - "group": "Capabilities", - "pages": [ - "l/ro/developers/self-host/capabilities/docker-compose", - "l/ro/developers/self-host/capabilities/setup", - "l/ro/developers/self-host/capabilities/upgrade-guide", - "l/ro/developers/self-host/capabilities/cloud-providers", - "l/ro/developers/self-host/capabilities/troubleshooting" - ] - } + "l/ro/developers/self-host/capabilities/docker-compose", + "l/ro/developers/self-host/capabilities/setup", + "l/ro/developers/self-host/capabilities/upgrade-guide", + "l/ro/developers/self-host/capabilities/cloud-providers", + "l/ro/developers/self-host/capabilities/troubleshooting" ] }, { "group": "Contribute", - "icon": "github", "pages": [ - "l/ro/developers/contribute/contribute", - { - "group": "Capabilities", - "pages": [ - "l/ro/developers/contribute/capabilities/local-setup", - "l/ro/developers/contribute/capabilities/bug-and-requests", - { - "group": "Frontend Development", - "pages": [ - "l/ro/developers/contribute/capabilities/frontend-development/storybook", - { - "group": "Twenty UI", - "pages": [ - "l/ro/twenty-ui/introduction", - { - "group": "Afișare", - "pages": [ - "l/ro/twenty-ui/display/checkmark", - "l/ro/twenty-ui/display/chip", - "l/ro/twenty-ui/display/icons", - "l/ro/twenty-ui/display/soon-pill", - "l/ro/twenty-ui/display/tag", - "l/ro/twenty-ui/display/app-tooltip" - ] - }, - { - "group": "Feedback", - "pages": [ - "l/ro/twenty-ui/progress-bar" - ] - }, - { - "group": "Intrare", - "pages": [ - "l/ro/twenty-ui/input/buttons", - "l/ro/twenty-ui/input/color-scheme", - "l/ro/twenty-ui/input/text", - "l/ro/twenty-ui/input/checkbox", - "l/ro/twenty-ui/input/icon-picker", - "l/ro/twenty-ui/input/image-input", - "l/ro/twenty-ui/input/radio", - "l/ro/twenty-ui/input/select", - "l/ro/twenty-ui/input/toggle", - "l/ro/twenty-ui/input/block-editor" - ] - }, - { - "group": "Navigare", - "pages": [ - "l/ro/twenty-ui/navigation", - "l/ro/twenty-ui/navigation/breadcrumb", - "l/ro/twenty-ui/navigation/links", - "l/ro/twenty-ui/navigation/menu-item", - "l/ro/twenty-ui/navigation/navigation-bar", - "l/ro/twenty-ui/navigation/step-bar" - ] - } - ] - }, - "l/ro/developers/contribute/capabilities/frontend-development/frontend-commands", - "l/ro/developers/contribute/capabilities/frontend-development/work-with-figma", - "l/ro/developers/contribute/capabilities/frontend-development/best-practices-front", - "l/ro/developers/contribute/capabilities/frontend-development/style-guide", - "l/ro/developers/contribute/capabilities/frontend-development/folder-architecture-front", - "l/ro/developers/contribute/capabilities/frontend-development/hotkeys" - ] - }, - { - "group": "Dezvoltare Backend", - "pages": [ - "l/ro/developers/contribute/capabilities/backend-development/server-commands", - "l/ro/developers/contribute/capabilities/backend-development/feature-flags", - "l/ro/developers/contribute/capabilities/backend-development/folder-architecture-server", - "l/ro/developers/contribute/capabilities/backend-development/zapier", - "l/ro/developers/contribute/capabilities/backend-development/best-practices-server", - "l/ro/developers/contribute/capabilities/backend-development/custom-objects", - "l/ro/developers/contribute/capabilities/backend-development/queue" - ] - } - ] - } + "l/ro/developers/contribute/capabilities/local-setup", + "l/ro/developers/contribute/commands", + "l/ro/developers/contribute/style-guide" ] } ] @@ -4952,30 +4248,39 @@ { "language": "ru", "tabs": [ + { + "tab": "Getting Started", + "groups": [ + { + "group": "Welcome", + "pages": [ + "l/ru/getting-started/introduction", + "l/ru/getting-started/key-features", + "l/ru/getting-started/quickstart" + ] + }, + { + "group": "Core Concepts", + "pages": [ + "l/ru/getting-started/core-concepts/data-model", + "l/ru/getting-started/core-concepts/layout", + "l/ru/getting-started/core-concepts/workflows", + "l/ru/getting-started/core-concepts/calendar-and-email", + "l/ru/getting-started/core-concepts/ai", + "l/ru/getting-started/core-concepts/apps", + "l/ru/getting-started/core-concepts/dashboards", + "l/ru/getting-started/core-concepts/glossary" + ] + } + ] + }, { "tab": "Руководство пользователя", "groups": [ { - "group": "Откройте Twenty", - "icon": "rocket", + "group": "Overview", "pages": [ - "l/ru/user-guide/introduction", - { - "group": "Возможности", - "pages": [ - "l/ru/user-guide/getting-started/capabilities/what-is-twenty", - "l/ru/user-guide/getting-started/capabilities/implementation-services", - "l/ru/user-guide/getting-started/capabilities/glossary" - ] - }, - { - "group": "Инструкции", - "pages": [ - "l/ru/user-guide/getting-started/how-tos/create-workspace", - "l/ru/user-guide/getting-started/how-tos/navigate-around-twenty", - "l/ru/user-guide/getting-started/how-tos/configure-your-workspace" - ] - } + "l/ru/user-guide/introduction" ] }, { @@ -4984,7 +4289,7 @@ "pages": [ "l/ru/user-guide/data-model/overview", { - "group": "Возможности", + "group": "Reference", "pages": [ "l/ru/user-guide/data-model/capabilities/objects", "l/ru/user-guide/data-model/capabilities/fields", @@ -5010,7 +4315,7 @@ "pages": [ "l/ru/user-guide/data-migration/overview", { - "group": "Возможности", + "group": "Reference", "pages": [ "l/ru/user-guide/data-migration/capabilities/file-formats", "l/ru/user-guide/data-migration/capabilities/field-mapping", @@ -5042,7 +4347,7 @@ "pages": [ "l/ru/user-guide/calendar-emails/overview", { - "group": "Возможности", + "group": "Reference", "pages": [ "l/ru/user-guide/calendar-emails/capabilities/mailbox", "l/ru/user-guide/calendar-emails/capabilities/calendar" @@ -5067,7 +4372,7 @@ "pages": [ "l/ru/user-guide/workflows/overview", { - "group": "Возможности", + "group": "Reference", "pages": [ "l/ru/user-guide/workflows/capabilities/workflow-triggers", "l/ru/user-guide/workflows/capabilities/workflow-actions", @@ -5130,7 +4435,7 @@ "pages": [ "l/ru/user-guide/ai/overview", { - "group": "Возможности", + "group": "Reference", "pages": [ "l/ru/user-guide/ai/capabilities/ai-chatbot", "l/ru/user-guide/ai/capabilities/ai-agents", @@ -5146,23 +4451,30 @@ ] }, { - "group": "Представления и воронки", - "icon": "table", + "group": "Layout", + "icon": "table-columns", "pages": [ - "l/ru/user-guide/views-pipelines/overview", + "l/ru/user-guide/layout/overview", { - "group": "Возможности", + "group": "Reference", "pages": [ - "l/ru/user-guide/views-pipelines/capabilities/table-views", - "l/ru/user-guide/views-pipelines/capabilities/kanban-views", - "l/ru/user-guide/views-pipelines/capabilities/calendar-view", - "l/ru/user-guide/views-pipelines/capabilities/filters-and-sorting", - "l/ru/user-guide/views-pipelines/capabilities/fields-and-columns", - "l/ru/user-guide/views-pipelines/capabilities/view-settings" + "l/ru/user-guide/layout/capabilities/navigation", + { + "group": "Views", + "pages": [ + "l/ru/user-guide/views-pipelines/capabilities/table-views", + "l/ru/user-guide/views-pipelines/capabilities/kanban-views", + "l/ru/user-guide/views-pipelines/capabilities/calendar-view", + "l/ru/user-guide/views-pipelines/capabilities/filters-and-sorting", + "l/ru/user-guide/views-pipelines/capabilities/fields-and-columns", + "l/ru/user-guide/views-pipelines/capabilities/view-settings" + ] + }, + "l/ru/user-guide/layout/capabilities/record-pages" ] }, { - "group": "Инструкции", + "group": "How-Tos", "pages": [ "l/ru/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping", "l/ru/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects", @@ -5181,7 +4493,7 @@ "pages": [ "l/ru/user-guide/dashboards/overview", { - "group": "Возможности", + "group": "Reference", "pages": [ "l/ru/user-guide/dashboards/capabilities/dashboards", "l/ru/user-guide/dashboards/capabilities/widgets", @@ -5203,7 +4515,7 @@ "pages": [ "l/ru/user-guide/permissions-access/overview", { - "group": "Возможности", + "group": "Reference", "pages": [ "l/ru/user-guide/permissions-access/capabilities/permissions", "l/ru/user-guide/permissions-access/capabilities/sso-configuration" @@ -5223,7 +4535,7 @@ "pages": [ "l/ru/user-guide/billing/overview", { - "group": "Возможности", + "group": "Reference", "pages": [ "l/ru/user-guide/billing/capabilities/pricing-plans", "l/ru/user-guide/billing/capabilities/credits" @@ -5243,7 +4555,7 @@ "pages": [ "l/ru/user-guide/settings/overview", { - "group": "Возможности", + "group": "Reference", "pages": [ "l/ru/user-guide/settings/capabilities/workspace-settings", "l/ru/user-guide/settings/capabilities/member-management", @@ -5267,129 +4579,49 @@ "tab": "Разработчики", "groups": [ { - "group": "Разработчики", + "group": "Overview", "pages": [ "l/ru/developers/introduction" ] }, { - "group": "Расширяйте", - "icon": "plug", + "group": "Приложения", + "pages": [ + "l/ru/developers/extend/apps/getting-started", + "l/ru/developers/extend/apps/building", + "l/ru/developers/extend/apps/data-model", + "l/ru/developers/extend/apps/logic-functions", + "l/ru/developers/extend/apps/front-components", + "l/ru/developers/extend/apps/layout", + "l/ru/developers/extend/apps/skills-and-agents", + "l/ru/developers/extend/apps/cli-and-testing", + "l/ru/developers/extend/apps/publishing" + ] + }, + { + "group": "API", "pages": [ "l/ru/developers/extend/api", "l/ru/developers/extend/webhooks", - { - "group": "Приложения", - "pages": [ - "l/ru/developers/extend/apps/getting-started", - "l/ru/developers/extend/apps/building", - "l/ru/developers/extend/apps/publishing" - ] - } + "l/ru/developers/extend/oauth" ] }, { "group": "Самостоятельный хостинг", - "icon": "desktop", "pages": [ - "l/ru/developers/self-host/self-host", - { - "group": "Возможности", - "pages": [ - "l/ru/developers/self-host/capabilities/docker-compose", - "l/ru/developers/self-host/capabilities/setup", - "l/ru/developers/self-host/capabilities/upgrade-guide", - "l/ru/developers/self-host/capabilities/cloud-providers", - "l/ru/developers/self-host/capabilities/troubleshooting" - ] - } + "l/ru/developers/self-host/capabilities/docker-compose", + "l/ru/developers/self-host/capabilities/setup", + "l/ru/developers/self-host/capabilities/upgrade-guide", + "l/ru/developers/self-host/capabilities/cloud-providers", + "l/ru/developers/self-host/capabilities/troubleshooting" ] }, { "group": "Внести вклад", - "icon": "github", "pages": [ - "l/ru/developers/contribute/contribute", - { - "group": "Возможности", - "pages": [ - "l/ru/developers/contribute/capabilities/local-setup", - "l/ru/developers/contribute/capabilities/bug-and-requests", - { - "group": "Разработка интерфейса", - "pages": [ - "l/ru/developers/contribute/capabilities/frontend-development/storybook", - { - "group": "Twenty UI", - "pages": [ - "l/ru/twenty-ui/introduction", - { - "group": "Отображение", - "pages": [ - "l/ru/twenty-ui/display/checkmark", - "l/ru/twenty-ui/display/chip", - "l/ru/twenty-ui/display/icons", - "l/ru/twenty-ui/display/soon-pill", - "l/ru/twenty-ui/display/tag", - "l/ru/twenty-ui/display/app-tooltip" - ] - }, - { - "group": "Обратная связь", - "pages": [ - "l/ru/twenty-ui/progress-bar" - ] - }, - { - "group": "Ввод", - "pages": [ - "l/ru/twenty-ui/input/buttons", - "l/ru/twenty-ui/input/color-scheme", - "l/ru/twenty-ui/input/text", - "l/ru/twenty-ui/input/checkbox", - "l/ru/twenty-ui/input/icon-picker", - "l/ru/twenty-ui/input/image-input", - "l/ru/twenty-ui/input/radio", - "l/ru/twenty-ui/input/select", - "l/ru/twenty-ui/input/toggle", - "l/ru/twenty-ui/input/block-editor" - ] - }, - { - "group": "Навигация", - "pages": [ - "l/ru/twenty-ui/navigation", - "l/ru/twenty-ui/navigation/breadcrumb", - "l/ru/twenty-ui/navigation/links", - "l/ru/twenty-ui/navigation/menu-item", - "l/ru/twenty-ui/navigation/navigation-bar", - "l/ru/twenty-ui/navigation/step-bar" - ] - } - ] - }, - "l/ru/developers/contribute/capabilities/frontend-development/frontend-commands", - "l/ru/developers/contribute/capabilities/frontend-development/work-with-figma", - "l/ru/developers/contribute/capabilities/frontend-development/best-practices-front", - "l/ru/developers/contribute/capabilities/frontend-development/style-guide", - "l/ru/developers/contribute/capabilities/frontend-development/folder-architecture-front", - "l/ru/developers/contribute/capabilities/frontend-development/hotkeys" - ] - }, - { - "group": "Разработка серверной части", - "pages": [ - "l/ru/developers/contribute/capabilities/backend-development/server-commands", - "l/ru/developers/contribute/capabilities/backend-development/feature-flags", - "l/ru/developers/contribute/capabilities/backend-development/folder-architecture-server", - "l/ru/developers/contribute/capabilities/backend-development/zapier", - "l/ru/developers/contribute/capabilities/backend-development/best-practices-server", - "l/ru/developers/contribute/capabilities/backend-development/custom-objects", - "l/ru/developers/contribute/capabilities/backend-development/queue" - ] - } - ] - } + "l/ru/developers/contribute/capabilities/local-setup", + "l/ru/developers/contribute/commands", + "l/ru/developers/contribute/style-guide" ] } ] @@ -5399,30 +4631,39 @@ { "language": "tr", "tabs": [ + { + "tab": "Getting Started", + "groups": [ + { + "group": "Welcome", + "pages": [ + "l/tr/getting-started/introduction", + "l/tr/getting-started/key-features", + "l/tr/getting-started/quickstart" + ] + }, + { + "group": "Core Concepts", + "pages": [ + "l/tr/getting-started/core-concepts/data-model", + "l/tr/getting-started/core-concepts/layout", + "l/tr/getting-started/core-concepts/workflows", + "l/tr/getting-started/core-concepts/calendar-and-email", + "l/tr/getting-started/core-concepts/ai", + "l/tr/getting-started/core-concepts/apps", + "l/tr/getting-started/core-concepts/dashboards", + "l/tr/getting-started/core-concepts/glossary" + ] + } + ] + }, { "tab": "Kullanıcı Rehberi", "groups": [ { - "group": "Twenty'yi Keşfedin", - "icon": "rocket", + "group": "Overview", "pages": [ - "l/tr/user-guide/introduction", - { - "group": "Yetkinlikler", - "pages": [ - "l/tr/user-guide/getting-started/capabilities/what-is-twenty", - "l/tr/user-guide/getting-started/capabilities/implementation-services", - "l/tr/user-guide/getting-started/capabilities/glossary" - ] - }, - { - "group": "Nasıl Yapılırlar", - "pages": [ - "l/tr/user-guide/getting-started/how-tos/create-workspace", - "l/tr/user-guide/getting-started/how-tos/navigate-around-twenty", - "l/tr/user-guide/getting-started/how-tos/configure-your-workspace" - ] - } + "l/tr/user-guide/introduction" ] }, { @@ -5431,7 +4672,7 @@ "pages": [ "l/tr/user-guide/data-model/overview", { - "group": "Yetkinlikler", + "group": "Reference", "pages": [ "l/tr/user-guide/data-model/capabilities/objects", "l/tr/user-guide/data-model/capabilities/fields", @@ -5457,7 +4698,7 @@ "pages": [ "l/tr/user-guide/data-migration/overview", { - "group": "Yetkinlikler", + "group": "Reference", "pages": [ "l/tr/user-guide/data-migration/capabilities/file-formats", "l/tr/user-guide/data-migration/capabilities/field-mapping", @@ -5489,7 +4730,7 @@ "pages": [ "l/tr/user-guide/calendar-emails/overview", { - "group": "Yetkinlikler", + "group": "Reference", "pages": [ "l/tr/user-guide/calendar-emails/capabilities/mailbox", "l/tr/user-guide/calendar-emails/capabilities/calendar" @@ -5514,7 +4755,7 @@ "pages": [ "l/tr/user-guide/workflows/overview", { - "group": "Yetkinlikler", + "group": "Reference", "pages": [ "l/tr/user-guide/workflows/capabilities/workflow-triggers", "l/tr/user-guide/workflows/capabilities/workflow-actions", @@ -5577,7 +4818,7 @@ "pages": [ "l/tr/user-guide/ai/overview", { - "group": "Yetkinlikler", + "group": "Reference", "pages": [ "l/tr/user-guide/ai/capabilities/ai-chatbot", "l/tr/user-guide/ai/capabilities/ai-agents", @@ -5593,23 +4834,30 @@ ] }, { - "group": "Görünümler ve Boru Hatları", - "icon": "table", + "group": "Layout", + "icon": "table-columns", "pages": [ - "l/tr/user-guide/views-pipelines/overview", + "l/tr/user-guide/layout/overview", { - "group": "Yetkinlikler", + "group": "Reference", "pages": [ - "l/tr/user-guide/views-pipelines/capabilities/table-views", - "l/tr/user-guide/views-pipelines/capabilities/kanban-views", - "l/tr/user-guide/views-pipelines/capabilities/calendar-view", - "l/tr/user-guide/views-pipelines/capabilities/filters-and-sorting", - "l/tr/user-guide/views-pipelines/capabilities/fields-and-columns", - "l/tr/user-guide/views-pipelines/capabilities/view-settings" + "l/tr/user-guide/layout/capabilities/navigation", + { + "group": "Views", + "pages": [ + "l/tr/user-guide/views-pipelines/capabilities/table-views", + "l/tr/user-guide/views-pipelines/capabilities/kanban-views", + "l/tr/user-guide/views-pipelines/capabilities/calendar-view", + "l/tr/user-guide/views-pipelines/capabilities/filters-and-sorting", + "l/tr/user-guide/views-pipelines/capabilities/fields-and-columns", + "l/tr/user-guide/views-pipelines/capabilities/view-settings" + ] + }, + "l/tr/user-guide/layout/capabilities/record-pages" ] }, { - "group": "Nasıl Yapılırlar", + "group": "How-Tos", "pages": [ "l/tr/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping", "l/tr/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects", @@ -5628,7 +4876,7 @@ "pages": [ "l/tr/user-guide/dashboards/overview", { - "group": "Yetkinlikler", + "group": "Reference", "pages": [ "l/tr/user-guide/dashboards/capabilities/dashboards", "l/tr/user-guide/dashboards/capabilities/widgets", @@ -5650,7 +4898,7 @@ "pages": [ "l/tr/user-guide/permissions-access/overview", { - "group": "Yetkinlikler", + "group": "Reference", "pages": [ "l/tr/user-guide/permissions-access/capabilities/permissions", "l/tr/user-guide/permissions-access/capabilities/sso-configuration" @@ -5670,7 +4918,7 @@ "pages": [ "l/tr/user-guide/billing/overview", { - "group": "Yetkinlikler", + "group": "Reference", "pages": [ "l/tr/user-guide/billing/capabilities/pricing-plans", "l/tr/user-guide/billing/capabilities/credits" @@ -5690,7 +4938,7 @@ "pages": [ "l/tr/user-guide/settings/overview", { - "group": "Yetkinlikler", + "group": "Reference", "pages": [ "l/tr/user-guide/settings/capabilities/workspace-settings", "l/tr/user-guide/settings/capabilities/member-management", @@ -5714,129 +4962,49 @@ "tab": "Geliştiriciler", "groups": [ { - "group": "Geliştiriciler", + "group": "Overview", "pages": [ "l/tr/developers/introduction" ] }, { - "group": "Genişlet", - "icon": "plug", + "group": "Uygulamalar", + "pages": [ + "l/tr/developers/extend/apps/getting-started", + "l/tr/developers/extend/apps/building", + "l/tr/developers/extend/apps/data-model", + "l/tr/developers/extend/apps/logic-functions", + "l/tr/developers/extend/apps/front-components", + "l/tr/developers/extend/apps/layout", + "l/tr/developers/extend/apps/skills-and-agents", + "l/tr/developers/extend/apps/cli-and-testing", + "l/tr/developers/extend/apps/publishing" + ] + }, + { + "group": "API", "pages": [ "l/tr/developers/extend/api", "l/tr/developers/extend/webhooks", - { - "group": "Uygulamalar", - "pages": [ - "l/tr/developers/extend/apps/getting-started", - "l/tr/developers/extend/apps/building", - "l/tr/developers/extend/apps/publishing" - ] - } + "l/tr/developers/extend/oauth" ] }, { "group": "Kendi Kendine Barındırma", - "icon": "desktop", "pages": [ - "l/tr/developers/self-host/self-host", - { - "group": "Yetkinlikler", - "pages": [ - "l/tr/developers/self-host/capabilities/docker-compose", - "l/tr/developers/self-host/capabilities/setup", - "l/tr/developers/self-host/capabilities/upgrade-guide", - "l/tr/developers/self-host/capabilities/cloud-providers", - "l/tr/developers/self-host/capabilities/troubleshooting" - ] - } + "l/tr/developers/self-host/capabilities/docker-compose", + "l/tr/developers/self-host/capabilities/setup", + "l/tr/developers/self-host/capabilities/upgrade-guide", + "l/tr/developers/self-host/capabilities/cloud-providers", + "l/tr/developers/self-host/capabilities/troubleshooting" ] }, { "group": "Katkıda Bulunun", - "icon": "github", "pages": [ - "l/tr/developers/contribute/contribute", - { - "group": "Yetkinlikler", - "pages": [ - "l/tr/developers/contribute/capabilities/local-setup", - "l/tr/developers/contribute/capabilities/bug-and-requests", - { - "group": "Frontend Geliştirme", - "pages": [ - "l/tr/developers/contribute/capabilities/frontend-development/storybook", - { - "group": "Twenty UI", - "pages": [ - "l/tr/twenty-ui/introduction", - { - "group": "Görüntüle", - "pages": [ - "l/tr/twenty-ui/display/checkmark", - "l/tr/twenty-ui/display/chip", - "l/tr/twenty-ui/display/icons", - "l/tr/twenty-ui/display/soon-pill", - "l/tr/twenty-ui/display/tag", - "l/tr/twenty-ui/display/app-tooltip" - ] - }, - { - "group": "Geri Bildirim", - "pages": [ - "l/tr/twenty-ui/progress-bar" - ] - }, - { - "group": "Girdi", - "pages": [ - "l/tr/twenty-ui/input/buttons", - "l/tr/twenty-ui/input/color-scheme", - "l/tr/twenty-ui/input/text", - "l/tr/twenty-ui/input/checkbox", - "l/tr/twenty-ui/input/icon-picker", - "l/tr/twenty-ui/input/image-input", - "l/tr/twenty-ui/input/radio", - "l/tr/twenty-ui/input/select", - "l/tr/twenty-ui/input/toggle", - "l/tr/twenty-ui/input/block-editor" - ] - }, - { - "group": "Gezinme", - "pages": [ - "l/tr/twenty-ui/navigation", - "l/tr/twenty-ui/navigation/breadcrumb", - "l/tr/twenty-ui/navigation/links", - "l/tr/twenty-ui/navigation/menu-item", - "l/tr/twenty-ui/navigation/navigation-bar", - "l/tr/twenty-ui/navigation/step-bar" - ] - } - ] - }, - "l/tr/developers/contribute/capabilities/frontend-development/frontend-commands", - "l/tr/developers/contribute/capabilities/frontend-development/work-with-figma", - "l/tr/developers/contribute/capabilities/frontend-development/best-practices-front", - "l/tr/developers/contribute/capabilities/frontend-development/style-guide", - "l/tr/developers/contribute/capabilities/frontend-development/folder-architecture-front", - "l/tr/developers/contribute/capabilities/frontend-development/hotkeys" - ] - }, - { - "group": "Backend Geliştirme", - "pages": [ - "l/tr/developers/contribute/capabilities/backend-development/server-commands", - "l/tr/developers/contribute/capabilities/backend-development/feature-flags", - "l/tr/developers/contribute/capabilities/backend-development/folder-architecture-server", - "l/tr/developers/contribute/capabilities/backend-development/zapier", - "l/tr/developers/contribute/capabilities/backend-development/best-practices-server", - "l/tr/developers/contribute/capabilities/backend-development/custom-objects", - "l/tr/developers/contribute/capabilities/backend-development/queue" - ] - } - ] - } + "l/tr/developers/contribute/capabilities/local-setup", + "l/tr/developers/contribute/commands", + "l/tr/developers/contribute/style-guide" ] } ] @@ -5846,30 +5014,39 @@ { "language": "zh", "tabs": [ + { + "tab": "Getting Started", + "groups": [ + { + "group": "Welcome", + "pages": [ + "l/zh/getting-started/introduction", + "l/zh/getting-started/key-features", + "l/zh/getting-started/quickstart" + ] + }, + { + "group": "Core Concepts", + "pages": [ + "l/zh/getting-started/core-concepts/data-model", + "l/zh/getting-started/core-concepts/layout", + "l/zh/getting-started/core-concepts/workflows", + "l/zh/getting-started/core-concepts/calendar-and-email", + "l/zh/getting-started/core-concepts/ai", + "l/zh/getting-started/core-concepts/apps", + "l/zh/getting-started/core-concepts/dashboards", + "l/zh/getting-started/core-concepts/glossary" + ] + } + ] + }, { "tab": "用户指南", "groups": [ { - "group": "发现 Twenty", - "icon": "rocket", + "group": "Overview", "pages": [ - "l/zh/user-guide/introduction", - { - "group": "功能", - "pages": [ - "l/zh/user-guide/getting-started/capabilities/what-is-twenty", - "l/zh/user-guide/getting-started/capabilities/implementation-services", - "l/zh/user-guide/getting-started/capabilities/glossary" - ] - }, - { - "group": "操作指南", - "pages": [ - "l/zh/user-guide/getting-started/how-tos/create-workspace", - "l/zh/user-guide/getting-started/how-tos/navigate-around-twenty", - "l/zh/user-guide/getting-started/how-tos/configure-your-workspace" - ] - } + "l/zh/user-guide/introduction" ] }, { @@ -5878,7 +5055,7 @@ "pages": [ "l/zh/user-guide/data-model/overview", { - "group": "功能", + "group": "Reference", "pages": [ "l/zh/user-guide/data-model/capabilities/objects", "l/zh/user-guide/data-model/capabilities/fields", @@ -5904,7 +5081,7 @@ "pages": [ "l/zh/user-guide/data-migration/overview", { - "group": "功能", + "group": "Reference", "pages": [ "l/zh/user-guide/data-migration/capabilities/file-formats", "l/zh/user-guide/data-migration/capabilities/field-mapping", @@ -5936,7 +5113,7 @@ "pages": [ "l/zh/user-guide/calendar-emails/overview", { - "group": "功能", + "group": "Reference", "pages": [ "l/zh/user-guide/calendar-emails/capabilities/mailbox", "l/zh/user-guide/calendar-emails/capabilities/calendar" @@ -5961,7 +5138,7 @@ "pages": [ "l/zh/user-guide/workflows/overview", { - "group": "功能", + "group": "Reference", "pages": [ "l/zh/user-guide/workflows/capabilities/workflow-triggers", "l/zh/user-guide/workflows/capabilities/workflow-actions", @@ -6024,7 +5201,7 @@ "pages": [ "l/zh/user-guide/ai/overview", { - "group": "功能", + "group": "Reference", "pages": [ "l/zh/user-guide/ai/capabilities/ai-chatbot", "l/zh/user-guide/ai/capabilities/ai-agents", @@ -6040,23 +5217,30 @@ ] }, { - "group": "视图与管道", - "icon": "table", + "group": "Layout", + "icon": "table-columns", "pages": [ - "l/zh/user-guide/views-pipelines/overview", + "l/zh/user-guide/layout/overview", { - "group": "功能", + "group": "Reference", "pages": [ - "l/zh/user-guide/views-pipelines/capabilities/table-views", - "l/zh/user-guide/views-pipelines/capabilities/kanban-views", - "l/zh/user-guide/views-pipelines/capabilities/calendar-view", - "l/zh/user-guide/views-pipelines/capabilities/filters-and-sorting", - "l/zh/user-guide/views-pipelines/capabilities/fields-and-columns", - "l/zh/user-guide/views-pipelines/capabilities/view-settings" + "l/zh/user-guide/layout/capabilities/navigation", + { + "group": "Views", + "pages": [ + "l/zh/user-guide/views-pipelines/capabilities/table-views", + "l/zh/user-guide/views-pipelines/capabilities/kanban-views", + "l/zh/user-guide/views-pipelines/capabilities/calendar-view", + "l/zh/user-guide/views-pipelines/capabilities/filters-and-sorting", + "l/zh/user-guide/views-pipelines/capabilities/fields-and-columns", + "l/zh/user-guide/views-pipelines/capabilities/view-settings" + ] + }, + "l/zh/user-guide/layout/capabilities/record-pages" ] }, { - "group": "操作指南", + "group": "How-Tos", "pages": [ "l/zh/user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping", "l/zh/user-guide/views-pipelines/how-tos/create-a-kanban-view-for-projects", @@ -6075,7 +5259,7 @@ "pages": [ "l/zh/user-guide/dashboards/overview", { - "group": "功能", + "group": "Reference", "pages": [ "l/zh/user-guide/dashboards/capabilities/dashboards", "l/zh/user-guide/dashboards/capabilities/widgets", @@ -6097,7 +5281,7 @@ "pages": [ "l/zh/user-guide/permissions-access/overview", { - "group": "功能", + "group": "Reference", "pages": [ "l/zh/user-guide/permissions-access/capabilities/permissions", "l/zh/user-guide/permissions-access/capabilities/sso-configuration" @@ -6117,7 +5301,7 @@ "pages": [ "l/zh/user-guide/billing/overview", { - "group": "功能", + "group": "Reference", "pages": [ "l/zh/user-guide/billing/capabilities/pricing-plans", "l/zh/user-guide/billing/capabilities/credits" @@ -6137,7 +5321,7 @@ "pages": [ "l/zh/user-guide/settings/overview", { - "group": "功能", + "group": "Reference", "pages": [ "l/zh/user-guide/settings/capabilities/workspace-settings", "l/zh/user-guide/settings/capabilities/member-management", @@ -6161,129 +5345,49 @@ "tab": "开发者", "groups": [ { - "group": "开发者", + "group": "Overview", "pages": [ "l/zh/developers/introduction" ] }, { - "group": "扩展", - "icon": "plug", + "group": "应用", + "pages": [ + "l/zh/developers/extend/apps/getting-started", + "l/zh/developers/extend/apps/building", + "l/zh/developers/extend/apps/data-model", + "l/zh/developers/extend/apps/logic-functions", + "l/zh/developers/extend/apps/front-components", + "l/zh/developers/extend/apps/layout", + "l/zh/developers/extend/apps/skills-and-agents", + "l/zh/developers/extend/apps/cli-and-testing", + "l/zh/developers/extend/apps/publishing" + ] + }, + { + "group": "API", "pages": [ "l/zh/developers/extend/api", "l/zh/developers/extend/webhooks", - { - "group": "应用", - "pages": [ - "l/zh/developers/extend/apps/getting-started", - "l/zh/developers/extend/apps/building", - "l/zh/developers/extend/apps/publishing" - ] - } + "l/zh/developers/extend/oauth" ] }, { "group": "自托管", - "icon": "desktop", "pages": [ - "l/zh/developers/self-host/self-host", - { - "group": "功能", - "pages": [ - "l/zh/developers/self-host/capabilities/docker-compose", - "l/zh/developers/self-host/capabilities/setup", - "l/zh/developers/self-host/capabilities/upgrade-guide", - "l/zh/developers/self-host/capabilities/cloud-providers", - "l/zh/developers/self-host/capabilities/troubleshooting" - ] - } + "l/zh/developers/self-host/capabilities/docker-compose", + "l/zh/developers/self-host/capabilities/setup", + "l/zh/developers/self-host/capabilities/upgrade-guide", + "l/zh/developers/self-host/capabilities/cloud-providers", + "l/zh/developers/self-host/capabilities/troubleshooting" ] }, { "group": "贡献", - "icon": "github", "pages": [ - "l/zh/developers/contribute/contribute", - { - "group": "功能", - "pages": [ - "l/zh/developers/contribute/capabilities/local-setup", - "l/zh/developers/contribute/capabilities/bug-and-requests", - { - "group": "前端开发", - "pages": [ - "l/zh/developers/contribute/capabilities/frontend-development/storybook", - { - "group": "Twenty UI", - "pages": [ - "l/zh/twenty-ui/introduction", - { - "group": "展示", - "pages": [ - "l/zh/twenty-ui/display/checkmark", - "l/zh/twenty-ui/display/chip", - "l/zh/twenty-ui/display/icons", - "l/zh/twenty-ui/display/soon-pill", - "l/zh/twenty-ui/display/tag", - "l/zh/twenty-ui/display/app-tooltip" - ] - }, - { - "group": "反馈", - "pages": [ - "l/zh/twenty-ui/progress-bar" - ] - }, - { - "group": "输入", - "pages": [ - "l/zh/twenty-ui/input/buttons", - "l/zh/twenty-ui/input/color-scheme", - "l/zh/twenty-ui/input/text", - "l/zh/twenty-ui/input/checkbox", - "l/zh/twenty-ui/input/icon-picker", - "l/zh/twenty-ui/input/image-input", - "l/zh/twenty-ui/input/radio", - "l/zh/twenty-ui/input/select", - "l/zh/twenty-ui/input/toggle", - "l/zh/twenty-ui/input/block-editor" - ] - }, - { - "group": "导航", - "pages": [ - "l/zh/twenty-ui/navigation", - "l/zh/twenty-ui/navigation/breadcrumb", - "l/zh/twenty-ui/navigation/links", - "l/zh/twenty-ui/navigation/menu-item", - "l/zh/twenty-ui/navigation/navigation-bar", - "l/zh/twenty-ui/navigation/step-bar" - ] - } - ] - }, - "l/zh/developers/contribute/capabilities/frontend-development/frontend-commands", - "l/zh/developers/contribute/capabilities/frontend-development/work-with-figma", - "l/zh/developers/contribute/capabilities/frontend-development/best-practices-front", - "l/zh/developers/contribute/capabilities/frontend-development/style-guide", - "l/zh/developers/contribute/capabilities/frontend-development/folder-architecture-front", - "l/zh/developers/contribute/capabilities/frontend-development/hotkeys" - ] - }, - { - "group": "后端开发", - "pages": [ - "l/zh/developers/contribute/capabilities/backend-development/server-commands", - "l/zh/developers/contribute/capabilities/backend-development/feature-flags", - "l/zh/developers/contribute/capabilities/backend-development/folder-architecture-server", - "l/zh/developers/contribute/capabilities/backend-development/zapier", - "l/zh/developers/contribute/capabilities/backend-development/best-practices-server", - "l/zh/developers/contribute/capabilities/backend-development/custom-objects", - "l/zh/developers/contribute/capabilities/backend-development/queue" - ] - } - ] - } + "l/zh/developers/contribute/capabilities/local-setup", + "l/zh/developers/contribute/commands", + "l/zh/developers/contribute/style-guide" ] } ] diff --git a/packages/twenty-docs/getting-started/core-concepts/ai.mdx b/packages/twenty-docs/getting-started/core-concepts/ai.mdx new file mode 100644 index 0000000000..2e97bb7e71 --- /dev/null +++ b/packages/twenty-docs/getting-started/core-concepts/ai.mdx @@ -0,0 +1,30 @@ +--- +title: AI +description: How Twenty uses AI to enhance your CRM experience. +icon: "robot" +--- + +Twenty integrates AI directly into your CRM — not as a gimmick, but as a tool that works within your data model and permission system. + +## AI Chatbot + +Ask questions about your data in natural language. The AI chatbot can query your CRM records, summarize information, and help you find what you're looking for without building complex filters. + +## AI Agents + +AI agents go beyond chat — they can execute multi-step tasks autonomously: + +- Enrich records with data from external sources +- Draft and send follow-up emails +- Analyze pipeline health and flag at-risk deals +- Process incoming data and route it to the right team + +Agents work within your existing workflows, so you can combine AI with manual approvals, conditional logic, and external API calls. + +## Permissions & safety + +AI in Twenty respects your permission model. Agents can only access objects and fields that the user (or role) has permission to view. Sensitive data stays protected even when AI is involved. + + + Detailed reference on the chatbot, agents, and permission controls. + diff --git a/packages/twenty-docs/getting-started/core-concepts/apps.mdx b/packages/twenty-docs/getting-started/core-concepts/apps.mdx new file mode 100644 index 0000000000..b221036efc --- /dev/null +++ b/packages/twenty-docs/getting-started/core-concepts/apps.mdx @@ -0,0 +1,47 @@ +--- +title: Apps +icon: "cube" +description: Extend Twenty with code — custom objects, server-side logic, UI components, and AI agents, all as TypeScript packages. +--- + +Most CRMs give you a config panel. Twenty gives you a platform. Apps are how developers extend Twenty beyond what the UI offers — defining data models, server-side logic, UI components, and AI capabilities as code, then deploying them to one or more workspaces. + +## Why apps exist + +Workflows cover no-code automation. But some things need code: a custom pricing engine, a proprietary enrichment pipeline, a compliance check that runs on every record update, a custom UI panel that pulls data from an internal tool. + +Apps let you build these as first-class extensions — not brittle scripts talking to an API from outside, but code that runs on the platform with full access to the type system, permission model, and UI. + +## What an app can define + +An app is a TypeScript package that declares **entities** using the `twenty-sdk`: + +| Entity | What it does | +|--------|-------------| +| **Objects & Fields** | New data tables and fields on existing objects — same treatment as built-in ones | +| **Logic Functions** | Server-side TypeScript triggered by HTTP routes, cron schedules, or database events | +| **Front Components** | Sandboxed React components that render inside Twenty's UI (side panel, widgets, command menu) | +| **Skills & Agents** | AI capabilities — reusable instructions and autonomous assistants | +| **Views & Navigation** | Pre-configured list views and sidebar menu items | + +Everything is detected via AST analysis at build time — no config files, no registration boilerplate. Put a `export default defineObject(...)` in any `.ts` file and the SDK picks it up. + +## How they run + +- **Logic functions** execute in isolated Node.js processes, sandboxed from the host. They access data through a typed API client scoped to the app's role permissions. +- **Front components** run in Web Workers using Remote DOM — sandboxed from the main page but rendering native DOM elements (not iframes). +- **Permissions** are enforced at the API level. An app only sees what its role allows. + +## The developer experience + +```bash +npx create-twenty-app@latest my-app +cd my-app +yarn twenty dev +``` + +`yarn twenty dev` watches your source files, rebuilds on change, and live-syncs to a local Twenty instance. The typed API client regenerates automatically when the schema changes. When you're ready, `yarn twenty deploy` pushes to production. Apps can also be published to npm and listed in the Twenty marketplace. + + + Full walkthrough — scaffold, develop, deploy. + diff --git a/packages/twenty-docs/getting-started/core-concepts/calendar-and-email.mdx b/packages/twenty-docs/getting-started/core-concepts/calendar-and-email.mdx new file mode 100644 index 0000000000..435d598fc8 --- /dev/null +++ b/packages/twenty-docs/getting-started/core-concepts/calendar-and-email.mdx @@ -0,0 +1,46 @@ +--- +title: Calendar & Email +description: Sync your email and calendar with Twenty. +icon: "envelope" +--- + +Twenty connects to your existing tools so your CRM stays up to date without manual data entry. + +## Email sync + +Connect your **Google Workspace** or **Microsoft 365** mailbox. Once connected: + +- Emails are automatically linked to the matching Company and People records +- Full email threads are visible on each record's timeline +- You can send emails directly from Twenty +- Multiple mailboxes per user are supported + +You control what gets imported — filter by date range or sender to avoid pulling in irrelevant emails. + +## Calendar sync + +Calendar events sync automatically from your connected account. Events appear on the relevant CRM records, giving you a complete picture of your interactions with each contact or company. + +## Integrations + +Beyond email and calendar, Twenty connects to external tools through: + +| Method | Use case | +|--------|----------| +| **API** | Build custom integrations with the GraphQL or REST API | +| **Webhooks** | Push real-time notifications to external systems when records change | +| **Zapier** | Connect to 5,000+ apps without code | +| **Workflow HTTP actions** | Call any external API as part of an automated workflow | + +## Custom apps + +Developers can build full-featured apps on top of Twenty — adding custom UI, server-side logic, and deep integrations. Apps can be published for the community or kept private. + + + + Set up email sync, calendar sync, and troubleshoot issues. + + + Build custom integrations with the Twenty API. + + diff --git a/packages/twenty-docs/getting-started/core-concepts/dashboards.mdx b/packages/twenty-docs/getting-started/core-concepts/dashboards.mdx new file mode 100644 index 0000000000..150c95f758 --- /dev/null +++ b/packages/twenty-docs/getting-started/core-concepts/dashboards.mdx @@ -0,0 +1,33 @@ +--- +title: Dashboards +description: Track performance and visualize your CRM data with custom dashboards. +icon: "chart-bar" +--- + +Dashboards give you real-time visibility into your business metrics — pipeline health, team performance, revenue trends, and anything else you want to track. + +## Widgets + +Each dashboard is made up of widgets. A widget is a single chart or metric tied to your CRM data. You can configure: + +- **Chart type** — Bar, line, pie, number, and more +- **Data source** — Any object in your data model (standard or custom) +- **Filters** — Narrow down to specific records, date ranges, or segments +- **Aggregation** — Count, sum, average, min, max on any numeric field +- **Grouping** — Break down by select fields, dates, or relations + +## What you can track + +- Pipeline value by stage +- Deals closed over time +- Average deal size by source +- Task completion rates +- Custom metrics on any object + +## Sharing + +Dashboards are workspace-level — everyone on your team can see them. Arrange widgets in a grid layout and resize them to build the view that works for your team. + + + Detailed reference on creating dashboards, configuring widgets, and chart settings. + diff --git a/packages/twenty-docs/getting-started/core-concepts/data-model.mdx b/packages/twenty-docs/getting-started/core-concepts/data-model.mdx new file mode 100644 index 0000000000..efc7f829ce --- /dev/null +++ b/packages/twenty-docs/getting-started/core-concepts/data-model.mdx @@ -0,0 +1,43 @@ +--- +title: Data Model +description: Understand how Twenty structures your data with objects, fields, and relations. +icon: "database" +--- + +Everything in Twenty is built around **objects** and **fields** — the building blocks of your data model. + +## Objects + +Objects are the tables that hold your data. Twenty comes with standard objects out of the box: + +- **Companies** — Organizations you do business with +- **People** — Individual contacts +- **Opportunities** — Deals in your pipeline +- **Tasks** — Action items for your team +- **Notes** — Free-form text linked to records + +You can also create **custom objects** for anything your business needs — projects, support tickets, products, contracts, or anything else. + +## Fields + +Fields are the properties on each object. Twenty supports a wide range of field types: + +| Category | Types | +|----------|-------| +| **Basic** | Text, Number, Boolean, Date, Currency, Rating, Select | +| **Composite** | Address (street, city, state, zip), Full Name, Links, Phones, Emails | +| **Special** | Relation, File Attachment, JSON, Actor (who created/modified) | + +Every object also gets automatic system fields: `id`, `createdAt`, `updatedAt`, `createdBy`, and `position`. + +## Relations + +Objects connect to each other through relations. A Company has many People, an Opportunity belongs to a Company, and so on. You can create custom relations between any objects, including many-to-many relationships. + +## What makes this powerful + +Unlike traditional CRMs where you're limited to pre-defined fields on pre-defined objects, Twenty lets you model your data exactly the way your business works. Custom objects get the same first-class treatment as built-in ones — including API endpoints, views, permissions, and workflow triggers. + + + Full reference on objects, fields, relations, and how to configure them. + diff --git a/packages/twenty-docs/getting-started/core-concepts/glossary.mdx b/packages/twenty-docs/getting-started/core-concepts/glossary.mdx new file mode 100644 index 0000000000..3a164110c0 --- /dev/null +++ b/packages/twenty-docs/getting-started/core-concepts/glossary.mdx @@ -0,0 +1,81 @@ +--- +title: Glossary +icon: "book" +description: Key terms used throughout Twenty. +--- + +## API +API (Application Programming Interface) allows you to connect Twenty with other software systems and build custom integrations. + +## Apps +Apps are custom extensions built as code that can define data models and logic functions. They enable developers to create reusable customizations that can be deployed across multiple workspaces. + +## Code Actions +Code Actions are workflow steps that let you write custom JavaScript to transform data, make calculations, or perform complex logic that isn't possible with built-in actions. + +## Command Menu +The Command Menu is a quick-access interface (opened with `Cmd + K` on Mac and `Ctrl + K` on Windows) that lets you perform actions, create records, and navigate your workspace efficiently. + +## Company & People +The CRM has two fundamental types of records: +- A `Company` represents a business or organization. +- `People` represent your company's current and prospective customers or clients. + +## Custom Fields +Custom Fields are data fields you create to capture information specific to your business needs and processes. + +## Data Model +A Data Model is the structure that defines how information is organized in your CRM, including what objects exist, their properties (fields), and how they relate to each other. + +## Favorites +Favorites are records you've marked for quick access, appearing in your sidebar for instant navigation to important data. + +## Field +A field refers to a specific area where particular data is stored for an entity. + +## Iterator +An Iterator is a workflow action that loops through an array of items, executing subsequent actions for each item in the list. + +## Kanban +A `Kanban` is a visual way to track your business processes using cards and columns. Each column represents a stage in your process (for example: new, ongoing, won, lost), and you move records through these stages as they progress. + +## Object +An Object is a data structure that represents a specific type of entity in your CRM (like People, Companies, or Opportunities). Objects can be standard (built-in) or custom (created by you). + +## Opportunities +Opportunities in Twenty CRM are potential deals or sales with accounts or contacts. + +## Record +A Record indicates an instance of an object, like a specific account or contact. + +## Relation Fields +Relation Fields create connections between different objects, allowing you to link records together (like connecting a Person to a Company). + +## Standard Fields +Standard Fields are pre-built data fields that come with objects by default and provide common functionality across all workspaces. + +## Tasks +Tasks in Twenty CRM are assigned activities relating to contacts, accounts, or opportunities. + +## Triggers +Triggers are the starting point of a workflow — the event or condition that initiates the automation. Examples include record creation, record updates, webhooks, or scheduled times. + +## Views +You can customize the display of your records using views, setting different filters, layouts and sorting options for each view. + +## Upsert +Upsert is an operation that combines "update" and "insert" — it updates an existing record if a match is found, or creates a new record if no match exists. + +## Webhooks +Webhooks are automated messages sent from Twenty to other applications when specific events occur, enabling real-time data synchronization. + +## Workflows +Workflows are automated processes that trigger actions based on specific conditions, helping you automate repetitive tasks and business processes. + +## Workspace +A `Workspace` typically represents a company using Twenty. It holds all the records and data that you and your team members add to Twenty. +It has a single domain name, which is typically the domain name your company uses for employee email addresses. + +## Workspace Members +Workspace Members are the Twenty users from your team who have access to your workspace. They can be assigned as owners or assignees for records. + diff --git a/packages/twenty-docs/getting-started/core-concepts/layout.mdx b/packages/twenty-docs/getting-started/core-concepts/layout.mdx new file mode 100644 index 0000000000..f9e69ba616 --- /dev/null +++ b/packages/twenty-docs/getting-started/core-concepts/layout.mdx @@ -0,0 +1,68 @@ +--- +title: Layout +description: How to navigate, browse, and view records in Twenty. +icon: "table-columns" +--- + +## The main layout + +The center of the screen is where your records live — people, companies, opportunities, tasks, notes, dashboards, workflows, and any custom objects. You view, edit, and delete records here, and create new views. + + + +## Navigation bar + +The left sidebar gives you: +- **Workspace switcher** — switch between workspaces or create a new one (top dropdown) +- **Search** — press `/` to focus instantly, searches across all objects +- **Settings** — access from the top left +- **Favorites** — pinned views, unique per user +- **Object shortcuts** — quick access to People, Companies, Opportunities, etc. +- **Workflows** — create automations + +Drag items to reorder, create folders to group related objects, hide what you don't use. + + + +## Command menu + +Press `Cmd+K` (Mac) or `Ctrl+K` (Windows) — or click the three dots in the top right. From here you can: +- Create new records +- Import and export data via CSV +- Create new views +- Access deleted records (Twenty supports soft and hard deletes) +- See keyboard shortcuts for navigating your workspace + + + +## Search + +Accessible via the Command Menu, the top of the navigation bar, or by pressing `/`. Search works across all objects. + + + +## Side panel + +Click a record to open the side panel on the right — a quick overview of the record's key information without leaving the current page. Click **Open** to go to the full record page. + + + +## Views + +Every object supports multiple views — unlimited per object. Use the dropdown at the top left to switch between them. + +- **Table** — spreadsheet-style rows and columns, with grouping, inline editing, and column customization +- **Kanban** — drag-and-drop cards organized by a select field, ideal for pipelines +- **Calendar** — records plotted by a date field for time-based planning + +Each view saves its own filters, sorting, and field visibility. Share views with your workspace or keep them private. Favorite views for fast access from the sidebar. + + + +## Record pages + +When you open a record, the detail page is built from configurable **tabs** and **widgets**. Add, remove, reorder, and resize widgets on a grid — fields, related records, emails, timeline, tasks, notes, files, charts, iframes, and more. Each object type has its own layout. + + + Navigation, views, record pages — detailed reference and how-tos. + diff --git a/packages/twenty-docs/getting-started/core-concepts/workflows.mdx b/packages/twenty-docs/getting-started/core-concepts/workflows.mdx new file mode 100644 index 0000000000..77e8d893a2 --- /dev/null +++ b/packages/twenty-docs/getting-started/core-concepts/workflows.mdx @@ -0,0 +1,51 @@ +--- +title: Workflows +description: Automate your business processes with Twenty's visual workflow builder. +icon: "bolt" +--- + +Workflows let you automate repetitive tasks and connect Twenty to external tools — without writing code (though you can if you want to). + +## How workflows work + +Every workflow has three parts: + +1. **Trigger** — What starts the workflow +2. **Steps** — What happens next (one or more actions in sequence) +3. **Variables** — Data that flows between steps + +## Triggers + +| Trigger | When it fires | +|---------|--------------| +| **Record event** | A record is created, updated, deleted, or upserted | +| **Manual** | A user clicks a button (on a single record, multiple records, or globally) | +| **Schedule** | On a recurring interval (cron syntax) | +| **Webhook** | An external system sends an HTTP POST | + +## Actions + +Workflows can chain any combination of: + +- **Record operations** — Create, update, find, delete, or upsert records +- **Send email** — Send or draft emails from connected accounts +- **HTTP request** — Call any external API +- **Code** — Run custom JavaScript for complex logic +- **Branches** — If/else conditions to split the workflow path +- **Iterator** — Loop over arrays of data +- **AI Agent** — Let an AI agent process data autonomously +- **Delay** — Wait before continuing +- **Form** — Collect user input mid-workflow + +## What you can build + +- Send Slack alerts when a deal reaches a certain stage +- Auto-enrich new contacts with data from external APIs +- Detect stale opportunities and notify the owner +- Sync data between Twenty and your billing system +- Generate PDFs or invoices from record data +- Auto-reply to inbound emails matching certain criteria + + + Detailed reference on triggers, actions, variables, and real-world automation recipes. + diff --git a/packages/twenty-docs/getting-started/introduction.mdx b/packages/twenty-docs/getting-started/introduction.mdx new file mode 100644 index 0000000000..ff2fb56a44 --- /dev/null +++ b/packages/twenty-docs/getting-started/introduction.mdx @@ -0,0 +1,72 @@ +--- +title: Why Twenty +icon: "heart" +--- + + +You've been choosing between software that's easy to start but impossible to change, and software that's flexible but takes months to set up. Twenty is the third option: **a production-ready CRM you can reshape as you go.** + + +## What makes Twenty different + +Twenty is a platform you can build on, not a product you configure. + + + + Agents operate inside your data model with real permissions. Skills, Tools, MCP. + + + The flexibility of vibe-coded tools on secured foundations. + + + React, TypeScript. Your team already knows how to extend Twenty. No proprietary languages, no gatekeeping. + + + + Open-source core, self-hostable, export your data anytime. + + + +## Who is Twenty for + +- **Large enterprises replacing Salesforce** — your team + spends more time fighting the tool than using it. + You feel locked-in and the costs keep rising. +- **Startups with technical founders** — you've outgrown + spreadsheets and Notion. You have big ambitions and want + a CRM that scales with you. +- **GTM teams looking for an edge** — you want to build + your own lead scoring, your own enrichment, your own + outbound workflows. +- **Privacy-conscious organizations** — you need to + self-host and own your data end to end. Regulatory, + contractual, or just principle. +- **Salesforce partners** — + your developers are tired of presenting license cost increases to your clients. + You want a better DX, and to deliver projects faster at a lower license cost for your clients. +- **Web development agencies** — your team knows TypeScript, React, +and PostgreSQL. Twenty opens the CRM market +to you without learning APEX or getting proprietary certifications. + +## Who Twenty is not for + + +- **Teams that want a CRM they never have to think + about.** Twenty rewards teams that want to stay close to + their tools and shape them over time. If you want + something fully managed, Pipedrive or + HubSpot will serve you well. +- **Companies that need hundreds of pre-built integrations + today.** Our ecosystem is growing fast, but it's not yet + as broad as Salesforce or HubSpot. If you're comfortable + building what's missing, you'll love it. If not, give us + another year. +- **Organizations where tools are chosen in boardrooms, + not by the people using them.** We don't do steak dinners + and executive briefings. We win with teams that have the + authority to pick their own tools. + + + + Set up Twenty in under 5 minutes — cloud or self-hosted. + diff --git a/packages/twenty-docs/getting-started/key-features.mdx b/packages/twenty-docs/getting-started/key-features.mdx new file mode 100644 index 0000000000..214c4ff38a --- /dev/null +++ b/packages/twenty-docs/getting-started/key-features.mdx @@ -0,0 +1,87 @@ +--- +title: Key Features +description: A tour of everything Twenty can do — from custom data models to AI-powered automation. +icon: "star" +--- + +Twenty is a full-featured CRM platform. Here's what you can build with it. + +## Custom Data Model + +Define the exact data structure your business needs. Create custom objects (beyond the standard Companies, People, and Opportunities), add custom fields with 20+ field types, and build relationships between any objects. + + + Objects, fields, relations — fully customizable to your business. + + +## Views & Pipelines + +See your data the way you want. Switch between table views, kanban boards, and calendar views. Filter with AND/OR logic, sort by multiple fields, group records, and save custom views for your team. + + + Table, kanban, calendar — all with powerful filtering and sorting. + + +## Workflows & Automation + +Automate any business process without writing code. Trigger workflows on record changes, schedules, manual actions, or incoming webhooks. Chain together actions like creating records, sending emails, calling APIs, running custom JavaScript, and branching with conditions. + + + Triggers, actions, branches, and integrations — all visual. + + +## Calendar & Email Sync + +Connect your Google Workspace or Microsoft 365 account. Emails and calendar events automatically appear on the relevant CRM records. Send emails directly from Twenty and track all communication history. + + + Sync mailboxes, track activity, send from Twenty. + + +## AI + +Twenty integrates AI agents that can work autonomously within your CRM — answering questions about your data, enriching records, and executing multi-step tasks. AI works within your permission model so it only accesses what it should. + + + AI chatbot, autonomous agents, and smart workflows. + + +## Dashboards & Reporting + +Build custom dashboards with real-time widgets. Track pipeline metrics, team performance, and business KPIs. Configure chart types, date ranges, and filters to get the exact view you need. + + + Widgets, charts, and real-time analytics. + + +## Permissions & Access Control + +Role-based access control at every level — objects, fields, and individual records. Configure SSO with SAML or OIDC. Audit logs track who did what. + + + Roles, SSO, object/field/row-level security. + + +## API & Extensibility + +A developer-first API that adapts to your custom data model. Both GraphQL and REST endpoints, with auto-generated documentation per workspace. Build custom apps, connect via webhooks, or use Zapier. + + + GraphQL, REST, webhooks, and custom apps. + + +## Data Import & Export + +Import data from CSV files or via API. Field mapping, duplicate detection, and error handling built in. Export your data anytime — no lock-in. + + + CSV import, API import, and migration from other CRMs. + + +## Self-Hosting + +Run Twenty on your own infrastructure with a single Docker Compose command. Full control over your data, updates on your schedule, and no per-seat cloud fees. + + + Docker Compose, configuration, and upgrade guides. + diff --git a/packages/twenty-docs/getting-started/quickstart.mdx b/packages/twenty-docs/getting-started/quickstart.mdx new file mode 100644 index 0000000000..f6211e030f --- /dev/null +++ b/packages/twenty-docs/getting-started/quickstart.mdx @@ -0,0 +1,67 @@ +--- +title: Quickstart +description: Get Twenty up and running in under 5 minutes — on the cloud or self-hosted. +icon: "play" +--- + +import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; + +## Signup + + + + Go to [app.twenty.com](https://app.twenty.com) and sign up with Google, Microsoft, or email. + + + Pick **30 days** (with card) or **7 days** (without card). Both include full access — unlimited contacts, email integration, custom objects, API. You can change plan or billing interval anytime. + + + After payment confirmation via Stripe, you'll set up your workspace name and user profile. You can cancel anytime. + + + + + + +## Configure your workspace + +Once you're in, three steps to make Twenty yours: + +### 1. Connect your mailbox + +Go to **Settings → Accounts** and connect your Google or Microsoft account. Twenty will import your emails and calendar events, and auto-create contacts from interactions. Using another provider? You can add mailboxes via SMTP or calendars via CalDAV from the same page. + +Start here — connecting a mailbox gives your team immediate value with real data before you customize anything else. + +### 2. Shape your data model + +Go to **Settings → Data Model** to create custom objects and fields. A few things to know: +- Custom objects and fields are **unlimited on all plans** — no upsell. +- **People, Companies, and Opportunities** are the objects that show synced emails and meetings. Use them as your base and add fields to categorize (e.g., a `Person Type` field) rather than creating separate objects that won't have email history. +- Two People can't share the same email. Two Companies can't share the same domain. +- You can deactivate standard fields/objects you don't need, and hide fields from views without deleting them. + +[Data Model reference →](/user-guide/data-model/overview) + +### 3. Import your data + +Use the Command Menu (`Cmd+K` / `Ctrl+K`) to import People, Companies, Opportunities, or any custom object via CSV. Download the sample file first to see the expected format. Limit files to 10k records and deduplicate emails/domains before importing. + +[Data Migration guide →](/user-guide/data-migration/overview) + +## Next steps + + + + Navigation, views, command menu, side panel. + + + Automate your business processes. + + + Table, kanban, calendar — filter and sort your data. + + + Schema-per-tenant REST and GraphQL. + + diff --git a/packages/twenty-docs/images/user-guide/halftone/ai.png b/packages/twenty-docs/images/user-guide/halftone/ai.png new file mode 100644 index 0000000000..7aba26d5e6 Binary files /dev/null and b/packages/twenty-docs/images/user-guide/halftone/ai.png differ diff --git a/packages/twenty-docs/images/user-guide/halftone/billing.png b/packages/twenty-docs/images/user-guide/halftone/billing.png new file mode 100644 index 0000000000..d00df9ba3d Binary files /dev/null and b/packages/twenty-docs/images/user-guide/halftone/billing.png differ diff --git a/packages/twenty-docs/images/user-guide/halftone/calendar-emails.png b/packages/twenty-docs/images/user-guide/halftone/calendar-emails.png new file mode 100644 index 0000000000..b0af1b5d41 Binary files /dev/null and b/packages/twenty-docs/images/user-guide/halftone/calendar-emails.png differ diff --git a/packages/twenty-docs/images/user-guide/halftone/dashboards.png b/packages/twenty-docs/images/user-guide/halftone/dashboards.png new file mode 100644 index 0000000000..9a96b2e5b1 Binary files /dev/null and b/packages/twenty-docs/images/user-guide/halftone/dashboards.png differ diff --git a/packages/twenty-docs/images/user-guide/halftone/data-migration.png b/packages/twenty-docs/images/user-guide/halftone/data-migration.png new file mode 100644 index 0000000000..14693db175 Binary files /dev/null and b/packages/twenty-docs/images/user-guide/halftone/data-migration.png differ diff --git a/packages/twenty-docs/images/user-guide/halftone/data-model.png b/packages/twenty-docs/images/user-guide/halftone/data-model.png new file mode 100644 index 0000000000..3fe03cea5d Binary files /dev/null and b/packages/twenty-docs/images/user-guide/halftone/data-model.png differ diff --git a/packages/twenty-docs/images/user-guide/halftone/dev-api.png b/packages/twenty-docs/images/user-guide/halftone/dev-api.png new file mode 100644 index 0000000000..bf178040a8 Binary files /dev/null and b/packages/twenty-docs/images/user-guide/halftone/dev-api.png differ diff --git a/packages/twenty-docs/images/user-guide/halftone/dev-apps.png b/packages/twenty-docs/images/user-guide/halftone/dev-apps.png new file mode 100644 index 0000000000..f1a1251e88 Binary files /dev/null and b/packages/twenty-docs/images/user-guide/halftone/dev-apps.png differ diff --git a/packages/twenty-docs/images/user-guide/halftone/dev-contribute.png b/packages/twenty-docs/images/user-guide/halftone/dev-contribute.png new file mode 100644 index 0000000000..52733a3569 Binary files /dev/null and b/packages/twenty-docs/images/user-guide/halftone/dev-contribute.png differ diff --git a/packages/twenty-docs/images/user-guide/halftone/dev-self-host.png b/packages/twenty-docs/images/user-guide/halftone/dev-self-host.png new file mode 100644 index 0000000000..6fe1a28a47 Binary files /dev/null and b/packages/twenty-docs/images/user-guide/halftone/dev-self-host.png differ diff --git a/packages/twenty-docs/images/user-guide/halftone/layout.png b/packages/twenty-docs/images/user-guide/halftone/layout.png new file mode 100644 index 0000000000..eb50bf50c7 Binary files /dev/null and b/packages/twenty-docs/images/user-guide/halftone/layout.png differ diff --git a/packages/twenty-docs/images/user-guide/halftone/permissions.png b/packages/twenty-docs/images/user-guide/halftone/permissions.png new file mode 100644 index 0000000000..0a9ab5c2e5 Binary files /dev/null and b/packages/twenty-docs/images/user-guide/halftone/permissions.png differ diff --git a/packages/twenty-docs/images/user-guide/halftone/settings.png b/packages/twenty-docs/images/user-guide/halftone/settings.png new file mode 100644 index 0000000000..860bdcabdb Binary files /dev/null and b/packages/twenty-docs/images/user-guide/halftone/settings.png differ diff --git a/packages/twenty-docs/images/user-guide/halftone/workflows.png b/packages/twenty-docs/images/user-guide/halftone/workflows.png new file mode 100644 index 0000000000..a48817a278 Binary files /dev/null and b/packages/twenty-docs/images/user-guide/halftone/workflows.png differ diff --git a/packages/twenty-docs/images/user-guide/kanban-views/kanban.png b/packages/twenty-docs/images/user-guide/kanban-views/kanban.png deleted file mode 100644 index 048c543ae0..0000000000 Binary files a/packages/twenty-docs/images/user-guide/kanban-views/kanban.png and /dev/null differ diff --git a/packages/twenty-docs/images/user-guide/table-views/table.png b/packages/twenty-docs/images/user-guide/table-views/table.png deleted file mode 100644 index 4e3e7ca528..0000000000 Binary files a/packages/twenty-docs/images/user-guide/table-views/table.png and /dev/null differ diff --git a/packages/twenty-docs/l/ar/twenty-ui/display/app-tooltip.mdx b/packages/twenty-docs/l/ar/twenty-ui/display/app-tooltip.mdx index 4a224608b4..14fccf1077 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/display/app-tooltip.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/display/app-tooltip.mdx @@ -1,6 +1,5 @@ --- title: تلميح التطبيق -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/ar/twenty-ui/display/checkmark.mdx b/packages/twenty-docs/l/ar/twenty-ui/display/checkmark.mdx index 5ab60fb425..f3d73a842a 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/display/checkmark.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/display/checkmark.mdx @@ -1,6 +1,5 @@ --- title: علامة صحيح -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/ar/twenty-ui/display/chip.mdx b/packages/twenty-docs/l/ar/twenty-ui/display/chip.mdx index 92ed29fa18..cd29778269 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/display/chip.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/display/chip.mdx @@ -1,6 +1,5 @@ --- title: رقاقة -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/ar/twenty-ui/display/icons.mdx b/packages/twenty-docs/l/ar/twenty-ui/display/icons.mdx index 81dddd8eb6..5984cb9e10 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/display/icons.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/display/icons.mdx @@ -1,6 +1,5 @@ --- title: الأيقونات -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/ar/twenty-ui/display/soon-pill.mdx b/packages/twenty-docs/l/ar/twenty-ui/display/soon-pill.mdx index c7587df615..e084937ddb 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/display/soon-pill.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/display/soon-pill.mdx @@ -1,11 +1,7 @@ --- title: شارة قريبًا -image: /images/user-guide/kanban-views/kanban.png --- - - رأس الصفحة - شارة صغيرة أو "كبسولة" للإشارة إلى أن شيئًا ما قادم قريبًا. diff --git a/packages/twenty-docs/l/ar/twenty-ui/display/tag.mdx b/packages/twenty-docs/l/ar/twenty-ui/display/tag.mdx index a38594d8e9..c4ec923427 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/display/tag.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/display/tag.mdx @@ -1,11 +1,7 @@ --- title: علامة -image: /images/user-guide/table-views/table.png --- - - رأس الصفحة - مكوّن لتصنيف المحتوى أو وسمه بصريًا. diff --git a/packages/twenty-docs/l/ar/twenty-ui/input.mdx b/packages/twenty-docs/l/ar/twenty-ui/input.mdx index daaef26518..64ac04152c 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/input.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/input.mdx @@ -1,6 +1,5 @@ --- title: إدخال -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/ar/twenty-ui/input/block-editor.mdx b/packages/twenty-docs/l/ar/twenty-ui/input/block-editor.mdx index 9c9f74d2cf..a89d44a28b 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/input/block-editor.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/input/block-editor.mdx @@ -1,6 +1,5 @@ --- title: محرر الكتل -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/ar/twenty-ui/input/buttons.mdx b/packages/twenty-docs/l/ar/twenty-ui/input/buttons.mdx index ed8ba40f3c..6703059346 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/input/buttons.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/input/buttons.mdx @@ -1,6 +1,5 @@ --- title: الأزرار -image: /images/user-guide/views/filter.png --- diff --git a/packages/twenty-docs/l/ar/twenty-ui/input/checkbox.mdx b/packages/twenty-docs/l/ar/twenty-ui/input/checkbox.mdx index 1d721a22c4..6bf67ebbbb 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/input/checkbox.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/input/checkbox.mdx @@ -1,6 +1,5 @@ --- title: مربع اختيار -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/ar/twenty-ui/input/color-scheme.mdx b/packages/twenty-docs/l/ar/twenty-ui/input/color-scheme.mdx index cfaad4404a..58cb0083f3 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/input/color-scheme.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/input/color-scheme.mdx @@ -1,6 +1,5 @@ --- title: طريقة عرض الألوان -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/ar/twenty-ui/input/icon-picker.mdx b/packages/twenty-docs/l/ar/twenty-ui/input/icon-picker.mdx index 40bf792fc7..a942cf46f7 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/input/icon-picker.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/input/icon-picker.mdx @@ -1,6 +1,5 @@ --- title: منتقى الأيقونات -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/ar/twenty-ui/input/image-input.mdx b/packages/twenty-docs/l/ar/twenty-ui/input/image-input.mdx index 5c77e52751..4bdcc6ddfb 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/input/image-input.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/input/image-input.mdx @@ -1,6 +1,5 @@ --- title: "\x062A\x062F\x062E\x064A\x0644 \x0627\x0644\x0635\x0648\x0631\x0629" -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/ar/twenty-ui/input/radio.mdx b/packages/twenty-docs/l/ar/twenty-ui/input/radio.mdx index 931d30ec79..6a42406ccf 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/input/radio.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/input/radio.mdx @@ -1,6 +1,5 @@ --- title: راديو -image: /images/user-guide/create-workspace/workspace-cover.png --- diff --git a/packages/twenty-docs/l/ar/twenty-ui/input/select.mdx b/packages/twenty-docs/l/ar/twenty-ui/input/select.mdx index 02e6903cb0..6be3354795 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/input/select.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/input/select.mdx @@ -1,6 +1,5 @@ --- title: اختيار -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/ar/twenty-ui/input/text.mdx b/packages/twenty-docs/l/ar/twenty-ui/input/text.mdx index 7de7bd683b..0a486c641e 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/input/text.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/input/text.mdx @@ -1,6 +1,5 @@ --- title: نص -image: /images/user-guide/notes/notes_header.png --- diff --git a/packages/twenty-docs/l/ar/twenty-ui/input/toggle.mdx b/packages/twenty-docs/l/ar/twenty-ui/input/toggle.mdx index 0d2b2b9e2f..ae2ff7212f 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/input/toggle.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/input/toggle.mdx @@ -1,11 +1,7 @@ --- title: تبديل -image: /images/user-guide/table-views/table.png --- - - رأس الصفحة - diff --git a/packages/twenty-docs/l/ar/twenty-ui/navigation.mdx b/packages/twenty-docs/l/ar/twenty-ui/navigation.mdx index a82ca796b5..78d2a2213b 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/navigation.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/navigation.mdx @@ -1,6 +1,5 @@ --- title: التنقل -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/ar/twenty-ui/navigation/breadcrumb.mdx b/packages/twenty-docs/l/ar/twenty-ui/navigation/breadcrumb.mdx index bbc9722cbf..6bf66c1a9a 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/navigation/breadcrumb.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/navigation/breadcrumb.mdx @@ -1,6 +1,5 @@ --- title: مسار التنقّل -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/ar/twenty-ui/navigation/links.mdx b/packages/twenty-docs/l/ar/twenty-ui/navigation/links.mdx index 1d71600bf4..cd37762843 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/navigation/links.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/navigation/links.mdx @@ -1,6 +1,5 @@ --- title: روابط -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/ar/twenty-ui/navigation/menu-item.mdx b/packages/twenty-docs/l/ar/twenty-ui/navigation/menu-item.mdx index 628d9d72cd..2e5170f307 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/navigation/menu-item.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/navigation/menu-item.mdx @@ -1,11 +1,7 @@ --- title: عنصر قائمة -image: /images/user-guide/kanban-views/kanban.png --- - - رأس الصفحة - عنصر قائمة متعدد الاستخدامات مصمم للاستخدام في قائمة أو قائمة تنقل. diff --git a/packages/twenty-docs/l/ar/twenty-ui/navigation/navigation-bar.mdx b/packages/twenty-docs/l/ar/twenty-ui/navigation/navigation-bar.mdx index c7e15dea69..ad1229d98b 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/navigation/navigation-bar.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/navigation/navigation-bar.mdx @@ -1,11 +1,7 @@ --- title: شريط التنقل -image: /images/user-guide/table-views/table.png --- - - رأس الصفحة - يستعرض شريط التنقل الذي يحتوي على عدة مكونات `NavigationBarItem`. diff --git a/packages/twenty-docs/l/ar/twenty-ui/navigation/step-bar.mdx b/packages/twenty-docs/l/ar/twenty-ui/navigation/step-bar.mdx index f5f76b1b74..4fff7b52f8 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/navigation/step-bar.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/navigation/step-bar.mdx @@ -1,6 +1,5 @@ --- title: شريط الخطوات -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/ar/twenty-ui/progress-bar.mdx b/packages/twenty-docs/l/ar/twenty-ui/progress-bar.mdx index 90a03f0a97..d4e9b58a29 100644 --- a/packages/twenty-docs/l/ar/twenty-ui/progress-bar.mdx +++ b/packages/twenty-docs/l/ar/twenty-ui/progress-bar.mdx @@ -1,11 +1,7 @@ --- title: التغذية الراجعة -image: /images/user-guide/emails/emails_header.png --- - - رأس الصفحة - يشير إلى تقدم أو عد تنازلي ويتحرك من اليمين إلى اليسار. diff --git a/packages/twenty-docs/l/ar/user-guide/billing/overview.mdx b/packages/twenty-docs/l/ar/user-guide/billing/overview.mdx index cc9f3a5d34..9ebebb8923 100644 --- a/packages/twenty-docs/l/ar/user-guide/billing/overview.mdx +++ b/packages/twenty-docs/l/ar/user-guide/billing/overview.mdx @@ -1,12 +1,8 @@ --- title: الفوترة description: تعرّف على تسعير Twenty وأدِر اشتراكك. -image: /images/user-guide/setup/pricing.png --- - - الفوترة - تقدّم Twenty خطط تسعير مرنة لتلبية احتياجات فريقك. أدِر اشتراكك، وتتبع أرصدة سير العمل، واطّلع على الفواتير — وكل ذلك من **Settings → Billing**. diff --git a/packages/twenty-docs/l/ar/user-guide/calendar-emails/overview.mdx b/packages/twenty-docs/l/ar/user-guide/calendar-emails/overview.mdx index a7467505ce..cc7c298d91 100644 --- a/packages/twenty-docs/l/ar/user-guide/calendar-emails/overview.mdx +++ b/packages/twenty-docs/l/ar/user-guide/calendar-emails/overview.mdx @@ -1,12 +1,8 @@ --- title: Calendar & Emails description: Connect your email and calendar accounts to Twenty. -image: /images/user-guide/emails/emails_header.png --- - - Calendar & Emails - ## Connection Options diff --git a/packages/twenty-docs/l/ar/user-guide/dashboards/overview.mdx b/packages/twenty-docs/l/ar/user-guide/dashboards/overview.mdx index 34b6972d6a..b4d54950cb 100644 --- a/packages/twenty-docs/l/ar/user-guide/dashboards/overview.mdx +++ b/packages/twenty-docs/l/ar/user-guide/dashboards/overview.mdx @@ -1,12 +1,8 @@ --- title: لوحات القيادة description: تعلّم أساسيات إعداد التقارير ولوحات المعلومات في Twenty. -image: /images/user-guide/reporting/pie-chart.png --- - - لوحات القيادة - لوحات المعلومات حاليًا في الإصدار التجريبي. قم بتفعيلها ضمن **الإعدادات → التحديثات → الوصول المبكر**. diff --git a/packages/twenty-docs/l/ar/user-guide/data-migration/overview.mdx b/packages/twenty-docs/l/ar/user-guide/data-migration/overview.mdx index 6db928130a..c6b2f560f0 100644 --- a/packages/twenty-docs/l/ar/user-guide/data-migration/overview.mdx +++ b/packages/twenty-docs/l/ar/user-guide/data-migration/overview.mdx @@ -1,14 +1,10 @@ --- title: Data Migration description: استيراد وتصدير بيانات CRM عبر ملفات CSV أو عبر API. -image: /images/user-guide/import-export-data/cloud.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - ترحيل البيانات - ## طرق الاستيراد diff --git a/packages/twenty-docs/l/ar/user-guide/data-model/overview.mdx b/packages/twenty-docs/l/ar/user-guide/data-model/overview.mdx index 5cc49a7cba..f6ed3051f0 100644 --- a/packages/twenty-docs/l/ar/user-guide/data-model/overview.mdx +++ b/packages/twenty-docs/l/ar/user-guide/data-model/overview.mdx @@ -1,12 +1,8 @@ --- title: نموذج البيانات description: تعرّف إلى نموذج البيانات وكيفية تصميم نموذج يناسب نشاطك التجاري. -image: /images/user-guide/fields/custom_data_model.png --- - - نموذج البيانات - ## ما هو نموذج البيانات؟ diff --git a/packages/twenty-docs/l/ar/user-guide/introduction.mdx b/packages/twenty-docs/l/ar/user-guide/introduction.mdx index d04c9b82f4..8aa0f84493 100644 --- a/packages/twenty-docs/l/ar/user-guide/introduction.mdx +++ b/packages/twenty-docs/l/ar/user-guide/introduction.mdx @@ -11,52 +11,52 @@ import { CardTitle } from "/snippets/card-title.mdx" تعرّف على ماهية Twenty وكيف يمكن أن تساعد عملك. - + نموذج البيانات خصّص نموذج بياناتك ليتوافق مع عمليات عملك. - + ترحيل البيانات استورد بياناتك وصدّرها عبر CSV أو API. - + التقويم والبريد الإلكتروني جمّع اجتماعات فريقك ورسائله الإلكترونية في مكان واحد. - + سير العمل أتمتة العمليات والتكامل مع الأدوات الخارجية. - + الذكاء الاصطناعي عزّز فريقك بوكلاء الذكاء الاصطناعي. - + طرق العرض والمسارات نظّم بياناتك من خلال طرق عرض عملية ومسارات. - + لوحات التحكم رؤى في الوقت الفعلي لتتبّع الأداء. - + الأذونات والوصول أدِر الأدوار والوصول إلى Twenty. - + الفوترة تعرّف على كيفية عمل التسعير والفوترة في Twenty. - + الإعدادات قم بتكوين تفضيلات مساحة العمل الخاصة بك. diff --git a/packages/twenty-docs/l/ar/user-guide/permissions-access/capabilities/permissions.mdx b/packages/twenty-docs/l/ar/user-guide/permissions-access/capabilities/permissions.mdx index 1ee46f7bc9..7336b516f8 100644 --- a/packages/twenty-docs/l/ar/user-guide/permissions-access/capabilities/permissions.mdx +++ b/packages/twenty-docs/l/ar/user-guide/permissions-access/capabilities/permissions.mdx @@ -1,7 +1,6 @@ --- title: الصلاحيات description: تحكّم في الوصول إلى الكائنات والحقول والإعدادات باستخدام أذونات مستندة إلى الأدوار. -image: /images/user-guide/permissions/permissions.png --- نظام أذونات Twenty يمكنك من التحكم في الوصول إلى ثلاثة مجالات رئيسية: diff --git a/packages/twenty-docs/l/ar/user-guide/permissions-access/overview.mdx b/packages/twenty-docs/l/ar/user-guide/permissions-access/overview.mdx index 1d3f55ca19..9aa43e1743 100644 --- a/packages/twenty-docs/l/ar/user-guide/permissions-access/overview.mdx +++ b/packages/twenty-docs/l/ar/user-guide/permissions-access/overview.mdx @@ -3,9 +3,6 @@ title: الأذونات والوصول description: إدارة الأدوار والأذونات والتحكم في الوصول ضمن مساحة العمل. --- - - الأذونات والوصول - يتيح لك نظام الأذونات في Twenty التحكم بمن يمكنه الوصول إلى البيانات وتعديلها في مساحة العمل لديك. أنشئ أدوارًا، وامنح أذونات، وقم بتكوين تسجيل الدخول الأحادي (SSO) للوصول الآمن. diff --git a/packages/twenty-docs/l/ar/user-guide/settings/how-tos/settings-faq.mdx b/packages/twenty-docs/l/ar/user-guide/settings/how-tos/settings-faq.mdx index 014b2a59fd..0bdd472134 100644 --- a/packages/twenty-docs/l/ar/user-guide/settings/how-tos/settings-faq.mdx +++ b/packages/twenty-docs/l/ar/user-guide/settings/how-tos/settings-faq.mdx @@ -1,7 +1,6 @@ --- title: أسئلة شائعة حول الإعدادات description: الأسئلة الشائعة حول إعدادات Twenty. -image: /images/user-guide/setup/settings.png --- ## إعدادات مساحة العمل diff --git a/packages/twenty-docs/l/ar/user-guide/settings/overview.mdx b/packages/twenty-docs/l/ar/user-guide/settings/overview.mdx index 1028f277e1..9f9c8a7905 100644 --- a/packages/twenty-docs/l/ar/user-guide/settings/overview.mdx +++ b/packages/twenty-docs/l/ar/user-guide/settings/overview.mdx @@ -1,12 +1,8 @@ --- title: \ا\ل\إ\ع\د\ا\د\ا\ت description: قم بإعداد مساحة عملك في Twenty باستخدام التكوينات الأساسية. -image: /images/user-guide/setup/settings.png --- - - \ا\ل\إ\ع\د\ا\د\ا\ت - ## الإعداد الأولي diff --git a/packages/twenty-docs/l/ar/user-guide/views-pipelines/capabilities/kanban-views.mdx b/packages/twenty-docs/l/ar/user-guide/views-pipelines/capabilities/kanban-views.mdx index 816e8d0781..ce1b6f3b4d 100644 --- a/packages/twenty-docs/l/ar/user-guide/views-pipelines/capabilities/kanban-views.mdx +++ b/packages/twenty-docs/l/ar/user-guide/views-pipelines/capabilities/kanban-views.mdx @@ -1,7 +1,6 @@ --- title: طرق عرض لوحة كانبان description: تعرّف على كيفية استخدام طرق عرض كانبان لتصوّر وإدارة سير العمل لديك. -image: /images/user-guide/kanban-views/kanban.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; diff --git a/packages/twenty-docs/l/ar/user-guide/views-pipelines/overview.mdx b/packages/twenty-docs/l/ar/user-guide/views-pipelines/overview.mdx index 4f8b705167..9574639226 100644 --- a/packages/twenty-docs/l/ar/user-guide/views-pipelines/overview.mdx +++ b/packages/twenty-docs/l/ar/user-guide/views-pipelines/overview.mdx @@ -1,14 +1,10 @@ --- title: العروض والمسارات description: تعرّف على كيفية إنشاء العروض وإدارتها في Twenty. -image: /images/user-guide/table-views/table.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - العروض والمسارات - ## فهم العروض diff --git a/packages/twenty-docs/l/ar/user-guide/workflows/capabilities/send-emails-from-workflows.mdx b/packages/twenty-docs/l/ar/user-guide/workflows/capabilities/send-emails-from-workflows.mdx index a8b9db1a85..2e8e6c91c0 100644 --- a/packages/twenty-docs/l/ar/user-guide/workflows/capabilities/send-emails-from-workflows.mdx +++ b/packages/twenty-docs/l/ar/user-guide/workflows/capabilities/send-emails-from-workflows.mdx @@ -1,7 +1,6 @@ --- title: إرسال رسائل البريد الإلكتروني عبر سير العمل description: أرسل رسائل بريد إلكتروني مُخصّصة تلقائياً باستخدام إجراءات سير العمل. -image: /images/user-guide/workflows/workflow.png --- أرسل رسائل البريد الإلكتروني تلقائياً عند حدوث أحداث معيّنة في نظام إدارة علاقات العملاء (CRM) لديك—رحّب بجهات الاتصال الجديدة، وتابع الفرص، أو أخطر أعضاء الفريق. diff --git a/packages/twenty-docs/l/ar/user-guide/workflows/capabilities/use-iterator.mdx b/packages/twenty-docs/l/ar/user-guide/workflows/capabilities/use-iterator.mdx index 46d90930e8..02e0930f76 100644 --- a/packages/twenty-docs/l/ar/user-guide/workflows/capabilities/use-iterator.mdx +++ b/packages/twenty-docs/l/ar/user-guide/workflows/capabilities/use-iterator.mdx @@ -1,7 +1,6 @@ --- title: استخدم المكرّر description: قم بالتكرار عبر مصفوفات السجلات لتنفيذ إجراءات على كل عنصر. -image: /images/user-guide/workflows/workflow.png --- يتيح لك المكرّر التكرار عبر مصفوفة من السجلات وتنفيذ إجراءات على كلٍ منها. وهو ضروري لتدفّقات العمل التي تحتاج إلى معالجة سجلات متعددة أُرجعت بواسطة Search Records أو استُلِمت عبر ربط الويب. diff --git a/packages/twenty-docs/l/ar/user-guide/workflows/capabilities/workflow-runs.mdx b/packages/twenty-docs/l/ar/user-guide/workflows/capabilities/workflow-runs.mdx index 25f679edb7..f99e79cc28 100644 --- a/packages/twenty-docs/l/ar/user-guide/workflows/capabilities/workflow-runs.mdx +++ b/packages/twenty-docs/l/ar/user-guide/workflows/capabilities/workflow-runs.mdx @@ -1,7 +1,6 @@ --- title: عمليات تشغيل سير العمل description: راقِب وأدِر عمليات تنفيذ سير العمل. -image: /images/user-guide/workflows/workflow.png --- ## حول عمليات التشغيل diff --git a/packages/twenty-docs/l/ar/user-guide/workflows/capabilities/workflow-versions.mdx b/packages/twenty-docs/l/ar/user-guide/workflows/capabilities/workflow-versions.mdx index 9bcaa15b82..5487d6852d 100644 --- a/packages/twenty-docs/l/ar/user-guide/workflows/capabilities/workflow-versions.mdx +++ b/packages/twenty-docs/l/ar/user-guide/workflows/capabilities/workflow-versions.mdx @@ -1,7 +1,6 @@ --- title: إصدارات سير العمل description: إدارة إصدارات ومسودات سير العمل. -image: /images/user-guide/workflows/workflow.png --- ## حول الإصدارات diff --git a/packages/twenty-docs/l/ar/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx b/packages/twenty-docs/l/ar/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx index 0a27cb381f..8549aea947 100644 --- a/packages/twenty-docs/l/ar/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx +++ b/packages/twenty-docs/l/ar/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx @@ -1,7 +1,6 @@ --- title: إعداد مشغّل ربط الويب description: استقبل بيانات من خدمات خارجية لتشغيل عمليات سير العمل. -image: /images/user-guide/workflows/workflow.png --- تتيح مشغّلات ربط الويب للخدمات الخارجية بدء تشغيل عمليات سير العمل لديك عبر إرسال بيانات إلى عنوان URL فريد. استخدمها لربط النماذج والتطبيقات من جهات خارجية والتكاملات المخصّصة. diff --git a/packages/twenty-docs/l/ar/user-guide/workflows/overview.mdx b/packages/twenty-docs/l/ar/user-guide/workflows/overview.mdx index 41452b5612..2a6aa61a62 100644 --- a/packages/twenty-docs/l/ar/user-guide/workflows/overview.mdx +++ b/packages/twenty-docs/l/ar/user-guide/workflows/overview.mdx @@ -1,12 +1,8 @@ --- title: سير العمل description: تعرّف على كيفية إنشاء عمليات الأتمتة في Twenty. -image: /images/user-guide/workflows/workflow.png --- - - سير العمل - ## أهمية تدفقات العمل diff --git a/packages/twenty-docs/l/cs/twenty-ui/display/app-tooltip.mdx b/packages/twenty-docs/l/cs/twenty-ui/display/app-tooltip.mdx index c903a6f98b..2841e8e2a4 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/display/app-tooltip.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/display/app-tooltip.mdx @@ -1,6 +1,5 @@ --- title: Tooltip aplikace -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/cs/twenty-ui/display/checkmark.mdx b/packages/twenty-docs/l/cs/twenty-ui/display/checkmark.mdx index a7155b78cd..d1b182b8f0 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/display/checkmark.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/display/checkmark.mdx @@ -1,6 +1,5 @@ --- title: Zaškrtnutí -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/cs/twenty-ui/display/chip.mdx b/packages/twenty-docs/l/cs/twenty-ui/display/chip.mdx index f776b20426..a78ef6d836 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/display/chip.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/display/chip.mdx @@ -1,6 +1,5 @@ --- title: Čip -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/cs/twenty-ui/display/icons.mdx b/packages/twenty-docs/l/cs/twenty-ui/display/icons.mdx index 4af7204603..c80d94bcc9 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/display/icons.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/display/icons.mdx @@ -1,6 +1,5 @@ --- title: Ikony -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/cs/twenty-ui/display/soon-pill.mdx b/packages/twenty-docs/l/cs/twenty-ui/display/soon-pill.mdx index a89754b7c1..026193c3f3 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/display/soon-pill.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/display/soon-pill.mdx @@ -1,11 +1,7 @@ --- title: Štítek „Brzy“ -image: /images/user-guide/kanban-views/kanban.png --- - - Hlavička - Malý odznak nebo "pilulka" označující, že něco brzy přijde. diff --git a/packages/twenty-docs/l/cs/twenty-ui/display/tag.mdx b/packages/twenty-docs/l/cs/twenty-ui/display/tag.mdx index dbc38b375e..f5f48add35 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/display/tag.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/display/tag.mdx @@ -1,11 +1,7 @@ --- title: Štítek -image: /images/user-guide/table-views/table.png --- - - Hlavička - Komponenta pro vizuální kategorizaci nebo označení obsahu. diff --git a/packages/twenty-docs/l/cs/twenty-ui/input.mdx b/packages/twenty-docs/l/cs/twenty-ui/input.mdx index 4ecce430a0..cb83950cd5 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/input.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/input.mdx @@ -1,6 +1,5 @@ --- title: Vstup -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/cs/twenty-ui/input/block-editor.mdx b/packages/twenty-docs/l/cs/twenty-ui/input/block-editor.mdx index 7d90b8fd59..2d109a4e96 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/input/block-editor.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/input/block-editor.mdx @@ -1,6 +1,5 @@ --- title: Blokový Editor -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/cs/twenty-ui/input/buttons.mdx b/packages/twenty-docs/l/cs/twenty-ui/input/buttons.mdx index ffba0029c7..a44975c3ef 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/input/buttons.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/input/buttons.mdx @@ -1,6 +1,5 @@ --- title: Tlačítka -image: /images/user-guide/views/filter.png --- diff --git a/packages/twenty-docs/l/cs/twenty-ui/input/checkbox.mdx b/packages/twenty-docs/l/cs/twenty-ui/input/checkbox.mdx index df2c80a200..6c39026d72 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/input/checkbox.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/input/checkbox.mdx @@ -1,6 +1,5 @@ --- title: Zaškrtávací políčko -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/cs/twenty-ui/input/color-scheme.mdx b/packages/twenty-docs/l/cs/twenty-ui/input/color-scheme.mdx index 879821c0da..3385bc81f0 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/input/color-scheme.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/input/color-scheme.mdx @@ -1,6 +1,5 @@ --- title: Barevné schéma -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/cs/twenty-ui/input/icon-picker.mdx b/packages/twenty-docs/l/cs/twenty-ui/input/icon-picker.mdx index c7b338f0c9..be70098441 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/input/icon-picker.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/input/icon-picker.mdx @@ -1,6 +1,5 @@ --- title: Výběr Ikony -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/cs/twenty-ui/input/image-input.mdx b/packages/twenty-docs/l/cs/twenty-ui/input/image-input.mdx index ea70784551..4bde870c3e 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/input/image-input.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/input/image-input.mdx @@ -1,6 +1,5 @@ --- title: Vstup obrázku -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/cs/twenty-ui/input/radio.mdx b/packages/twenty-docs/l/cs/twenty-ui/input/radio.mdx index 1f4819420f..d9a69c1e7e 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/input/radio.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/input/radio.mdx @@ -1,6 +1,5 @@ --- title: Rádio -image: /images/user-guide/create-workspace/workspace-cover.png --- diff --git a/packages/twenty-docs/l/cs/twenty-ui/input/select.mdx b/packages/twenty-docs/l/cs/twenty-ui/input/select.mdx index 519ea3adb3..10a86710b0 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/input/select.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/input/select.mdx @@ -1,6 +1,5 @@ --- title: Vybrat -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/cs/twenty-ui/input/text.mdx b/packages/twenty-docs/l/cs/twenty-ui/input/text.mdx index f3c8cc7221..c323d68ddb 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/input/text.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/input/text.mdx @@ -1,6 +1,5 @@ --- title: Text -image: /images/user-guide/notes/notes_header.png --- diff --git a/packages/twenty-docs/l/cs/twenty-ui/input/toggle.mdx b/packages/twenty-docs/l/cs/twenty-ui/input/toggle.mdx index d1b5b58138..4e4ea9b6eb 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/input/toggle.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/input/toggle.mdx @@ -1,11 +1,7 @@ --- title: Přepínač -image: /images/user-guide/table-views/table.png --- - - Hlavička - diff --git a/packages/twenty-docs/l/cs/twenty-ui/navigation.mdx b/packages/twenty-docs/l/cs/twenty-ui/navigation.mdx index 0016dc78bf..e6126f020c 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/navigation.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/navigation.mdx @@ -1,6 +1,5 @@ --- title: Navigace -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/cs/twenty-ui/navigation/breadcrumb.mdx b/packages/twenty-docs/l/cs/twenty-ui/navigation/breadcrumb.mdx index 50cefbb7fe..1a303c0a67 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/navigation/breadcrumb.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/navigation/breadcrumb.mdx @@ -1,6 +1,5 @@ --- title: Drobečková navigace -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/cs/twenty-ui/navigation/links.mdx b/packages/twenty-docs/l/cs/twenty-ui/navigation/links.mdx index e86da5d0eb..a08beec992 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/navigation/links.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/navigation/links.mdx @@ -1,6 +1,5 @@ --- title: Odkazy -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/cs/twenty-ui/navigation/menu-item.mdx b/packages/twenty-docs/l/cs/twenty-ui/navigation/menu-item.mdx index 789bdad198..e96feb4054 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/navigation/menu-item.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/navigation/menu-item.mdx @@ -1,11 +1,7 @@ --- title: Položka menu -image: /images/user-guide/kanban-views/kanban.png --- - - Hlavička - Univerzální položka menu navržená k použití v menu nebo navigačním seznamu. diff --git a/packages/twenty-docs/l/cs/twenty-ui/navigation/navigation-bar.mdx b/packages/twenty-docs/l/cs/twenty-ui/navigation/navigation-bar.mdx index 6701044130..e4dddaf779 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/navigation/navigation-bar.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/navigation/navigation-bar.mdx @@ -1,11 +1,7 @@ --- title: Navigační panel -image: /images/user-guide/table-views/table.png --- - - Hlavička - Zobrazuje navigační panel, který obsahuje více komponent `NavigationBarItem`. diff --git a/packages/twenty-docs/l/cs/twenty-ui/navigation/step-bar.mdx b/packages/twenty-docs/l/cs/twenty-ui/navigation/step-bar.mdx index 113368cec1..f39129ad79 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/navigation/step-bar.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/navigation/step-bar.mdx @@ -1,6 +1,5 @@ --- title: Pruh kroků -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/cs/twenty-ui/progress-bar.mdx b/packages/twenty-docs/l/cs/twenty-ui/progress-bar.mdx index 5b811f368b..439da2d2bc 100644 --- a/packages/twenty-docs/l/cs/twenty-ui/progress-bar.mdx +++ b/packages/twenty-docs/l/cs/twenty-ui/progress-bar.mdx @@ -1,11 +1,7 @@ --- title: Zpětná vazba -image: /images/user-guide/emails/emails_header.png --- - - Hlavička - Udává průběh nebo odpočítávání a pohybuje se zprava doleva. diff --git a/packages/twenty-docs/l/cs/user-guide/billing/overview.mdx b/packages/twenty-docs/l/cs/user-guide/billing/overview.mdx index c6151fe1ac..abec376ae7 100644 --- a/packages/twenty-docs/l/cs/user-guide/billing/overview.mdx +++ b/packages/twenty-docs/l/cs/user-guide/billing/overview.mdx @@ -1,12 +1,8 @@ --- title: Fakturace description: Seznamte se s cenami Twenty a spravujte své předplatné. -image: /images/user-guide/setup/pricing.png --- - - Fakturace - Twenty nabízí flexibilní cenové plány, které vyhoví potřebám vašeho týmu. Spravujte své předplatné, sledujte kredity pracovních postupů a přistupujte k fakturám — to vše v **Nastavení → Fakturace**. diff --git a/packages/twenty-docs/l/cs/user-guide/calendar-emails/overview.mdx b/packages/twenty-docs/l/cs/user-guide/calendar-emails/overview.mdx index 0bd4093366..af55521f5f 100644 --- a/packages/twenty-docs/l/cs/user-guide/calendar-emails/overview.mdx +++ b/packages/twenty-docs/l/cs/user-guide/calendar-emails/overview.mdx @@ -1,12 +1,8 @@ --- title: Kalendář a e-maily description: Připojte své účty e-mailu a kalendáře k Twenty. -image: /images/user-guide/emails/emails_header.png --- - - Kalendář a e-maily - ## Možnosti Připojení diff --git a/packages/twenty-docs/l/cs/user-guide/dashboards/overview.mdx b/packages/twenty-docs/l/cs/user-guide/dashboards/overview.mdx index a4e4f85cdf..5c1800aaf0 100644 --- a/packages/twenty-docs/l/cs/user-guide/dashboards/overview.mdx +++ b/packages/twenty-docs/l/cs/user-guide/dashboards/overview.mdx @@ -1,12 +1,8 @@ --- title: Panely description: Naučte se základy vytváření sestav a řídicích panelů v Twenty. -image: /images/user-guide/reporting/pie-chart.png --- - - Panely - Řídicí panely jsou momentálně v beta verzi. Aktivujte je v **Nastavení → Aktualizace → Předběžný přístup**. diff --git a/packages/twenty-docs/l/cs/user-guide/data-migration/overview.mdx b/packages/twenty-docs/l/cs/user-guide/data-migration/overview.mdx index 42b8fb4829..1b9d23fbae 100644 --- a/packages/twenty-docs/l/cs/user-guide/data-migration/overview.mdx +++ b/packages/twenty-docs/l/cs/user-guide/data-migration/overview.mdx @@ -1,14 +1,10 @@ --- title: Migrace dat description: Importujte a exportujte svá data CRM pomocí souborů CSV nebo rozhraní API. -image: /images/user-guide/import-export-data/cloud.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - Migrace dat - ## Metody importu diff --git a/packages/twenty-docs/l/cs/user-guide/data-model/overview.mdx b/packages/twenty-docs/l/cs/user-guide/data-model/overview.mdx index 4d8855501f..64db9a4b16 100644 --- a/packages/twenty-docs/l/cs/user-guide/data-model/overview.mdx +++ b/packages/twenty-docs/l/cs/user-guide/data-model/overview.mdx @@ -1,12 +1,8 @@ --- title: Datový model description: Zjistěte, co je datový model a jak navrhnout takový, který bude vyhovovat vašemu podnikání. -image: /images/user-guide/fields/custom_data_model.png --- - - Datový model - ## Co je to datový model? diff --git a/packages/twenty-docs/l/cs/user-guide/introduction.mdx b/packages/twenty-docs/l/cs/user-guide/introduction.mdx index 725c26f782..ff07f1c17d 100644 --- a/packages/twenty-docs/l/cs/user-guide/introduction.mdx +++ b/packages/twenty-docs/l/cs/user-guide/introduction.mdx @@ -11,52 +11,52 @@ import { CardTitle } from "/snippets/card-title.mdx" Zjistěte, co je Twenty a jak může pomoci vašemu podnikání. - + Datový model Přizpůsobte svůj datový model tak, aby odpovídal vašim obchodním procesům. - + Migrace dat Importujte a exportujte svá data pomocí CSV nebo API. - + Kalendář a e-maily Centralizujte schůzky a e-maily svého týmu. - + Pracovní postupy Automatizujte procesy a integrujte se s externími nástroji. - + AI Posilte svůj tým pomocí agentů AI. - + Zobrazení a pipeline Uspořádejte svá data pomocí praktických zobrazení a pipeline. - + Přehledy Informace v reálném čase pro sledování výkonnosti. - + Oprávnění a přístup Spravujte role a přístup k Twenty. - + Fakturace Pochopte, jak fungují ceny a fakturace Twenty. - + Nastavení Nastavte předvolby svého pracovního prostoru. diff --git a/packages/twenty-docs/l/cs/user-guide/permissions-access/capabilities/permissions.mdx b/packages/twenty-docs/l/cs/user-guide/permissions-access/capabilities/permissions.mdx index 93c63ceb9a..717f626338 100644 --- a/packages/twenty-docs/l/cs/user-guide/permissions-access/capabilities/permissions.mdx +++ b/packages/twenty-docs/l/cs/user-guide/permissions-access/capabilities/permissions.mdx @@ -1,7 +1,6 @@ --- title: Oprávnění description: Řiďte přístup k objektům, polím a nastavením pomocí oprávnění založených na rolích. -image: /images/user-guide/permissions/permissions.png --- Systém oprávnění v Twenty vám umožňuje řídit přístup ke třem hlavním oblastem: diff --git a/packages/twenty-docs/l/cs/user-guide/permissions-access/overview.mdx b/packages/twenty-docs/l/cs/user-guide/permissions-access/overview.mdx index 0692f5aa23..624c9e58e5 100644 --- a/packages/twenty-docs/l/cs/user-guide/permissions-access/overview.mdx +++ b/packages/twenty-docs/l/cs/user-guide/permissions-access/overview.mdx @@ -3,9 +3,6 @@ title: Oprávnění a přístup description: Spravujte role, oprávnění a řízení přístupu ve svém pracovním prostoru. --- - - Oprávnění a přístup - Systém oprávnění Twenty vám umožňuje řídit, kdo může ve vašem pracovním prostoru přistupovat k datům a kdo je může upravovat. Vytvářejte role, přiřazujte oprávnění a konfigurujte SSO pro zabezpečený přístup. diff --git a/packages/twenty-docs/l/cs/user-guide/settings/how-tos/settings-faq.mdx b/packages/twenty-docs/l/cs/user-guide/settings/how-tos/settings-faq.mdx index 76a27f86a7..d376275547 100644 --- a/packages/twenty-docs/l/cs/user-guide/settings/how-tos/settings-faq.mdx +++ b/packages/twenty-docs/l/cs/user-guide/settings/how-tos/settings-faq.mdx @@ -1,7 +1,6 @@ --- title: Nastavení FAQ description: Často kladené otázky k nastavení Twenty. -image: /images/user-guide/setup/settings.png --- ## Nastavení pracovního prostoru diff --git a/packages/twenty-docs/l/cs/user-guide/settings/overview.mdx b/packages/twenty-docs/l/cs/user-guide/settings/overview.mdx index e4d39e72a7..0d426afe94 100644 --- a/packages/twenty-docs/l/cs/user-guide/settings/overview.mdx +++ b/packages/twenty-docs/l/cs/user-guide/settings/overview.mdx @@ -1,12 +1,8 @@ --- title: Nastavení description: Nastavte svůj pracovní prostor Twenty pomocí klíčových nastavení. -image: /images/user-guide/setup/settings.png --- - - Nastavení - ## Úvodní nastavení diff --git a/packages/twenty-docs/l/cs/user-guide/views-pipelines/capabilities/kanban-views.mdx b/packages/twenty-docs/l/cs/user-guide/views-pipelines/capabilities/kanban-views.mdx index d6adeb3c9b..f399730111 100644 --- a/packages/twenty-docs/l/cs/user-guide/views-pipelines/capabilities/kanban-views.mdx +++ b/packages/twenty-docs/l/cs/user-guide/views-pipelines/capabilities/kanban-views.mdx @@ -1,7 +1,6 @@ --- title: Zobrazení kanbanové tabule description: Zjistěte, jak používat kanbanová zobrazení k vizualizaci a správě svých pracovních postupů. -image: /images/user-guide/kanban-views/kanban.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; diff --git a/packages/twenty-docs/l/cs/user-guide/views-pipelines/overview.mdx b/packages/twenty-docs/l/cs/user-guide/views-pipelines/overview.mdx index ebf869812d..28fb4c6c97 100644 --- a/packages/twenty-docs/l/cs/user-guide/views-pipelines/overview.mdx +++ b/packages/twenty-docs/l/cs/user-guide/views-pipelines/overview.mdx @@ -1,14 +1,10 @@ --- title: Zobrazení a kanály description: Zjistěte, jak v Twenty vytvářet a spravovat zobrazení. -image: /images/user-guide/table-views/table.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - Zobrazení a kanály - ## Porozumění zobrazením diff --git a/packages/twenty-docs/l/cs/user-guide/workflows/capabilities/send-emails-from-workflows.mdx b/packages/twenty-docs/l/cs/user-guide/workflows/capabilities/send-emails-from-workflows.mdx index 9f136aa9c0..018c690526 100644 --- a/packages/twenty-docs/l/cs/user-guide/workflows/capabilities/send-emails-from-workflows.mdx +++ b/packages/twenty-docs/l/cs/user-guide/workflows/capabilities/send-emails-from-workflows.mdx @@ -1,7 +1,6 @@ --- title: Odesílání e-mailů z pracovních postupů description: Posílejte personalizované e-maily automaticky pomocí akcí pracovních postupů. -image: /images/user-guide/workflows/workflow.png --- Automaticky odesílejte e-maily, když ve vašem CRM nastanou konkrétní události—přivítejte nové kontakty, navazujte na příležitosti nebo upozorněte členy týmu. diff --git a/packages/twenty-docs/l/cs/user-guide/workflows/capabilities/use-iterator.mdx b/packages/twenty-docs/l/cs/user-guide/workflows/capabilities/use-iterator.mdx index ccd31c2eb7..8101cfd0d6 100644 --- a/packages/twenty-docs/l/cs/user-guide/workflows/capabilities/use-iterator.mdx +++ b/packages/twenty-docs/l/cs/user-guide/workflows/capabilities/use-iterator.mdx @@ -1,7 +1,6 @@ --- title: Použijte iterátor description: Procházejte pole záznamů a provádějte akce s každou položkou. -image: /images/user-guide/workflows/workflow.png --- Iterátor vám umožní procházet pole záznamů a provádět akce na každém z nich. Je zásadní pro pracovní postupy, které potřebují zpracovat více záznamů vrácených akcí Search Records nebo přijatých přes webhooky. diff --git a/packages/twenty-docs/l/cs/user-guide/workflows/capabilities/workflow-runs.mdx b/packages/twenty-docs/l/cs/user-guide/workflows/capabilities/workflow-runs.mdx index 004fc9a5bd..aee1ba230a 100644 --- a/packages/twenty-docs/l/cs/user-guide/workflows/capabilities/workflow-runs.mdx +++ b/packages/twenty-docs/l/cs/user-guide/workflows/capabilities/workflow-runs.mdx @@ -1,7 +1,6 @@ --- title: Běhy průběhu práce description: Sledujte a spravujte běhy pracovních postupů. -image: /images/user-guide/workflows/workflow.png --- ## O bězích diff --git a/packages/twenty-docs/l/cs/user-guide/workflows/capabilities/workflow-versions.mdx b/packages/twenty-docs/l/cs/user-guide/workflows/capabilities/workflow-versions.mdx index e953646ddb..59f4cb89d9 100644 --- a/packages/twenty-docs/l/cs/user-guide/workflows/capabilities/workflow-versions.mdx +++ b/packages/twenty-docs/l/cs/user-guide/workflows/capabilities/workflow-versions.mdx @@ -1,7 +1,6 @@ --- title: Workflow Versions description: Spravujte verze a koncepty pracovních postupů. -image: /images/user-guide/workflows/workflow.png --- ## O verzích diff --git a/packages/twenty-docs/l/cs/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx b/packages/twenty-docs/l/cs/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx index fa25034fed..3ba515f3b5 100644 --- a/packages/twenty-docs/l/cs/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx +++ b/packages/twenty-docs/l/cs/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx @@ -1,7 +1,6 @@ --- title: Nastavení spouštěče webhooku description: Přijímejte data z externích služeb pro spouštění pracovních postupů. -image: /images/user-guide/workflows/workflow.png --- Spouštěče webhooků umožňují externím službám spustit vaše pracovní postupy zasláním dat na jedinečnou adresu URL. Použijte je k propojení formulářů, aplikací třetích stran a vlastních integrací. diff --git a/packages/twenty-docs/l/cs/user-guide/workflows/overview.mdx b/packages/twenty-docs/l/cs/user-guide/workflows/overview.mdx index e5f8d83cec..47aec13182 100644 --- a/packages/twenty-docs/l/cs/user-guide/workflows/overview.mdx +++ b/packages/twenty-docs/l/cs/user-guide/workflows/overview.mdx @@ -1,12 +1,8 @@ --- title: Pracovní postupy description: Naučte se vytvářet automatizace v Twenty. -image: /images/user-guide/workflows/workflow.png --- - - Pracovní postupy - ## Proč na Workflows záleží diff --git a/packages/twenty-docs/l/de/twenty-ui/display/app-tooltip.mdx b/packages/twenty-docs/l/de/twenty-ui/display/app-tooltip.mdx index 3f9a67c9d4..c4c9e57360 100644 --- a/packages/twenty-docs/l/de/twenty-ui/display/app-tooltip.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/display/app-tooltip.mdx @@ -1,6 +1,5 @@ --- title: App-Tooltip -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/de/twenty-ui/display/checkmark.mdx b/packages/twenty-docs/l/de/twenty-ui/display/checkmark.mdx index 1ebea7ce6c..9e95324a74 100644 --- a/packages/twenty-docs/l/de/twenty-ui/display/checkmark.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/display/checkmark.mdx @@ -1,6 +1,5 @@ --- title: Häkchen -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/de/twenty-ui/display/chip.mdx b/packages/twenty-docs/l/de/twenty-ui/display/chip.mdx index 4ac62793fa..15282d2f8e 100644 --- a/packages/twenty-docs/l/de/twenty-ui/display/chip.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/display/chip.mdx @@ -1,6 +1,5 @@ --- title: Chip -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/de/twenty-ui/display/icons.mdx b/packages/twenty-docs/l/de/twenty-ui/display/icons.mdx index 000227b10f..ac8d8e3258 100644 --- a/packages/twenty-docs/l/de/twenty-ui/display/icons.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/display/icons.mdx @@ -1,6 +1,5 @@ --- title: Icons -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/de/twenty-ui/display/soon-pill.mdx b/packages/twenty-docs/l/de/twenty-ui/display/soon-pill.mdx index a4d3bc5dc2..f83838f894 100644 --- a/packages/twenty-docs/l/de/twenty-ui/display/soon-pill.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/display/soon-pill.mdx @@ -1,11 +1,7 @@ --- title: Soon Pill -image: /images/user-guide/kanban-views/kanban.png --- - - Kopfzeile - Ein kleines Abzeichen oder "Pille", um anzuzeigen, dass etwas bald kommt. diff --git a/packages/twenty-docs/l/de/twenty-ui/display/tag.mdx b/packages/twenty-docs/l/de/twenty-ui/display/tag.mdx index 1e50cfe716..746a53de66 100644 --- a/packages/twenty-docs/l/de/twenty-ui/display/tag.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/display/tag.mdx @@ -1,11 +1,7 @@ --- title: '"Tag"' -image: /images/user-guide/table-views/table.png --- - - Kopfzeile - Komponente zur visuellen Kategorisierung oder Kennzeichnung von Inhalten. diff --git a/packages/twenty-docs/l/de/twenty-ui/input.mdx b/packages/twenty-docs/l/de/twenty-ui/input.mdx index ef860dbec8..d1a35816c4 100644 --- a/packages/twenty-docs/l/de/twenty-ui/input.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/input.mdx @@ -1,6 +1,5 @@ --- title: Eingabe -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/de/twenty-ui/input/block-editor.mdx b/packages/twenty-docs/l/de/twenty-ui/input/block-editor.mdx index f8aba3d041..6040c842af 100644 --- a/packages/twenty-docs/l/de/twenty-ui/input/block-editor.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/input/block-editor.mdx @@ -1,6 +1,5 @@ --- title: Block-Editor -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/de/twenty-ui/input/buttons.mdx b/packages/twenty-docs/l/de/twenty-ui/input/buttons.mdx index 22cf4c7583..e61edb0cf1 100644 --- a/packages/twenty-docs/l/de/twenty-ui/input/buttons.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/input/buttons.mdx @@ -1,6 +1,5 @@ --- title: Schaltflächen -image: /images/user-guide/views/filter.png --- diff --git a/packages/twenty-docs/l/de/twenty-ui/input/checkbox.mdx b/packages/twenty-docs/l/de/twenty-ui/input/checkbox.mdx index 09b52ffdea..bc8d1efa47 100644 --- a/packages/twenty-docs/l/de/twenty-ui/input/checkbox.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/input/checkbox.mdx @@ -1,6 +1,5 @@ --- title: Kontrollkästchen -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/de/twenty-ui/input/color-scheme.mdx b/packages/twenty-docs/l/de/twenty-ui/input/color-scheme.mdx index 3e68098171..1d9eafe940 100644 --- a/packages/twenty-docs/l/de/twenty-ui/input/color-scheme.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/input/color-scheme.mdx @@ -1,6 +1,5 @@ --- title: Farbschema -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/de/twenty-ui/input/icon-picker.mdx b/packages/twenty-docs/l/de/twenty-ui/input/icon-picker.mdx index 679f13f39c..e1b9a2f1e3 100644 --- a/packages/twenty-docs/l/de/twenty-ui/input/icon-picker.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/input/icon-picker.mdx @@ -1,6 +1,5 @@ --- title: Symbolauswahl -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/de/twenty-ui/input/image-input.mdx b/packages/twenty-docs/l/de/twenty-ui/input/image-input.mdx index 87ccd2db80..586bc0d0c5 100644 --- a/packages/twenty-docs/l/de/twenty-ui/input/image-input.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/input/image-input.mdx @@ -1,6 +1,5 @@ --- title: Bildeingabe -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/de/twenty-ui/input/radio.mdx b/packages/twenty-docs/l/de/twenty-ui/input/radio.mdx index ba7b99a7d0..fef02a3df1 100644 --- a/packages/twenty-docs/l/de/twenty-ui/input/radio.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/input/radio.mdx @@ -1,6 +1,5 @@ --- title: Radio -image: /images/user-guide/create-workspace/workspace-cover.png --- diff --git a/packages/twenty-docs/l/de/twenty-ui/input/select.mdx b/packages/twenty-docs/l/de/twenty-ui/input/select.mdx index bc36b47642..2b7cb90ed7 100644 --- a/packages/twenty-docs/l/de/twenty-ui/input/select.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/input/select.mdx @@ -1,6 +1,5 @@ --- title: Auswahl -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/de/twenty-ui/input/text.mdx b/packages/twenty-docs/l/de/twenty-ui/input/text.mdx index 24952117bf..fa47745a39 100644 --- a/packages/twenty-docs/l/de/twenty-ui/input/text.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/input/text.mdx @@ -1,6 +1,5 @@ --- title: Text -image: /images/user-guide/notes/notes_header.png --- diff --git a/packages/twenty-docs/l/de/twenty-ui/input/toggle.mdx b/packages/twenty-docs/l/de/twenty-ui/input/toggle.mdx index 242d577e8f..797af2fb43 100644 --- a/packages/twenty-docs/l/de/twenty-ui/input/toggle.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/input/toggle.mdx @@ -1,11 +1,7 @@ --- title: Umschalten -image: /images/user-guide/table-views/table.png --- - - Kopfzeile - diff --git a/packages/twenty-docs/l/de/twenty-ui/navigation.mdx b/packages/twenty-docs/l/de/twenty-ui/navigation.mdx index 6c71341b17..d8724e9cc7 100644 --- a/packages/twenty-docs/l/de/twenty-ui/navigation.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/navigation.mdx @@ -1,6 +1,5 @@ --- title: Navigation -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/de/twenty-ui/navigation/breadcrumb.mdx b/packages/twenty-docs/l/de/twenty-ui/navigation/breadcrumb.mdx index b45874d482..5351902f9d 100644 --- a/packages/twenty-docs/l/de/twenty-ui/navigation/breadcrumb.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/navigation/breadcrumb.mdx @@ -1,6 +1,5 @@ --- title: Breadcrumb -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/de/twenty-ui/navigation/links.mdx b/packages/twenty-docs/l/de/twenty-ui/navigation/links.mdx index 43b88f37a5..2161f130b8 100644 --- a/packages/twenty-docs/l/de/twenty-ui/navigation/links.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/navigation/links.mdx @@ -1,6 +1,5 @@ --- title: Links -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/de/twenty-ui/navigation/menu-item.mdx b/packages/twenty-docs/l/de/twenty-ui/navigation/menu-item.mdx index a05038bd1d..6ded5de890 100644 --- a/packages/twenty-docs/l/de/twenty-ui/navigation/menu-item.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/navigation/menu-item.mdx @@ -1,11 +1,7 @@ --- title: Menüpunkt -image: /images/user-guide/kanban-views/kanban.png --- - - Kopfzeile - Ein vielseitiger Menüpunkt, der in einem Menü oder einer Navigationsliste verwendet werden kann. diff --git a/packages/twenty-docs/l/de/twenty-ui/navigation/navigation-bar.mdx b/packages/twenty-docs/l/de/twenty-ui/navigation/navigation-bar.mdx index f12d480604..90004f5a08 100644 --- a/packages/twenty-docs/l/de/twenty-ui/navigation/navigation-bar.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/navigation/navigation-bar.mdx @@ -1,11 +1,7 @@ --- title: Navigationsleiste -image: /images/user-guide/table-views/table.png --- - - Kopfzeile - Rendert eine Navigationsleiste, die mehrere `NavigationBarItem`-Komponenten enthält. diff --git a/packages/twenty-docs/l/de/twenty-ui/navigation/step-bar.mdx b/packages/twenty-docs/l/de/twenty-ui/navigation/step-bar.mdx index 64bc4d0ff8..f2ce5c8d1b 100644 --- a/packages/twenty-docs/l/de/twenty-ui/navigation/step-bar.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/navigation/step-bar.mdx @@ -1,6 +1,5 @@ --- title: Schrittleiste -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/de/twenty-ui/progress-bar.mdx b/packages/twenty-docs/l/de/twenty-ui/progress-bar.mdx index df131ff31c..200963d86c 100644 --- a/packages/twenty-docs/l/de/twenty-ui/progress-bar.mdx +++ b/packages/twenty-docs/l/de/twenty-ui/progress-bar.mdx @@ -1,11 +1,7 @@ --- title: Rückmeldung -image: /images/user-guide/emails/emails_header.png --- - - Kopfzeile - Zeigt den Fortschritt oder Countdown an und bewegt sich von rechts nach links. diff --git a/packages/twenty-docs/l/de/user-guide/billing/overview.mdx b/packages/twenty-docs/l/de/user-guide/billing/overview.mdx index d7532f7135..b451eb9d20 100644 --- a/packages/twenty-docs/l/de/user-guide/billing/overview.mdx +++ b/packages/twenty-docs/l/de/user-guide/billing/overview.mdx @@ -1,12 +1,8 @@ --- title: Abrechnung description: Verstehen Sie die Preisgestaltung von Twenty und verwalten Sie Ihr Abonnement. -image: /images/user-guide/setup/pricing.png --- - - Abrechnung - Twenty bietet flexible Preispläne, die den Bedürfnissen Ihres Teams entsprechen. Verwalten Sie Ihr Abonnement, verfolgen Sie Workflow-Guthaben und greifen Sie auf Rechnungen zu – alles über **Einstellungen → Abrechnung**. diff --git a/packages/twenty-docs/l/de/user-guide/calendar-emails/overview.mdx b/packages/twenty-docs/l/de/user-guide/calendar-emails/overview.mdx index 10a528df5b..21c14cacab 100644 --- a/packages/twenty-docs/l/de/user-guide/calendar-emails/overview.mdx +++ b/packages/twenty-docs/l/de/user-guide/calendar-emails/overview.mdx @@ -1,12 +1,8 @@ --- title: Kalender & E-Mails description: Verbinden Sie Ihre E-Mail- und Kalenderkonten mit Twenty. -image: /images/user-guide/emails/emails_header.png --- - - Kalender & E-Mails - ## Verbindungsoptionen diff --git a/packages/twenty-docs/l/de/user-guide/dashboards/overview.mdx b/packages/twenty-docs/l/de/user-guide/dashboards/overview.mdx index a20c0d61eb..39363b9543 100644 --- a/packages/twenty-docs/l/de/user-guide/dashboards/overview.mdx +++ b/packages/twenty-docs/l/de/user-guide/dashboards/overview.mdx @@ -1,12 +1,8 @@ --- title: Dashboards description: Erfahren Sie die Grundlagen von Reporting und Dashboards in Twenty. -image: /images/user-guide/reporting/pie-chart.png --- - - Dashboards - Dashboards befinden sich derzeit in der Beta-Phase. Aktivieren Sie sie unter **Einstellungen → Updates → Early Access**. diff --git a/packages/twenty-docs/l/de/user-guide/data-migration/overview.mdx b/packages/twenty-docs/l/de/user-guide/data-migration/overview.mdx index 8e87160ed0..1e849b526c 100644 --- a/packages/twenty-docs/l/de/user-guide/data-migration/overview.mdx +++ b/packages/twenty-docs/l/de/user-guide/data-migration/overview.mdx @@ -1,14 +1,10 @@ --- title: Datenmigration description: Importieren und exportieren Sie Ihre CRM-Daten über CSV-Dateien oder die API. -image: /images/user-guide/import-export-data/cloud.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - Datenmigration - ## Importmethoden diff --git a/packages/twenty-docs/l/de/user-guide/data-model/overview.mdx b/packages/twenty-docs/l/de/user-guide/data-model/overview.mdx index 0c8df20793..3c99e6dc63 100644 --- a/packages/twenty-docs/l/de/user-guide/data-model/overview.mdx +++ b/packages/twenty-docs/l/de/user-guide/data-model/overview.mdx @@ -1,12 +1,8 @@ --- title: Datenmodell description: Erfahren Sie, was ein Datenmodell ist und wie Sie eines entwerfen, das zu Ihrem Unternehmen passt. -image: /images/user-guide/fields/custom_data_model.png --- - - Datenmodell - ## Was ist ein Datenmodell? diff --git a/packages/twenty-docs/l/de/user-guide/introduction.mdx b/packages/twenty-docs/l/de/user-guide/introduction.mdx index cc53105b0c..30c131f25d 100644 --- a/packages/twenty-docs/l/de/user-guide/introduction.mdx +++ b/packages/twenty-docs/l/de/user-guide/introduction.mdx @@ -11,52 +11,52 @@ import { CardTitle } from "/snippets/card-title.mdx" Erfahren Sie, was Twenty ist und wie es Ihrem Unternehmen helfen kann. - + Datenmodell Passen Sie Ihr Datenmodell an Ihre Geschäftsprozesse an. - + Datenmigration Importieren und exportieren Sie Ihre Daten per CSV oder API. - + Kalender & E-Mails Zentralisieren Sie die Besprechungen und E-Mails Ihres Teams. - + Workflows Automatisieren Sie Prozesse und integrieren Sie externe Werkzeuge. - + KI Verstärken Sie Ihr Team mit KI-Agenten. - + Ansichten & Pipelines Organisieren Sie Ihre Daten mit umsetzbaren Ansichten und Pipelines. - + Dashboards Echtzeit-Einblicke zur Leistungsverfolgung. - + Berechtigungen & Zugriff Verwalten Sie Rollen und den Zugriff auf Twenty. - + Abrechnung Verstehen Sie, wie die Preisgestaltung und die Abrechnung von Twenty funktionieren. - + Einstellungen Konfigurieren Sie Ihre Arbeitsbereichseinstellungen. diff --git a/packages/twenty-docs/l/de/user-guide/permissions-access/capabilities/permissions.mdx b/packages/twenty-docs/l/de/user-guide/permissions-access/capabilities/permissions.mdx index 6774a3bf56..3d95c4efbb 100644 --- a/packages/twenty-docs/l/de/user-guide/permissions-access/capabilities/permissions.mdx +++ b/packages/twenty-docs/l/de/user-guide/permissions-access/capabilities/permissions.mdx @@ -1,7 +1,6 @@ --- title: Berechtigungen description: Steuern Sie den Zugriff auf Objekte, Felder und Einstellungen mit rollenbasierten Berechtigungen. -image: /images/user-guide/permissions/permissions.png --- Das Berechtigungssystem von Twenty ermöglicht es Ihnen, den Zugriff auf drei Hauptbereiche zu steuern: diff --git a/packages/twenty-docs/l/de/user-guide/permissions-access/overview.mdx b/packages/twenty-docs/l/de/user-guide/permissions-access/overview.mdx index d030b283da..8dd57d7406 100644 --- a/packages/twenty-docs/l/de/user-guide/permissions-access/overview.mdx +++ b/packages/twenty-docs/l/de/user-guide/permissions-access/overview.mdx @@ -3,9 +3,6 @@ title: Berechtigungen & Zugriff description: Verwalten Sie Rollen, Berechtigungen und die Zugriffskontrolle in Ihrem Arbeitsbereich. --- - - Berechtigungen & Zugriff - Das Berechtigungssystem von Twenty ermöglicht es Ihnen, zu steuern, wer in Ihrem Arbeitsbereich auf Daten zugreifen und diese ändern darf. Erstellen Sie Rollen, weisen Sie Berechtigungen zu und konfigurieren Sie SSO für sicheren Zugriff. diff --git a/packages/twenty-docs/l/de/user-guide/settings/how-tos/settings-faq.mdx b/packages/twenty-docs/l/de/user-guide/settings/how-tos/settings-faq.mdx index 19cc7387b3..1db8c85094 100644 --- a/packages/twenty-docs/l/de/user-guide/settings/how-tos/settings-faq.mdx +++ b/packages/twenty-docs/l/de/user-guide/settings/how-tos/settings-faq.mdx @@ -1,7 +1,6 @@ --- title: Einstellungen FAQ description: Häufig gestellte Fragen zu den Twenty-Einstellungen. -image: /images/user-guide/setup/settings.png --- ## Arbeitsbereichseinstellungen diff --git a/packages/twenty-docs/l/de/user-guide/settings/overview.mdx b/packages/twenty-docs/l/de/user-guide/settings/overview.mdx index 60ae9d354f..050de24bb9 100644 --- a/packages/twenty-docs/l/de/user-guide/settings/overview.mdx +++ b/packages/twenty-docs/l/de/user-guide/settings/overview.mdx @@ -1,12 +1,8 @@ --- title: Einstellungen description: Richten Sie Ihren Twenty-Arbeitsbereich mit wesentlichen Einstellungen ein. -image: /images/user-guide/setup/settings.png --- - - Einstellungen - ## Ersteinrichtung diff --git a/packages/twenty-docs/l/de/user-guide/views-pipelines/capabilities/kanban-views.mdx b/packages/twenty-docs/l/de/user-guide/views-pipelines/capabilities/kanban-views.mdx index 4a4b2feff6..59c2c9d7be 100644 --- a/packages/twenty-docs/l/de/user-guide/views-pipelines/capabilities/kanban-views.mdx +++ b/packages/twenty-docs/l/de/user-guide/views-pipelines/capabilities/kanban-views.mdx @@ -1,7 +1,6 @@ --- title: Kanban-Board-Ansichten description: Erfahren Sie, wie Sie Kanban-Ansichten nutzen, um Ihre Workflows zu visualisieren und zu verwalten. -image: /images/user-guide/kanban-views/kanban.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; diff --git a/packages/twenty-docs/l/de/user-guide/views-pipelines/overview.mdx b/packages/twenty-docs/l/de/user-guide/views-pipelines/overview.mdx index f00248e3bd..9406c7902f 100644 --- a/packages/twenty-docs/l/de/user-guide/views-pipelines/overview.mdx +++ b/packages/twenty-docs/l/de/user-guide/views-pipelines/overview.mdx @@ -1,14 +1,10 @@ --- title: Ansichten & Pipelines description: Erfahren Sie, wie Sie in Twenty Ansichten erstellen und verwalten. -image: /images/user-guide/table-views/table.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - Ansichten & Pipelines - ## Ansichten verstehen diff --git a/packages/twenty-docs/l/de/user-guide/workflows/capabilities/send-emails-from-workflows.mdx b/packages/twenty-docs/l/de/user-guide/workflows/capabilities/send-emails-from-workflows.mdx index 0e83c4b1d9..1392651530 100644 --- a/packages/twenty-docs/l/de/user-guide/workflows/capabilities/send-emails-from-workflows.mdx +++ b/packages/twenty-docs/l/de/user-guide/workflows/capabilities/send-emails-from-workflows.mdx @@ -1,7 +1,6 @@ --- title: E-Mails über Workflows senden description: Senden Sie personalisierte E-Mails automatisch mit Workflow-Aktionen. -image: /images/user-guide/workflows/workflow.png --- Senden Sie automatisch E-Mails, wenn bestimmte Ereignisse in Ihrem CRM auftreten—heißen Sie neue Kontakte willkommen, führen Sie Nachfassaktionen bei Verkaufschancen durch oder benachrichtigen Sie Teammitglieder. diff --git a/packages/twenty-docs/l/de/user-guide/workflows/capabilities/use-iterator.mdx b/packages/twenty-docs/l/de/user-guide/workflows/capabilities/use-iterator.mdx index 81df694863..478e1c749b 100644 --- a/packages/twenty-docs/l/de/user-guide/workflows/capabilities/use-iterator.mdx +++ b/packages/twenty-docs/l/de/user-guide/workflows/capabilities/use-iterator.mdx @@ -1,7 +1,6 @@ --- title: Iterator verwenden description: Durchlaufen Sie Arrays von Datensätzen, um Aktionen für jedes Element auszuführen. -image: /images/user-guide/workflows/workflow.png --- Mit Iterator können Sie ein Array von Datensätzen durchlaufen und für jeden Datensatz Aktionen ausführen. Es ist unverzichtbar für Workflows, die mehrere Datensätze verarbeiten müssen, die von der Aktion „Datensätze suchen“ zurückgegeben oder über Webhooks empfangen werden. diff --git a/packages/twenty-docs/l/de/user-guide/workflows/capabilities/workflow-runs.mdx b/packages/twenty-docs/l/de/user-guide/workflows/capabilities/workflow-runs.mdx index 2feeacd721..23acc6d86d 100644 --- a/packages/twenty-docs/l/de/user-guide/workflows/capabilities/workflow-runs.mdx +++ b/packages/twenty-docs/l/de/user-guide/workflows/capabilities/workflow-runs.mdx @@ -1,7 +1,6 @@ --- title: Workflow-Läufe description: Workflow-Ausführungen überwachen und verwalten. -image: /images/user-guide/workflows/workflow.png --- ## Über Läufe diff --git a/packages/twenty-docs/l/de/user-guide/workflows/capabilities/workflow-versions.mdx b/packages/twenty-docs/l/de/user-guide/workflows/capabilities/workflow-versions.mdx index a4f0f56ced..b0e59eac14 100644 --- a/packages/twenty-docs/l/de/user-guide/workflows/capabilities/workflow-versions.mdx +++ b/packages/twenty-docs/l/de/user-guide/workflows/capabilities/workflow-versions.mdx @@ -1,7 +1,6 @@ --- title: Workflow-Versionen description: Workflow-Versionen und -Entwürfe verwalten. -image: /images/user-guide/workflows/workflow.png --- ## Über Versionen diff --git a/packages/twenty-docs/l/de/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx b/packages/twenty-docs/l/de/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx index 0919688bce..70679eae5d 100644 --- a/packages/twenty-docs/l/de/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx +++ b/packages/twenty-docs/l/de/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx @@ -1,7 +1,6 @@ --- title: Webhook-Trigger einrichten description: Empfangen Sie Daten von externen Diensten, um Workflows auszulösen. -image: /images/user-guide/workflows/workflow.png --- Webhook-Trigger ermöglichen es externen Diensten, Ihre Workflows zu starten, indem sie Daten an eine eindeutige URL senden. Verwenden Sie sie, um Formulare, Drittanbieter-Apps und benutzerdefinierte Integrationen zu verbinden. diff --git a/packages/twenty-docs/l/de/user-guide/workflows/overview.mdx b/packages/twenty-docs/l/de/user-guide/workflows/overview.mdx index b5ff8f394f..832ada91a9 100644 --- a/packages/twenty-docs/l/de/user-guide/workflows/overview.mdx +++ b/packages/twenty-docs/l/de/user-guide/workflows/overview.mdx @@ -1,12 +1,8 @@ --- title: Workflows description: Erfahren Sie, wie Sie Automatisierungen in Twenty erstellen. -image: /images/user-guide/workflows/workflow.png --- - - Workflows - ## Warum Workflows wichtig sind diff --git a/packages/twenty-docs/l/es/twenty-ui/display/app-tooltip.mdx b/packages/twenty-docs/l/es/twenty-ui/display/app-tooltip.mdx index ced09dc767..6d56450f2a 100644 --- a/packages/twenty-docs/l/es/twenty-ui/display/app-tooltip.mdx +++ b/packages/twenty-docs/l/es/twenty-ui/display/app-tooltip.mdx @@ -1,6 +1,5 @@ --- title: Consejo de la aplicación -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/es/twenty-ui/display/checkmark.mdx b/packages/twenty-docs/l/es/twenty-ui/display/checkmark.mdx index 7726dabf92..6962251312 100644 --- a/packages/twenty-docs/l/es/twenty-ui/display/checkmark.mdx +++ b/packages/twenty-docs/l/es/twenty-ui/display/checkmark.mdx @@ -1,6 +1,5 @@ --- title: Marca de verificación -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/es/twenty-ui/display/chip.mdx b/packages/twenty-docs/l/es/twenty-ui/display/chip.mdx index 81da2d7549..5406401e61 100644 --- a/packages/twenty-docs/l/es/twenty-ui/display/chip.mdx +++ b/packages/twenty-docs/l/es/twenty-ui/display/chip.mdx @@ -1,6 +1,5 @@ --- title: Chip -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/es/twenty-ui/display/icons.mdx b/packages/twenty-docs/l/es/twenty-ui/display/icons.mdx index 9e7646d32e..00bcdc8db2 100644 --- a/packages/twenty-docs/l/es/twenty-ui/display/icons.mdx +++ b/packages/twenty-docs/l/es/twenty-ui/display/icons.mdx @@ -1,6 +1,5 @@ --- title: Iconos -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/es/twenty-ui/display/soon-pill.mdx b/packages/twenty-docs/l/es/twenty-ui/display/soon-pill.mdx index 8506f3f486..bb5a4e9045 100644 --- a/packages/twenty-docs/l/es/twenty-ui/display/soon-pill.mdx +++ b/packages/twenty-docs/l/es/twenty-ui/display/soon-pill.mdx @@ -1,11 +1,7 @@ --- title: Soon Pill -image: /images/user-guide/kanban-views/kanban.png --- - - Encabezado - Una pequeña insignia o "pastilla" para indicar que algo estará disponible próximamente. diff --git a/packages/twenty-docs/l/es/twenty-ui/display/tag.mdx b/packages/twenty-docs/l/es/twenty-ui/display/tag.mdx index 421e926bf9..e368b3873c 100644 --- a/packages/twenty-docs/l/es/twenty-ui/display/tag.mdx +++ b/packages/twenty-docs/l/es/twenty-ui/display/tag.mdx @@ -1,11 +1,7 @@ --- title: Etiqueta -image: /images/user-guide/table-views/table.png --- - - Encabezado - Componente para categorizar o etiquetar contenido visualmente. diff --git a/packages/twenty-docs/l/es/twenty-ui/input.mdx b/packages/twenty-docs/l/es/twenty-ui/input.mdx index a2550d107a..382207ba89 100644 --- a/packages/twenty-docs/l/es/twenty-ui/input.mdx +++ b/packages/twenty-docs/l/es/twenty-ui/input.mdx @@ -1,6 +1,5 @@ --- title: Entrada -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/es/twenty-ui/input/block-editor.mdx b/packages/twenty-docs/l/es/twenty-ui/input/block-editor.mdx index 2934ad9fac..6066d72fa8 100644 --- a/packages/twenty-docs/l/es/twenty-ui/input/block-editor.mdx +++ b/packages/twenty-docs/l/es/twenty-ui/input/block-editor.mdx @@ -1,6 +1,5 @@ --- title: Editor de Bloques -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/es/twenty-ui/input/buttons.mdx b/packages/twenty-docs/l/es/twenty-ui/input/buttons.mdx index 426122437d..621845df83 100644 --- a/packages/twenty-docs/l/es/twenty-ui/input/buttons.mdx +++ b/packages/twenty-docs/l/es/twenty-ui/input/buttons.mdx @@ -1,6 +1,5 @@ --- title: Botones -image: /images/user-guide/views/filter.png --- diff --git a/packages/twenty-docs/l/es/twenty-ui/input/checkbox.mdx b/packages/twenty-docs/l/es/twenty-ui/input/checkbox.mdx index 5a0ffd8064..331db4148a 100644 --- a/packages/twenty-docs/l/es/twenty-ui/input/checkbox.mdx +++ b/packages/twenty-docs/l/es/twenty-ui/input/checkbox.mdx @@ -1,6 +1,5 @@ --- title: Caja de selección -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/es/twenty-ui/input/color-scheme.mdx b/packages/twenty-docs/l/es/twenty-ui/input/color-scheme.mdx index 2fc8f859ce..2a263ec44b 100644 --- a/packages/twenty-docs/l/es/twenty-ui/input/color-scheme.mdx +++ b/packages/twenty-docs/l/es/twenty-ui/input/color-scheme.mdx @@ -1,6 +1,5 @@ --- title: Esquema de colores -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/es/twenty-ui/input/icon-picker.mdx b/packages/twenty-docs/l/es/twenty-ui/input/icon-picker.mdx index 05bb724c81..091bdbddc9 100644 --- a/packages/twenty-docs/l/es/twenty-ui/input/icon-picker.mdx +++ b/packages/twenty-docs/l/es/twenty-ui/input/icon-picker.mdx @@ -1,6 +1,5 @@ --- title: Selector de Íconos -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/es/twenty-ui/input/image-input.mdx b/packages/twenty-docs/l/es/twenty-ui/input/image-input.mdx index c06de9c4a0..33c080f3a1 100644 --- a/packages/twenty-docs/l/es/twenty-ui/input/image-input.mdx +++ b/packages/twenty-docs/l/es/twenty-ui/input/image-input.mdx @@ -1,6 +1,5 @@ --- title: Entrada de imagen -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/es/twenty-ui/input/radio.mdx b/packages/twenty-docs/l/es/twenty-ui/input/radio.mdx index b9b6a0d601..f509b445d4 100644 --- a/packages/twenty-docs/l/es/twenty-ui/input/radio.mdx +++ b/packages/twenty-docs/l/es/twenty-ui/input/radio.mdx @@ -1,6 +1,5 @@ --- title: Radio -image: /images/user-guide/create-workspace/workspace-cover.png --- diff --git a/packages/twenty-docs/l/es/twenty-ui/input/select.mdx b/packages/twenty-docs/l/es/twenty-ui/input/select.mdx index b3181c2e59..f40f6fecd1 100644 --- a/packages/twenty-docs/l/es/twenty-ui/input/select.mdx +++ b/packages/twenty-docs/l/es/twenty-ui/input/select.mdx @@ -1,6 +1,5 @@ --- title: Seleccionar -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/es/twenty-ui/input/toggle.mdx b/packages/twenty-docs/l/es/twenty-ui/input/toggle.mdx index b1c758d9dd..15c655b70b 100644 --- a/packages/twenty-docs/l/es/twenty-ui/input/toggle.mdx +++ b/packages/twenty-docs/l/es/twenty-ui/input/toggle.mdx @@ -1,11 +1,7 @@ --- title: Cambiar -image: /images/user-guide/table-views/table.png --- - - Encabezado - diff --git a/packages/twenty-docs/l/es/twenty-ui/navigation.mdx b/packages/twenty-docs/l/es/twenty-ui/navigation.mdx index d604ffba0c..c824dc70f4 100644 --- a/packages/twenty-docs/l/es/twenty-ui/navigation.mdx +++ b/packages/twenty-docs/l/es/twenty-ui/navigation.mdx @@ -1,6 +1,5 @@ --- title: Navegación -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/es/twenty-ui/navigation/breadcrumb.mdx b/packages/twenty-docs/l/es/twenty-ui/navigation/breadcrumb.mdx index 3acc062ec7..beb834686d 100644 --- a/packages/twenty-docs/l/es/twenty-ui/navigation/breadcrumb.mdx +++ b/packages/twenty-docs/l/es/twenty-ui/navigation/breadcrumb.mdx @@ -1,6 +1,5 @@ --- title: Migaja de pan -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/es/twenty-ui/navigation/links.mdx b/packages/twenty-docs/l/es/twenty-ui/navigation/links.mdx index 5a955ca4d4..8ca4c1bac4 100644 --- a/packages/twenty-docs/l/es/twenty-ui/navigation/links.mdx +++ b/packages/twenty-docs/l/es/twenty-ui/navigation/links.mdx @@ -1,6 +1,5 @@ --- title: Enlaces -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/es/twenty-ui/navigation/menu-item.mdx b/packages/twenty-docs/l/es/twenty-ui/navigation/menu-item.mdx index 54c9bd1e4d..52c9850151 100644 --- a/packages/twenty-docs/l/es/twenty-ui/navigation/menu-item.mdx +++ b/packages/twenty-docs/l/es/twenty-ui/navigation/menu-item.mdx @@ -1,11 +1,7 @@ --- title: Elemento del menú -image: /images/user-guide/kanban-views/kanban.png --- - - Encabezado - Un elemento de menú versátil diseñado para ser utilizado en un menú o lista de navegación. diff --git a/packages/twenty-docs/l/es/twenty-ui/navigation/navigation-bar.mdx b/packages/twenty-docs/l/es/twenty-ui/navigation/navigation-bar.mdx index 87d69bcbdf..88fe6c3ca7 100644 --- a/packages/twenty-docs/l/es/twenty-ui/navigation/navigation-bar.mdx +++ b/packages/twenty-docs/l/es/twenty-ui/navigation/navigation-bar.mdx @@ -1,11 +1,7 @@ --- title: Barra de navegación -image: /images/user-guide/table-views/table.png --- - - Encabezado - Renderiza una barra de navegación que contiene varios componentes `NavigationBarItem`. diff --git a/packages/twenty-docs/l/es/twenty-ui/navigation/step-bar.mdx b/packages/twenty-docs/l/es/twenty-ui/navigation/step-bar.mdx index e176560e55..4c8e96846d 100644 --- a/packages/twenty-docs/l/es/twenty-ui/navigation/step-bar.mdx +++ b/packages/twenty-docs/l/es/twenty-ui/navigation/step-bar.mdx @@ -1,6 +1,5 @@ --- title: Barra de Paso -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/es/twenty-ui/progress-bar.mdx b/packages/twenty-docs/l/es/twenty-ui/progress-bar.mdx index 87c450d275..f115e00595 100644 --- a/packages/twenty-docs/l/es/twenty-ui/progress-bar.mdx +++ b/packages/twenty-docs/l/es/twenty-ui/progress-bar.mdx @@ -1,11 +1,7 @@ --- title: Retroalimentación -image: /images/user-guide/emails/emails_header.png --- - - Encabezado - Indica el progreso o la cuenta regresiva y se mueve de derecha a izquierda. diff --git a/packages/twenty-docs/l/es/user-guide/billing/overview.mdx b/packages/twenty-docs/l/es/user-guide/billing/overview.mdx index 19320c8111..67c812d7aa 100644 --- a/packages/twenty-docs/l/es/user-guide/billing/overview.mdx +++ b/packages/twenty-docs/l/es/user-guide/billing/overview.mdx @@ -1,12 +1,8 @@ --- title: Facturación description: Comprende los precios de Twenty y gestiona tu suscripción. -image: /images/user-guide/setup/pricing.png --- - - Facturación - Twenty ofrece planes de precios flexibles para adaptarse a las necesidades de tu equipo. Gestiona tu suscripción, supervisa los créditos de flujos de trabajo y accede a las facturas, todo desde **Settings → Billing**. diff --git a/packages/twenty-docs/l/es/user-guide/calendar-emails/overview.mdx b/packages/twenty-docs/l/es/user-guide/calendar-emails/overview.mdx index a9ce1915c6..d23bb66f10 100644 --- a/packages/twenty-docs/l/es/user-guide/calendar-emails/overview.mdx +++ b/packages/twenty-docs/l/es/user-guide/calendar-emails/overview.mdx @@ -1,12 +1,8 @@ --- title: Calendario y correos electrónicos description: Conecta tus cuentas de correo electrónico y calendario a Twenty. -image: /images/user-guide/emails/emails_header.png --- - - Calendario y correos electrónicos - ## Opciones de conexión diff --git a/packages/twenty-docs/l/es/user-guide/dashboards/overview.mdx b/packages/twenty-docs/l/es/user-guide/dashboards/overview.mdx index 5497e282b6..a5247bfd93 100644 --- a/packages/twenty-docs/l/es/user-guide/dashboards/overview.mdx +++ b/packages/twenty-docs/l/es/user-guide/dashboards/overview.mdx @@ -1,12 +1,8 @@ --- title: Tableros description: Aprende los conceptos básicos de los informes y los paneles en Twenty. -image: /images/user-guide/reporting/pie-chart.png --- - - Tableros - Los paneles están actualmente en versión beta. Actívelos en **Configuración → Actualizaciones → Acceso anticipado**. diff --git a/packages/twenty-docs/l/es/user-guide/data-migration/overview.mdx b/packages/twenty-docs/l/es/user-guide/data-migration/overview.mdx index 2500fd7da2..0ae65a741e 100644 --- a/packages/twenty-docs/l/es/user-guide/data-migration/overview.mdx +++ b/packages/twenty-docs/l/es/user-guide/data-migration/overview.mdx @@ -1,14 +1,10 @@ --- title: Migración de datos description: Importe y exporte sus datos de CRM mediante archivos CSV o la API. -image: /images/user-guide/import-export-data/cloud.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - Migración de datos - ## Métodos de importación diff --git a/packages/twenty-docs/l/es/user-guide/data-model/overview.mdx b/packages/twenty-docs/l/es/user-guide/data-model/overview.mdx index 99532b1027..ebb3257a5a 100644 --- a/packages/twenty-docs/l/es/user-guide/data-model/overview.mdx +++ b/packages/twenty-docs/l/es/user-guide/data-model/overview.mdx @@ -1,12 +1,8 @@ --- title: Modelo de datos description: Aprende qué es un modelo de datos y cómo diseñar uno que se adapte a tu empresa. -image: /images/user-guide/fields/custom_data_model.png --- - - Modelo de datos - ## ¿Qué es un modelo de datos? diff --git a/packages/twenty-docs/l/es/user-guide/introduction.mdx b/packages/twenty-docs/l/es/user-guide/introduction.mdx index 5b5dbf33b8..04ae84b3b9 100644 --- a/packages/twenty-docs/l/es/user-guide/introduction.mdx +++ b/packages/twenty-docs/l/es/user-guide/introduction.mdx @@ -11,52 +11,52 @@ import { CardTitle } from "/snippets/card-title.mdx" Aprende qué es Twenty y cómo puede ayudar a tu empresa. - + Modelo de datos Personaliza tu modelo de datos para adaptarlo a tus procesos empresariales. - + Migración de datos Importa y exporta tus datos mediante CSV o API. - + Calendario y correos electrónicos Centraliza las reuniones y los correos electrónicos de tu equipo. - + Flujos de trabajo Automatiza procesos e intégrate con herramientas externas. - + IA Potencia a tu equipo con agentes de IA. - + Vistas y canalizaciones Organiza tus datos con vistas y canalizaciones operativas. - + Tableros Información en tiempo real para seguir el rendimiento. - + Permisos y acceso Gestiona los roles y el acceso a Twenty. - + Facturación Comprende cómo funcionan los precios y la facturación de Twenty. - + Configuración Configura las preferencias de tu espacio de trabajo. diff --git a/packages/twenty-docs/l/es/user-guide/permissions-access/capabilities/permissions.mdx b/packages/twenty-docs/l/es/user-guide/permissions-access/capabilities/permissions.mdx index 8b99aac3bf..b435886aa1 100644 --- a/packages/twenty-docs/l/es/user-guide/permissions-access/capabilities/permissions.mdx +++ b/packages/twenty-docs/l/es/user-guide/permissions-access/capabilities/permissions.mdx @@ -1,7 +1,6 @@ --- title: Permisos description: Controla el acceso a objetos, campos y ajustes con permisos basados en roles. -image: /images/user-guide/permissions/permissions.png --- El sistema de permisos de Twenty te permite controlar el acceso a tres áreas principales: diff --git a/packages/twenty-docs/l/es/user-guide/permissions-access/overview.mdx b/packages/twenty-docs/l/es/user-guide/permissions-access/overview.mdx index 07ff71b19f..c6c9648a5a 100644 --- a/packages/twenty-docs/l/es/user-guide/permissions-access/overview.mdx +++ b/packages/twenty-docs/l/es/user-guide/permissions-access/overview.mdx @@ -3,9 +3,6 @@ title: Permisos y acceso description: Administra roles, permisos y el control de acceso en tu espacio de trabajo. --- - - Permisos y acceso - El sistema de permisos de Twenty te permite controlar quién puede acceder y modificar los datos en tu espacio de trabajo. Crea roles, asigna permisos y configura SSO para un acceso seguro. diff --git a/packages/twenty-docs/l/es/user-guide/settings/how-tos/settings-faq.mdx b/packages/twenty-docs/l/es/user-guide/settings/how-tos/settings-faq.mdx index c724e7658c..a9b0dd99d5 100644 --- a/packages/twenty-docs/l/es/user-guide/settings/how-tos/settings-faq.mdx +++ b/packages/twenty-docs/l/es/user-guide/settings/how-tos/settings-faq.mdx @@ -1,7 +1,6 @@ --- title: Preguntas frecuentes sobre configuración description: Preguntas frecuentes sobre los ajustes de Twenty. -image: /images/user-guide/setup/settings.png --- ## Configuración del Espacio de Trabajo diff --git a/packages/twenty-docs/l/es/user-guide/settings/overview.mdx b/packages/twenty-docs/l/es/user-guide/settings/overview.mdx index b0b06b8ce2..e53e37ede4 100644 --- a/packages/twenty-docs/l/es/user-guide/settings/overview.mdx +++ b/packages/twenty-docs/l/es/user-guide/settings/overview.mdx @@ -1,12 +1,8 @@ --- title: Configuración description: Configura tu espacio de trabajo de Twenty con ajustes esenciales. -image: /images/user-guide/setup/settings.png --- - - Configuración - ## Configuración inicial diff --git a/packages/twenty-docs/l/es/user-guide/views-pipelines/capabilities/kanban-views.mdx b/packages/twenty-docs/l/es/user-guide/views-pipelines/capabilities/kanban-views.mdx index 429cfa19fb..55aa0bee4c 100644 --- a/packages/twenty-docs/l/es/user-guide/views-pipelines/capabilities/kanban-views.mdx +++ b/packages/twenty-docs/l/es/user-guide/views-pipelines/capabilities/kanban-views.mdx @@ -1,7 +1,6 @@ --- title: Vistas del tablero Kanban description: Aprende a usar las vistas Kanban para visualizar y gestionar tus flujos de trabajo. -image: /images/user-guide/kanban-views/kanban.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; diff --git a/packages/twenty-docs/l/es/user-guide/views-pipelines/overview.mdx b/packages/twenty-docs/l/es/user-guide/views-pipelines/overview.mdx index 6bd2218717..0b2be25e9d 100644 --- a/packages/twenty-docs/l/es/user-guide/views-pipelines/overview.mdx +++ b/packages/twenty-docs/l/es/user-guide/views-pipelines/overview.mdx @@ -1,14 +1,10 @@ --- title: Vistas y embudos description: Aprende a crear y gestionar vistas en Twenty. -image: /images/user-guide/table-views/table.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - Vistas y embudos - ## Comprender las vistas diff --git a/packages/twenty-docs/l/es/user-guide/workflows/capabilities/send-emails-from-workflows.mdx b/packages/twenty-docs/l/es/user-guide/workflows/capabilities/send-emails-from-workflows.mdx index 031db4180e..b125274291 100644 --- a/packages/twenty-docs/l/es/user-guide/workflows/capabilities/send-emails-from-workflows.mdx +++ b/packages/twenty-docs/l/es/user-guide/workflows/capabilities/send-emails-from-workflows.mdx @@ -1,7 +1,6 @@ --- title: Enviar correos electrónicos desde flujos de trabajo description: Envía correos electrónicos personalizados automáticamente utilizando acciones de flujos de trabajo. -image: /images/user-guide/workflows/workflow.png --- Envía correos electrónicos automáticamente cuando se produzcan eventos específicos en tu CRM—da la bienvenida a nuevos contactos, haz seguimiento de oportunidades o notifica a los miembros del equipo. diff --git a/packages/twenty-docs/l/es/user-guide/workflows/capabilities/use-iterator.mdx b/packages/twenty-docs/l/es/user-guide/workflows/capabilities/use-iterator.mdx index 9099baf16c..9b122d9e6a 100644 --- a/packages/twenty-docs/l/es/user-guide/workflows/capabilities/use-iterator.mdx +++ b/packages/twenty-docs/l/es/user-guide/workflows/capabilities/use-iterator.mdx @@ -1,7 +1,6 @@ --- title: Usar Iterador description: Recorre arrays de registros para realizar acciones en cada elemento. -image: /images/user-guide/workflows/workflow.png --- El iterador te permite recorrer un array de registros y realizar acciones en cada uno. Es esencial para los flujos de trabajo que necesitan procesar varios registros devueltos por Search Records o recibidos mediante webhooks. diff --git a/packages/twenty-docs/l/es/user-guide/workflows/capabilities/workflow-runs.mdx b/packages/twenty-docs/l/es/user-guide/workflows/capabilities/workflow-runs.mdx index d5b4da6e22..25b6c24478 100644 --- a/packages/twenty-docs/l/es/user-guide/workflows/capabilities/workflow-runs.mdx +++ b/packages/twenty-docs/l/es/user-guide/workflows/capabilities/workflow-runs.mdx @@ -1,7 +1,6 @@ --- title: Ejecuciones de flujos de trabajo description: Supervise y gestione las ejecuciones de flujos de trabajo. -image: /images/user-guide/workflows/workflow.png --- ## Acerca de las ejecuciones diff --git a/packages/twenty-docs/l/es/user-guide/workflows/capabilities/workflow-versions.mdx b/packages/twenty-docs/l/es/user-guide/workflows/capabilities/workflow-versions.mdx index bd93029571..b38d0ea016 100644 --- a/packages/twenty-docs/l/es/user-guide/workflows/capabilities/workflow-versions.mdx +++ b/packages/twenty-docs/l/es/user-guide/workflows/capabilities/workflow-versions.mdx @@ -1,7 +1,6 @@ --- title: Versiones del flujo de trabajo description: Gestiona versiones y borradores de flujos de trabajo. -image: /images/user-guide/workflows/workflow.png --- ## Acerca de las versiones diff --git a/packages/twenty-docs/l/es/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx b/packages/twenty-docs/l/es/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx index a46f40ed68..ba88d7f13b 100644 --- a/packages/twenty-docs/l/es/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx +++ b/packages/twenty-docs/l/es/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx @@ -1,7 +1,6 @@ --- title: Configurar un disparador de webhook description: Recibe datos de servicios externos para activar flujos de trabajo. -image: /images/user-guide/workflows/workflow.png --- Los disparadores de webhook permiten que servicios externos inicien tus flujos de trabajo enviando datos a una URL única. Úsalos para conectar formularios, aplicaciones de terceros e integraciones personalizadas. diff --git a/packages/twenty-docs/l/es/user-guide/workflows/overview.mdx b/packages/twenty-docs/l/es/user-guide/workflows/overview.mdx index 1c5ca85adc..7f19564e46 100644 --- a/packages/twenty-docs/l/es/user-guide/workflows/overview.mdx +++ b/packages/twenty-docs/l/es/user-guide/workflows/overview.mdx @@ -1,12 +1,8 @@ --- title: Flujos de trabajo description: Aprende a crear automatizaciones en Twenty. -image: /images/user-guide/workflows/workflow.png --- - - Flujos de trabajo - ## Por qué los flujos de trabajo son importantes diff --git a/packages/twenty-docs/l/fr/twenty-ui/display/app-tooltip.mdx b/packages/twenty-docs/l/fr/twenty-ui/display/app-tooltip.mdx index 57bb637d85..475481f3f1 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/display/app-tooltip.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/display/app-tooltip.mdx @@ -1,6 +1,5 @@ --- title: Info-bulle de l'application -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/fr/twenty-ui/display/checkmark.mdx b/packages/twenty-docs/l/fr/twenty-ui/display/checkmark.mdx index 1424f08776..7717880ae9 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/display/checkmark.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/display/checkmark.mdx @@ -1,6 +1,5 @@ --- title: Coche -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/fr/twenty-ui/display/chip.mdx b/packages/twenty-docs/l/fr/twenty-ui/display/chip.mdx index 8c2c233c05..b93ae042dd 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/display/chip.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/display/chip.mdx @@ -1,6 +1,5 @@ --- title: Puce -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/fr/twenty-ui/display/icons.mdx b/packages/twenty-docs/l/fr/twenty-ui/display/icons.mdx index f014ed7b26..01ec7ce745 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/display/icons.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/display/icons.mdx @@ -1,6 +1,5 @@ --- title: Icônes -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/fr/twenty-ui/display/soon-pill.mdx b/packages/twenty-docs/l/fr/twenty-ui/display/soon-pill.mdx index 63fb6250f0..2dab33ff9a 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/display/soon-pill.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/display/soon-pill.mdx @@ -1,11 +1,7 @@ --- title: Pastille Bientôt -image: /images/user-guide/kanban-views/kanban.png --- - - En-tête - Un petit badge ou "pilule" pour indiquer que quelque chose arrive bientôt. diff --git a/packages/twenty-docs/l/fr/twenty-ui/display/tag.mdx b/packages/twenty-docs/l/fr/twenty-ui/display/tag.mdx index 4b284e36b8..c2bceb135d 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/display/tag.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/display/tag.mdx @@ -1,11 +1,7 @@ --- title: Étiquette -image: /images/user-guide/table-views/table.png --- - - En-tête - Composant permettant de catégoriser ou d'étiqueter visuellement le contenu. diff --git a/packages/twenty-docs/l/fr/twenty-ui/input.mdx b/packages/twenty-docs/l/fr/twenty-ui/input.mdx index 9c298b3927..e0163c98c2 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/input.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/input.mdx @@ -1,6 +1,5 @@ --- title: "Entrée " -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/fr/twenty-ui/input/block-editor.mdx b/packages/twenty-docs/l/fr/twenty-ui/input/block-editor.mdx index 275a577f06..eef7860fe0 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/input/block-editor.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/input/block-editor.mdx @@ -1,6 +1,5 @@ --- title: Éditeur de Blocs -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/fr/twenty-ui/input/buttons.mdx b/packages/twenty-docs/l/fr/twenty-ui/input/buttons.mdx index d28736efd7..cd664261f7 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/input/buttons.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/input/buttons.mdx @@ -1,6 +1,5 @@ --- title: Boutons -image: /images/user-guide/views/filter.png --- diff --git a/packages/twenty-docs/l/fr/twenty-ui/input/checkbox.mdx b/packages/twenty-docs/l/fr/twenty-ui/input/checkbox.mdx index 6ec61e55f9..366ba46745 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/input/checkbox.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/input/checkbox.mdx @@ -1,6 +1,5 @@ --- title: Case à cocher -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/fr/twenty-ui/input/color-scheme.mdx b/packages/twenty-docs/l/fr/twenty-ui/input/color-scheme.mdx index ff367c519c..8d30004520 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/input/color-scheme.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/input/color-scheme.mdx @@ -1,6 +1,5 @@ --- title: Schéma de couleurs -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/fr/twenty-ui/input/icon-picker.mdx b/packages/twenty-docs/l/fr/twenty-ui/input/icon-picker.mdx index 07d2bde619..e91f0a9caf 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/input/icon-picker.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/input/icon-picker.mdx @@ -1,6 +1,5 @@ --- title: Sélecteur d'icônes -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/fr/twenty-ui/input/image-input.mdx b/packages/twenty-docs/l/fr/twenty-ui/input/image-input.mdx index 0ac0aae033..489af2dff0 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/input/image-input.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/input/image-input.mdx @@ -1,6 +1,5 @@ --- title: Saisie Image -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/fr/twenty-ui/input/radio.mdx b/packages/twenty-docs/l/fr/twenty-ui/input/radio.mdx index ff8d4289a8..855503aad1 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/input/radio.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/input/radio.mdx @@ -1,6 +1,5 @@ --- title: Radio -image: /images/user-guide/create-workspace/workspace-cover.png --- diff --git a/packages/twenty-docs/l/fr/twenty-ui/input/select.mdx b/packages/twenty-docs/l/fr/twenty-ui/input/select.mdx index 5df6245a0d..acb1b9b6a1 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/input/select.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/input/select.mdx @@ -1,6 +1,5 @@ --- title: Sélectionner -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/fr/twenty-ui/input/text.mdx b/packages/twenty-docs/l/fr/twenty-ui/input/text.mdx index 823f626679..94708975f6 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/input/text.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/input/text.mdx @@ -1,6 +1,5 @@ --- title: Texte -image: /images/user-guide/notes/notes_header.png --- diff --git a/packages/twenty-docs/l/fr/twenty-ui/input/toggle.mdx b/packages/twenty-docs/l/fr/twenty-ui/input/toggle.mdx index dcb2e00175..3a1b3f0674 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/input/toggle.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/input/toggle.mdx @@ -1,11 +1,7 @@ --- title: Basculer -image: /images/user-guide/table-views/table.png --- - - En-tête - diff --git a/packages/twenty-docs/l/fr/twenty-ui/navigation.mdx b/packages/twenty-docs/l/fr/twenty-ui/navigation.mdx index f99e2bb5df..c35149192f 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/navigation.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/navigation.mdx @@ -1,6 +1,5 @@ --- title: Navigation -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/fr/twenty-ui/navigation/breadcrumb.mdx b/packages/twenty-docs/l/fr/twenty-ui/navigation/breadcrumb.mdx index 27e296ca0e..ca35fe9b09 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/navigation/breadcrumb.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/navigation/breadcrumb.mdx @@ -1,6 +1,5 @@ --- title: Fil d'Ariane -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/fr/twenty-ui/navigation/links.mdx b/packages/twenty-docs/l/fr/twenty-ui/navigation/links.mdx index d7ed40132f..87f9dee132 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/navigation/links.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/navigation/links.mdx @@ -1,6 +1,5 @@ --- title: Liens -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/fr/twenty-ui/navigation/menu-item.mdx b/packages/twenty-docs/l/fr/twenty-ui/navigation/menu-item.mdx index 5c40a0ddee..03d22f0fee 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/navigation/menu-item.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/navigation/menu-item.mdx @@ -1,11 +1,7 @@ --- title: Élément de menu -image: /images/user-guide/kanban-views/kanban.png --- - - En-tête - Un élément de menu polyvalent conçu pour être utilisé dans un menu ou une liste de navigation. diff --git a/packages/twenty-docs/l/fr/twenty-ui/navigation/navigation-bar.mdx b/packages/twenty-docs/l/fr/twenty-ui/navigation/navigation-bar.mdx index 0a1d355c63..0b20f75b50 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/navigation/navigation-bar.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/navigation/navigation-bar.mdx @@ -1,11 +1,7 @@ --- title: Barre de navigation -image: /images/user-guide/table-views/table.png --- - - En-tête - Rend une barre de navigation qui contient plusieurs composants `NavigationBarItem`. diff --git a/packages/twenty-docs/l/fr/twenty-ui/navigation/step-bar.mdx b/packages/twenty-docs/l/fr/twenty-ui/navigation/step-bar.mdx index 73f068054e..8c91dd08a0 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/navigation/step-bar.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/navigation/step-bar.mdx @@ -1,6 +1,5 @@ --- title: Barre d'étape -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/fr/twenty-ui/progress-bar.mdx b/packages/twenty-docs/l/fr/twenty-ui/progress-bar.mdx index 2f9f866831..eb59fdc867 100644 --- a/packages/twenty-docs/l/fr/twenty-ui/progress-bar.mdx +++ b/packages/twenty-docs/l/fr/twenty-ui/progress-bar.mdx @@ -1,11 +1,7 @@ --- title: Retour d'information -image: /images/user-guide/emails/emails_header.png --- - - En-tête - Indique le progrès ou le compte à rebours et passe de droite à gauche. diff --git a/packages/twenty-docs/l/fr/user-guide/billing/overview.mdx b/packages/twenty-docs/l/fr/user-guide/billing/overview.mdx index 44ef1b0b7a..b42d37d976 100644 --- a/packages/twenty-docs/l/fr/user-guide/billing/overview.mdx +++ b/packages/twenty-docs/l/fr/user-guide/billing/overview.mdx @@ -1,12 +1,8 @@ --- title: Facturation description: Comprenez la tarification de Twenty et gérez votre abonnement. -image: /images/user-guide/setup/pricing.png --- - - Facturation - Twenty propose des formules tarifaires flexibles adaptées aux besoins de votre équipe. Gérez votre abonnement, suivez vos crédits de workflows et accédez à vos factures directement depuis **Paramètres → Facturation**. diff --git a/packages/twenty-docs/l/fr/user-guide/calendar-emails/overview.mdx b/packages/twenty-docs/l/fr/user-guide/calendar-emails/overview.mdx index 8c9a6e2fcb..dfff33ed8b 100644 --- a/packages/twenty-docs/l/fr/user-guide/calendar-emails/overview.mdx +++ b/packages/twenty-docs/l/fr/user-guide/calendar-emails/overview.mdx @@ -1,12 +1,8 @@ --- title: Calendrier et e-mails description: Connectez vos comptes de messagerie et de calendrier à Twenty. -image: /images/user-guide/emails/emails_header.png --- - - Calendrier et e-mails - ## Options de connexion diff --git a/packages/twenty-docs/l/fr/user-guide/dashboards/overview.mdx b/packages/twenty-docs/l/fr/user-guide/dashboards/overview.mdx index ba106b5ce0..605d4f5b08 100644 --- a/packages/twenty-docs/l/fr/user-guide/dashboards/overview.mdx +++ b/packages/twenty-docs/l/fr/user-guide/dashboards/overview.mdx @@ -1,12 +1,8 @@ --- title: Tableaux de bord description: Apprenez les bases des rapports et des tableaux de bord dans Twenty. -image: /images/user-guide/reporting/pie-chart.png --- - - Tableaux de bord - Les tableaux de bord sont actuellement en version bêta. Activez-les sous **Paramètres → Mises à jour → Accès anticipé**. diff --git a/packages/twenty-docs/l/fr/user-guide/data-migration/overview.mdx b/packages/twenty-docs/l/fr/user-guide/data-migration/overview.mdx index 851f8eb428..d84486ebcf 100644 --- a/packages/twenty-docs/l/fr/user-guide/data-migration/overview.mdx +++ b/packages/twenty-docs/l/fr/user-guide/data-migration/overview.mdx @@ -1,14 +1,10 @@ --- title: Migration de données},{ description: Importez et exportez vos données CRM via des fichiers CSV ou l’API. -image: /images/user-guide/import-export-data/cloud.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - Migration de données - ## Méthodes d’import diff --git a/packages/twenty-docs/l/fr/user-guide/data-model/overview.mdx b/packages/twenty-docs/l/fr/user-guide/data-model/overview.mdx index 8d7a3389e6..50545b3bf0 100644 --- a/packages/twenty-docs/l/fr/user-guide/data-model/overview.mdx +++ b/packages/twenty-docs/l/fr/user-guide/data-model/overview.mdx @@ -1,12 +1,8 @@ --- title: Modèle de données description: Découvrez ce qu'est un modèle de données et comment en concevoir un qui correspond à votre entreprise. -image: /images/user-guide/fields/custom_data_model.png --- - - Modèle de données - ## Qu'est-ce qu'un modèle de données ? diff --git a/packages/twenty-docs/l/fr/user-guide/introduction.mdx b/packages/twenty-docs/l/fr/user-guide/introduction.mdx index cdedcf6794..6874125485 100644 --- a/packages/twenty-docs/l/fr/user-guide/introduction.mdx +++ b/packages/twenty-docs/l/fr/user-guide/introduction.mdx @@ -11,52 +11,52 @@ import { CardTitle } from "/snippets/card-title.mdx" Découvrez ce qu'est Twenty et comment il peut aider votre entreprise. - + Modèle de données Personnalisez votre modèle de données pour l'adapter à vos processus métier. - + Migration des données Importez et exportez vos données via CSV ou API. - + Calendrier et e-mails Centralisez les réunions et les e-mails de votre équipe. - + Flux de travail Automatisez les processus et intégrez des outils externes. - + IA Renforcez votre équipe avec des agents IA. - + Vues et pipelines Organisez vos données avec des vues et des pipelines exploitables. - + Tableaux de bord Analyses en temps réel pour suivre les performances. - + Autorisations et accès Gérez les rôles et l'accès à Twenty. - + Facturation Comprenez le fonctionnement de la tarification et de la facturation de Twenty. - + Paramètres Configurez les préférences de votre espace de travail. diff --git a/packages/twenty-docs/l/fr/user-guide/permissions-access/capabilities/permissions.mdx b/packages/twenty-docs/l/fr/user-guide/permissions-access/capabilities/permissions.mdx index 5eaf1d0f96..0e85197765 100644 --- a/packages/twenty-docs/l/fr/user-guide/permissions-access/capabilities/permissions.mdx +++ b/packages/twenty-docs/l/fr/user-guide/permissions-access/capabilities/permissions.mdx @@ -1,7 +1,6 @@ --- title: Permissions description: Contrôlez l'accès aux objets, aux champs et aux paramètres avec des autorisations basées sur les rôles. -image: /images/user-guide/permissions/permissions.png --- Le système d'autorisations de Twenty vous permet de contrôler l'accès à trois domaines principaux : diff --git a/packages/twenty-docs/l/fr/user-guide/permissions-access/overview.mdx b/packages/twenty-docs/l/fr/user-guide/permissions-access/overview.mdx index 313b9de765..01fc5484b3 100644 --- a/packages/twenty-docs/l/fr/user-guide/permissions-access/overview.mdx +++ b/packages/twenty-docs/l/fr/user-guide/permissions-access/overview.mdx @@ -3,9 +3,6 @@ title: Autorisations et accès description: Gérez les rôles, les autorisations et le contrôle d’accès dans votre espace de travail. --- - - Autorisations et accès - Le système d’autorisations de Twenty vous permet de contrôler qui peut accéder aux données de votre espace de travail et les modifier. Créez des rôles, attribuez des autorisations et configurez l’authentification unique (SSO) pour un accès sécurisé. diff --git a/packages/twenty-docs/l/fr/user-guide/settings/how-tos/settings-faq.mdx b/packages/twenty-docs/l/fr/user-guide/settings/how-tos/settings-faq.mdx index 8e67d31029..ced7e6fbdb 100644 --- a/packages/twenty-docs/l/fr/user-guide/settings/how-tos/settings-faq.mdx +++ b/packages/twenty-docs/l/fr/user-guide/settings/how-tos/settings-faq.mdx @@ -1,7 +1,6 @@ --- title: FAQ sur les paramètres description: Foire aux questions sur les paramètres de Twenty. -image: /images/user-guide/setup/settings.png --- ## Paramètres de l'espace de travail diff --git a/packages/twenty-docs/l/fr/user-guide/settings/overview.mdx b/packages/twenty-docs/l/fr/user-guide/settings/overview.mdx index 11443c5db4..a6963b89f2 100644 --- a/packages/twenty-docs/l/fr/user-guide/settings/overview.mdx +++ b/packages/twenty-docs/l/fr/user-guide/settings/overview.mdx @@ -1,12 +1,8 @@ --- title: Paramètres description: Configurez votre espace de travail Twenty avec des paramètres essentiels. -image: /images/user-guide/setup/settings.png --- - - Paramètres - ## Configuration initiale diff --git a/packages/twenty-docs/l/fr/user-guide/views-pipelines/capabilities/kanban-views.mdx b/packages/twenty-docs/l/fr/user-guide/views-pipelines/capabilities/kanban-views.mdx index e164298fa7..f215abe01c 100644 --- a/packages/twenty-docs/l/fr/user-guide/views-pipelines/capabilities/kanban-views.mdx +++ b/packages/twenty-docs/l/fr/user-guide/views-pipelines/capabilities/kanban-views.mdx @@ -1,7 +1,6 @@ --- title: Vues du tableau Kanban description: Apprenez à utiliser les vues Kanban pour visualiser et gérer vos flux de travail. -image: /images/user-guide/kanban-views/kanban.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; diff --git a/packages/twenty-docs/l/fr/user-guide/views-pipelines/overview.mdx b/packages/twenty-docs/l/fr/user-guide/views-pipelines/overview.mdx index b837935b23..a430d6715b 100644 --- a/packages/twenty-docs/l/fr/user-guide/views-pipelines/overview.mdx +++ b/packages/twenty-docs/l/fr/user-guide/views-pipelines/overview.mdx @@ -1,14 +1,10 @@ --- title: Vues et Pipelines description: Découvrez comment créer et gérer des vues dans Twenty. -image: /images/user-guide/table-views/table.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - Vues et Pipelines - ## Comprendre les vues diff --git a/packages/twenty-docs/l/fr/user-guide/workflows/capabilities/send-emails-from-workflows.mdx b/packages/twenty-docs/l/fr/user-guide/workflows/capabilities/send-emails-from-workflows.mdx index cc852e2b1e..8ffe2d0373 100644 --- a/packages/twenty-docs/l/fr/user-guide/workflows/capabilities/send-emails-from-workflows.mdx +++ b/packages/twenty-docs/l/fr/user-guide/workflows/capabilities/send-emails-from-workflows.mdx @@ -1,7 +1,6 @@ --- title: Envoi d'e-mails via les workflows description: Envoyez automatiquement des e-mails personnalisés en utilisant des actions de workflows. -image: /images/user-guide/workflows/workflow.png --- Envoyez automatiquement des e-mails lorsque des événements spécifiques se produisent dans votre CRM—accueillez les nouveaux contacts, assurez le suivi des opportunités ou informez les membres de l'équipe. diff --git a/packages/twenty-docs/l/fr/user-guide/workflows/capabilities/use-iterator.mdx b/packages/twenty-docs/l/fr/user-guide/workflows/capabilities/use-iterator.mdx index e3615f8cc0..76e7801604 100644 --- a/packages/twenty-docs/l/fr/user-guide/workflows/capabilities/use-iterator.mdx +++ b/packages/twenty-docs/l/fr/user-guide/workflows/capabilities/use-iterator.mdx @@ -1,7 +1,6 @@ --- title: Utiliser l'itérateur description: Parcourez des tableaux d'enregistrements pour exécuter des actions sur chaque élément. -image: /images/user-guide/workflows/workflow.png --- L'itérateur vous permet de parcourir un tableau d'enregistrements et d'exécuter des actions sur chacun. Il est essentiel pour les workflows qui doivent traiter plusieurs enregistrements renvoyés par Rechercher des enregistrements ou reçus via des webhooks. diff --git a/packages/twenty-docs/l/fr/user-guide/workflows/capabilities/workflow-runs.mdx b/packages/twenty-docs/l/fr/user-guide/workflows/capabilities/workflow-runs.mdx index f3fed005d8..f6cbb86679 100644 --- a/packages/twenty-docs/l/fr/user-guide/workflows/capabilities/workflow-runs.mdx +++ b/packages/twenty-docs/l/fr/user-guide/workflows/capabilities/workflow-runs.mdx @@ -1,7 +1,6 @@ --- title: Exécutions de workflows description: Surveiller et gérer les exécutions de flux de travail. -image: /images/user-guide/workflows/workflow.png --- ## À propos des Exécutions diff --git a/packages/twenty-docs/l/fr/user-guide/workflows/capabilities/workflow-versions.mdx b/packages/twenty-docs/l/fr/user-guide/workflows/capabilities/workflow-versions.mdx index 3868531027..c35329a98a 100644 --- a/packages/twenty-docs/l/fr/user-guide/workflows/capabilities/workflow-versions.mdx +++ b/packages/twenty-docs/l/fr/user-guide/workflows/capabilities/workflow-versions.mdx @@ -1,7 +1,6 @@ --- title: Versions de Workflow description: Gérer les versions et les brouillons de workflows. -image: /images/user-guide/workflows/workflow.png --- ## À propos des versions diff --git a/packages/twenty-docs/l/fr/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx b/packages/twenty-docs/l/fr/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx index 4443d353db..653db239f6 100644 --- a/packages/twenty-docs/l/fr/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx +++ b/packages/twenty-docs/l/fr/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx @@ -1,7 +1,6 @@ --- title: Configurer un déclencheur de webhook description: Recevez des données de services externes pour déclencher des flux de travail. -image: /images/user-guide/workflows/workflow.png --- Les déclencheurs de webhook permettent à des services externes de démarrer vos flux de travail en envoyant des données vers une URL unique. Utilisez-les pour connecter des formulaires, des applications tierces et des intégrations personnalisées. diff --git a/packages/twenty-docs/l/fr/user-guide/workflows/overview.mdx b/packages/twenty-docs/l/fr/user-guide/workflows/overview.mdx index 1b68315a2c..c176fa038b 100644 --- a/packages/twenty-docs/l/fr/user-guide/workflows/overview.mdx +++ b/packages/twenty-docs/l/fr/user-guide/workflows/overview.mdx @@ -1,12 +1,8 @@ --- title: Flux de travail description: Apprenez à créer des automatisations dans Twenty. -image: /images/user-guide/workflows/workflow.png --- - - Flux de travail - ## Pourquoi les Workflows sont importants diff --git a/packages/twenty-docs/l/it/twenty-ui/display/app-tooltip.mdx b/packages/twenty-docs/l/it/twenty-ui/display/app-tooltip.mdx index 3f84ed15bb..49d341042f 100644 --- a/packages/twenty-docs/l/it/twenty-ui/display/app-tooltip.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/display/app-tooltip.mdx @@ -1,6 +1,5 @@ --- title: Tooltip dell'app -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/it/twenty-ui/display/checkmark.mdx b/packages/twenty-docs/l/it/twenty-ui/display/checkmark.mdx index 9b9105bd6a..c80a6ff941 100644 --- a/packages/twenty-docs/l/it/twenty-ui/display/checkmark.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/display/checkmark.mdx @@ -1,6 +1,5 @@ --- title: Segno di spunta -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/it/twenty-ui/display/chip.mdx b/packages/twenty-docs/l/it/twenty-ui/display/chip.mdx index 6710dfbb13..069b14e5e6 100644 --- a/packages/twenty-docs/l/it/twenty-ui/display/chip.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/display/chip.mdx @@ -1,6 +1,5 @@ --- title: Chip -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/it/twenty-ui/display/icons.mdx b/packages/twenty-docs/l/it/twenty-ui/display/icons.mdx index d39d945af2..4784d5167e 100644 --- a/packages/twenty-docs/l/it/twenty-ui/display/icons.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/display/icons.mdx @@ -1,6 +1,5 @@ --- title: Icone -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/it/twenty-ui/display/soon-pill.mdx b/packages/twenty-docs/l/it/twenty-ui/display/soon-pill.mdx index 9c916ad343..1c952904cd 100644 --- a/packages/twenty-docs/l/it/twenty-ui/display/soon-pill.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/display/soon-pill.mdx @@ -1,11 +1,7 @@ --- title: Soon Pill -image: /images/user-guide/kanban-views/kanban.png --- - - Intestazione - Un piccolo badge o "pill" per indicare che qualcosa è in arrivo a breve. diff --git a/packages/twenty-docs/l/it/twenty-ui/display/tag.mdx b/packages/twenty-docs/l/it/twenty-ui/display/tag.mdx index e6f7083037..251476c1e6 100644 --- a/packages/twenty-docs/l/it/twenty-ui/display/tag.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/display/tag.mdx @@ -1,11 +1,7 @@ --- title: Etichetta -image: /images/user-guide/table-views/table.png --- - - Intestazione - Componente per categorizzare o etichettare visivamente i contenuti. diff --git a/packages/twenty-docs/l/it/twenty-ui/input.mdx b/packages/twenty-docs/l/it/twenty-ui/input.mdx index 1082908085..738ebeecf3 100644 --- a/packages/twenty-docs/l/it/twenty-ui/input.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/input.mdx @@ -1,6 +1,5 @@ --- title: Input -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/it/twenty-ui/input/block-editor.mdx b/packages/twenty-docs/l/it/twenty-ui/input/block-editor.mdx index 1e30a34309..b3ee4ffa75 100644 --- a/packages/twenty-docs/l/it/twenty-ui/input/block-editor.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/input/block-editor.mdx @@ -1,6 +1,5 @@ --- title: Editor di blocchi -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/it/twenty-ui/input/buttons.mdx b/packages/twenty-docs/l/it/twenty-ui/input/buttons.mdx index 5b289c361a..ff8f2c0ab0 100644 --- a/packages/twenty-docs/l/it/twenty-ui/input/buttons.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/input/buttons.mdx @@ -1,6 +1,5 @@ --- title: Pulsanti -image: /images/user-guide/views/filter.png --- diff --git a/packages/twenty-docs/l/it/twenty-ui/input/checkbox.mdx b/packages/twenty-docs/l/it/twenty-ui/input/checkbox.mdx index b851bdf2c3..bc40efaa7c 100644 --- a/packages/twenty-docs/l/it/twenty-ui/input/checkbox.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/input/checkbox.mdx @@ -1,6 +1,5 @@ --- title: Checkbox -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/it/twenty-ui/input/color-scheme.mdx b/packages/twenty-docs/l/it/twenty-ui/input/color-scheme.mdx index dfa3470c73..bcddce5f09 100644 --- a/packages/twenty-docs/l/it/twenty-ui/input/color-scheme.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/input/color-scheme.mdx @@ -1,6 +1,5 @@ --- title: Schema di colori -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/it/twenty-ui/input/icon-picker.mdx b/packages/twenty-docs/l/it/twenty-ui/input/icon-picker.mdx index c7940b6386..55304c3f0a 100644 --- a/packages/twenty-docs/l/it/twenty-ui/input/icon-picker.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/input/icon-picker.mdx @@ -1,6 +1,5 @@ --- title: Selettore di icone -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/it/twenty-ui/input/image-input.mdx b/packages/twenty-docs/l/it/twenty-ui/input/image-input.mdx index 6f72620da8..1775437dd5 100644 --- a/packages/twenty-docs/l/it/twenty-ui/input/image-input.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/input/image-input.mdx @@ -1,6 +1,5 @@ --- title: Input immagine -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/it/twenty-ui/input/radio.mdx b/packages/twenty-docs/l/it/twenty-ui/input/radio.mdx index f2ab172b23..752a83a239 100644 --- a/packages/twenty-docs/l/it/twenty-ui/input/radio.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/input/radio.mdx @@ -1,6 +1,5 @@ --- title: Radio -image: /images/user-guide/create-workspace/workspace-cover.png --- diff --git a/packages/twenty-docs/l/it/twenty-ui/input/select.mdx b/packages/twenty-docs/l/it/twenty-ui/input/select.mdx index d95930b34b..102abf3003 100644 --- a/packages/twenty-docs/l/it/twenty-ui/input/select.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/input/select.mdx @@ -1,6 +1,5 @@ --- title: Seleziona -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/it/twenty-ui/input/text.mdx b/packages/twenty-docs/l/it/twenty-ui/input/text.mdx index b827431abb..5a7902c3a9 100644 --- a/packages/twenty-docs/l/it/twenty-ui/input/text.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/input/text.mdx @@ -1,6 +1,5 @@ --- title: Testo -image: /images/user-guide/notes/notes_header.png --- diff --git a/packages/twenty-docs/l/it/twenty-ui/input/toggle.mdx b/packages/twenty-docs/l/it/twenty-ui/input/toggle.mdx index cb6c0285f2..5cd57d66f6 100644 --- a/packages/twenty-docs/l/it/twenty-ui/input/toggle.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/input/toggle.mdx @@ -1,11 +1,7 @@ --- title: Attiva/Disattiva -image: /images/user-guide/table-views/table.png --- - - Intestazione - diff --git a/packages/twenty-docs/l/it/twenty-ui/navigation.mdx b/packages/twenty-docs/l/it/twenty-ui/navigation.mdx index 4dbaebaa42..dbc2b29954 100644 --- a/packages/twenty-docs/l/it/twenty-ui/navigation.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/navigation.mdx @@ -1,6 +1,5 @@ --- title: Navigazione -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/it/twenty-ui/navigation/breadcrumb.mdx b/packages/twenty-docs/l/it/twenty-ui/navigation/breadcrumb.mdx index 78a7a7df99..7c8190124c 100644 --- a/packages/twenty-docs/l/it/twenty-ui/navigation/breadcrumb.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/navigation/breadcrumb.mdx @@ -1,6 +1,5 @@ --- title: Breadcrumb -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/it/twenty-ui/navigation/links.mdx b/packages/twenty-docs/l/it/twenty-ui/navigation/links.mdx index 804b779fd9..02e8b552cf 100644 --- a/packages/twenty-docs/l/it/twenty-ui/navigation/links.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/navigation/links.mdx @@ -1,6 +1,5 @@ --- title: Collegamenti -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/it/twenty-ui/navigation/menu-item.mdx b/packages/twenty-docs/l/it/twenty-ui/navigation/menu-item.mdx index 7510079fb5..8cf01548b8 100644 --- a/packages/twenty-docs/l/it/twenty-ui/navigation/menu-item.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/navigation/menu-item.mdx @@ -1,11 +1,7 @@ --- title: Voce di menu -image: /images/user-guide/kanban-views/kanban.png --- - - Intestazione - Una voce di menu versatile progettata per essere utilizzata in un menu o in un elenco di navigazione. diff --git a/packages/twenty-docs/l/it/twenty-ui/navigation/navigation-bar.mdx b/packages/twenty-docs/l/it/twenty-ui/navigation/navigation-bar.mdx index 20ad6a6cee..f652e6cbee 100644 --- a/packages/twenty-docs/l/it/twenty-ui/navigation/navigation-bar.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/navigation/navigation-bar.mdx @@ -1,11 +1,7 @@ --- title: Barra di navigazione -image: /images/user-guide/table-views/table.png --- - - Intestazione - Rende una barra di navigazione che contiene più componenti `NavigationBarItem`. diff --git a/packages/twenty-docs/l/it/twenty-ui/navigation/step-bar.mdx b/packages/twenty-docs/l/it/twenty-ui/navigation/step-bar.mdx index fe9196e1d9..a53dd09a0c 100644 --- a/packages/twenty-docs/l/it/twenty-ui/navigation/step-bar.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/navigation/step-bar.mdx @@ -1,6 +1,5 @@ --- title: Barra dei passaggi -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/it/twenty-ui/progress-bar.mdx b/packages/twenty-docs/l/it/twenty-ui/progress-bar.mdx index 39f3050db9..54c985a490 100644 --- a/packages/twenty-docs/l/it/twenty-ui/progress-bar.mdx +++ b/packages/twenty-docs/l/it/twenty-ui/progress-bar.mdx @@ -1,11 +1,7 @@ --- title: Feedback -image: /images/user-guide/emails/emails_header.png --- - - Intestazione - Indica progresso o conto alla rovescia e si muove da destra a sinistra. diff --git a/packages/twenty-docs/l/it/user-guide/billing/overview.mdx b/packages/twenty-docs/l/it/user-guide/billing/overview.mdx index c21529b694..456cc57a60 100644 --- a/packages/twenty-docs/l/it/user-guide/billing/overview.mdx +++ b/packages/twenty-docs/l/it/user-guide/billing/overview.mdx @@ -1,12 +1,8 @@ --- title: Fatturazione description: Comprendi i prezzi di Twenty e gestisci il tuo abbonamento. -image: /images/user-guide/setup/pricing.png --- - - Fatturazione - Twenty offre piani tariffari flessibili per soddisfare le esigenze del tuo team. Gestisci il tuo abbonamento, tieni traccia dei crediti dei flussi di lavoro e accedi alle fatture direttamente da **Impostazioni → Fatturazione**. diff --git a/packages/twenty-docs/l/it/user-guide/calendar-emails/overview.mdx b/packages/twenty-docs/l/it/user-guide/calendar-emails/overview.mdx index 4fb5815d75..e5bfad418a 100644 --- a/packages/twenty-docs/l/it/user-guide/calendar-emails/overview.mdx +++ b/packages/twenty-docs/l/it/user-guide/calendar-emails/overview.mdx @@ -1,12 +1,8 @@ --- title: Calendario & Email description: Collega i tuoi account email e calendario a Twenty. -image: /images/user-guide/emails/emails_header.png --- - - Calendario & Email - ## Opzioni di Connessione diff --git a/packages/twenty-docs/l/it/user-guide/dashboards/overview.mdx b/packages/twenty-docs/l/it/user-guide/dashboards/overview.mdx index 2a8efa6d0f..3f7fb3087e 100644 --- a/packages/twenty-docs/l/it/user-guide/dashboards/overview.mdx +++ b/packages/twenty-docs/l/it/user-guide/dashboards/overview.mdx @@ -1,12 +1,8 @@ --- title: Cruscotti description: Scopri le basi della reportistica e delle dashboard in Twenty. -image: /images/user-guide/reporting/pie-chart.png --- - - Cruscotti - Le dashboard sono attualmente in beta. Attivale in **Impostazioni → Aggiornamenti → Accesso anticipato**. diff --git a/packages/twenty-docs/l/it/user-guide/data-migration/overview.mdx b/packages/twenty-docs/l/it/user-guide/data-migration/overview.mdx index 0b2cd325d7..26ab6479d6 100644 --- a/packages/twenty-docs/l/it/user-guide/data-migration/overview.mdx +++ b/packages/twenty-docs/l/it/user-guide/data-migration/overview.mdx @@ -1,14 +1,10 @@ --- title: Migrazione dei dati description: Importa ed esporta i dati del tuo CRM tramite file CSV o API. -image: /images/user-guide/import-export-data/cloud.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - Migrazione dei dati - ## Metodi di importazione diff --git a/packages/twenty-docs/l/it/user-guide/data-model/overview.mdx b/packages/twenty-docs/l/it/user-guide/data-model/overview.mdx index 1574202828..b6fc8e7c8f 100644 --- a/packages/twenty-docs/l/it/user-guide/data-model/overview.mdx +++ b/packages/twenty-docs/l/it/user-guide/data-model/overview.mdx @@ -1,12 +1,8 @@ --- title: Modello dati description: Scopri cos'è un modello di dati e come progettarne uno che si adatti alla tua azienda. -image: /images/user-guide/fields/custom_data_model.png --- - - Modello dati - ## Cos'è un modello di dati? diff --git a/packages/twenty-docs/l/it/user-guide/introduction.mdx b/packages/twenty-docs/l/it/user-guide/introduction.mdx index 37c661e26f..2ff1a3cde7 100644 --- a/packages/twenty-docs/l/it/user-guide/introduction.mdx +++ b/packages/twenty-docs/l/it/user-guide/introduction.mdx @@ -11,52 +11,52 @@ import { CardTitle } from "/snippets/card-title.mdx" Scopri cos'è Twenty e come può aiutare la tua azienda. - + Modello di dati Personalizza il tuo modello di dati per adattarlo ai tuoi processi aziendali. - + Migrazione dei dati Importa ed esporta i tuoi dati via CSV o API. - + Calendario ed email Centralizza le riunioni e le email del tuo team. - + Flussi di lavoro Automatizza i processi e integra con strumenti esterni. - + IA Potenzia il tuo team con agenti IA. - + Viste e pipeline Organizza i tuoi dati con viste e pipeline operative. - + Dashboard Informazioni in tempo reale per monitorare le prestazioni. - + Autorizzazioni e accesso Gestisci i ruoli e l'accesso a Twenty. - + Fatturazione Comprendi come funzionano i prezzi e la fatturazione di Twenty. - + Impostazioni Configura le preferenze del tuo spazio di lavoro. diff --git a/packages/twenty-docs/l/it/user-guide/permissions-access/capabilities/permissions.mdx b/packages/twenty-docs/l/it/user-guide/permissions-access/capabilities/permissions.mdx index 0d18864910..b22f37be8b 100644 --- a/packages/twenty-docs/l/it/user-guide/permissions-access/capabilities/permissions.mdx +++ b/packages/twenty-docs/l/it/user-guide/permissions-access/capabilities/permissions.mdx @@ -1,7 +1,6 @@ --- title: Permessi description: Controlla l'accesso a oggetti, campi e impostazioni con permessi basati sui ruoli. -image: /images/user-guide/permissions/permissions.png --- Il sistema di permessi di Twenty ti consente di controllare l'accesso a tre aree principali: diff --git a/packages/twenty-docs/l/it/user-guide/permissions-access/overview.mdx b/packages/twenty-docs/l/it/user-guide/permissions-access/overview.mdx index 619ce7a7b1..48cbbe89a1 100644 --- a/packages/twenty-docs/l/it/user-guide/permissions-access/overview.mdx +++ b/packages/twenty-docs/l/it/user-guide/permissions-access/overview.mdx @@ -3,9 +3,6 @@ title: Permissions & Access description: Gestisci ruoli, permessi e il controllo degli accessi nel tuo spazio di lavoro. --- - - Permessi e accesso - Il sistema di permessi di Twenty ti consente di controllare chi può accedere e modificare i dati nel tuo spazio di lavoro. Crea ruoli, assegna permessi e configura SSO per un accesso sicuro. diff --git a/packages/twenty-docs/l/it/user-guide/settings/how-tos/settings-faq.mdx b/packages/twenty-docs/l/it/user-guide/settings/how-tos/settings-faq.mdx index 017a776ee0..f89ff0cc9c 100644 --- a/packages/twenty-docs/l/it/user-guide/settings/how-tos/settings-faq.mdx +++ b/packages/twenty-docs/l/it/user-guide/settings/how-tos/settings-faq.mdx @@ -1,7 +1,6 @@ --- title: Impostazioni FAQ description: Domande frequenti sulle impostazioni di Twenty. -image: /images/user-guide/setup/settings.png --- ## Impostazioni del workspace diff --git a/packages/twenty-docs/l/it/user-guide/settings/overview.mdx b/packages/twenty-docs/l/it/user-guide/settings/overview.mdx index 16ab65a655..f23d12dff7 100644 --- a/packages/twenty-docs/l/it/user-guide/settings/overview.mdx +++ b/packages/twenty-docs/l/it/user-guide/settings/overview.mdx @@ -1,12 +1,8 @@ --- title: Impostazioni description: Configura il tuo spazio di lavoro Twenty con le configurazioni essenziali. -image: /images/user-guide/setup/settings.png --- - - Impostazioni - ## Configurazione iniziale diff --git a/packages/twenty-docs/l/it/user-guide/views-pipelines/capabilities/kanban-views.mdx b/packages/twenty-docs/l/it/user-guide/views-pipelines/capabilities/kanban-views.mdx index a1c4a581be..a88c127614 100644 --- a/packages/twenty-docs/l/it/user-guide/views-pipelines/capabilities/kanban-views.mdx +++ b/packages/twenty-docs/l/it/user-guide/views-pipelines/capabilities/kanban-views.mdx @@ -1,7 +1,6 @@ --- title: Viste Kanban description: Scopri come utilizzare le viste Kanban per visualizzare e gestire i flussi di lavoro. -image: /images/user-guide/kanban-views/kanban.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; diff --git a/packages/twenty-docs/l/it/user-guide/views-pipelines/overview.mdx b/packages/twenty-docs/l/it/user-guide/views-pipelines/overview.mdx index d664f5f92a..2e4126ef23 100644 --- a/packages/twenty-docs/l/it/user-guide/views-pipelines/overview.mdx +++ b/packages/twenty-docs/l/it/user-guide/views-pipelines/overview.mdx @@ -1,14 +1,10 @@ --- title: Viste e Pipeline description: Scopri come creare e gestire le viste in Twenty. -image: /images/user-guide/table-views/table.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - Viste e Pipeline - ## Comprendere le viste diff --git a/packages/twenty-docs/l/it/user-guide/workflows/capabilities/send-emails-from-workflows.mdx b/packages/twenty-docs/l/it/user-guide/workflows/capabilities/send-emails-from-workflows.mdx index 8c60f3333d..63cc51b62a 100644 --- a/packages/twenty-docs/l/it/user-guide/workflows/capabilities/send-emails-from-workflows.mdx +++ b/packages/twenty-docs/l/it/user-guide/workflows/capabilities/send-emails-from-workflows.mdx @@ -1,7 +1,6 @@ --- title: Invia email dai flussi di lavoro description: Invia automaticamente email personalizzate utilizzando le azioni dei flussi di lavoro. -image: /images/user-guide/workflows/workflow.png --- Invia automaticamente email quando si verificano eventi specifici nel tuo CRM—dai il benvenuto ai nuovi contatti, effettua il follow-up delle opportunità o avvisa i membri del team. diff --git a/packages/twenty-docs/l/it/user-guide/workflows/capabilities/use-iterator.mdx b/packages/twenty-docs/l/it/user-guide/workflows/capabilities/use-iterator.mdx index ab8e79bb46..fe28a70065 100644 --- a/packages/twenty-docs/l/it/user-guide/workflows/capabilities/use-iterator.mdx +++ b/packages/twenty-docs/l/it/user-guide/workflows/capabilities/use-iterator.mdx @@ -1,7 +1,6 @@ --- title: Usare Iterator description: Cicla attraverso array di record per eseguire azioni su ciascun elemento. -image: /images/user-guide/workflows/workflow.png --- Iterator consente di scorrere un array di record ed eseguire azioni su ciascuno. È essenziale per i flussi di lavoro che devono elaborare più record restituiti da Search Records o ricevuti tramite webhook. diff --git a/packages/twenty-docs/l/it/user-guide/workflows/capabilities/workflow-runs.mdx b/packages/twenty-docs/l/it/user-guide/workflows/capabilities/workflow-runs.mdx index 58f96174e2..8a24dec616 100644 --- a/packages/twenty-docs/l/it/user-guide/workflows/capabilities/workflow-runs.mdx +++ b/packages/twenty-docs/l/it/user-guide/workflows/capabilities/workflow-runs.mdx @@ -1,7 +1,6 @@ --- title: Esecuzioni del workflow description: Monitora e gestisci le esecuzioni dei flussi di lavoro. -image: /images/user-guide/workflows/workflow.png --- ## Informazioni sulle esecuzioni diff --git a/packages/twenty-docs/l/it/user-guide/workflows/capabilities/workflow-versions.mdx b/packages/twenty-docs/l/it/user-guide/workflows/capabilities/workflow-versions.mdx index 0714f2d872..b96ebdcf5a 100644 --- a/packages/twenty-docs/l/it/user-guide/workflows/capabilities/workflow-versions.mdx +++ b/packages/twenty-docs/l/it/user-guide/workflows/capabilities/workflow-versions.mdx @@ -1,7 +1,6 @@ --- title: Versioni del workflow description: Gestisci le versioni e le bozze dei workflow. -image: /images/user-guide/workflows/workflow.png --- ## Informazioni sulle versioni diff --git a/packages/twenty-docs/l/it/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx b/packages/twenty-docs/l/it/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx index 5cea1fa227..e1ba6d3fa5 100644 --- a/packages/twenty-docs/l/it/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx +++ b/packages/twenty-docs/l/it/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx @@ -1,7 +1,6 @@ --- title: Configura un trigger webhook description: Ricevi dati da servizi esterni per attivare i flussi di lavoro. -image: /images/user-guide/workflows/workflow.png --- I trigger webhook consentono ai servizi esterni di avviare i tuoi flussi di lavoro inviando dati a un URL univoco. Usali per connettere moduli, app di terze parti e integrazioni personalizzate. diff --git a/packages/twenty-docs/l/it/user-guide/workflows/overview.mdx b/packages/twenty-docs/l/it/user-guide/workflows/overview.mdx index c1e6f5eeb6..7256e98113 100644 --- a/packages/twenty-docs/l/it/user-guide/workflows/overview.mdx +++ b/packages/twenty-docs/l/it/user-guide/workflows/overview.mdx @@ -1,12 +1,8 @@ --- title: Flussi di Lavoro description: Scopri come creare automazioni in Twenty. -image: /images/user-guide/workflows/workflow.png --- - - Flussi di Lavoro - ## Perché i Workflow sono importanti diff --git a/packages/twenty-docs/l/ja/twenty-ui/display/app-tooltip.mdx b/packages/twenty-docs/l/ja/twenty-ui/display/app-tooltip.mdx index 5520b12b8d..a232bf7dfe 100644 --- a/packages/twenty-docs/l/ja/twenty-ui/display/app-tooltip.mdx +++ b/packages/twenty-docs/l/ja/twenty-ui/display/app-tooltip.mdx @@ -1,6 +1,5 @@ --- title: アプリツールチップ -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/ja/twenty-ui/display/chip.mdx b/packages/twenty-docs/l/ja/twenty-ui/display/chip.mdx index 0796f8fe54..024ec97823 100644 --- a/packages/twenty-docs/l/ja/twenty-ui/display/chip.mdx +++ b/packages/twenty-docs/l/ja/twenty-ui/display/chip.mdx @@ -1,6 +1,5 @@ --- title: チップ -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/ja/twenty-ui/display/icons.mdx b/packages/twenty-docs/l/ja/twenty-ui/display/icons.mdx index db9dafe5b7..39ad3fbc79 100644 --- a/packages/twenty-docs/l/ja/twenty-ui/display/icons.mdx +++ b/packages/twenty-docs/l/ja/twenty-ui/display/icons.mdx @@ -1,6 +1,5 @@ --- title: アイコン -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/ja/twenty-ui/display/soon-pill.mdx b/packages/twenty-docs/l/ja/twenty-ui/display/soon-pill.mdx index 6a1095d876..cff8034d0f 100644 --- a/packages/twenty-docs/l/ja/twenty-ui/display/soon-pill.mdx +++ b/packages/twenty-docs/l/ja/twenty-ui/display/soon-pill.mdx @@ -1,11 +1,7 @@ --- title: Soon Pill -image: /images/user-guide/kanban-views/kanban.png --- - - ヘッダー - 近日公開を示す小さなバッジ(ピル)です。 diff --git a/packages/twenty-docs/l/ja/twenty-ui/display/tag.mdx b/packages/twenty-docs/l/ja/twenty-ui/display/tag.mdx index 76dd8c1e7a..4efa26db49 100644 --- a/packages/twenty-docs/l/ja/twenty-ui/display/tag.mdx +++ b/packages/twenty-docs/l/ja/twenty-ui/display/tag.mdx @@ -1,11 +1,7 @@ --- title: タグ -image: /images/user-guide/table-views/table.png --- - - ヘッダー - コンテンツを視覚的に分類またはラベル付けするためのコンポーネント。 diff --git a/packages/twenty-docs/l/ja/twenty-ui/input.mdx b/packages/twenty-docs/l/ja/twenty-ui/input.mdx index 2283178d8b..c809a42498 100644 --- a/packages/twenty-docs/l/ja/twenty-ui/input.mdx +++ b/packages/twenty-docs/l/ja/twenty-ui/input.mdx @@ -1,6 +1,5 @@ --- title: 入力 -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/ja/twenty-ui/input/block-editor.mdx b/packages/twenty-docs/l/ja/twenty-ui/input/block-editor.mdx index e4538b01f1..a2a8fc1ad6 100644 --- a/packages/twenty-docs/l/ja/twenty-ui/input/block-editor.mdx +++ b/packages/twenty-docs/l/ja/twenty-ui/input/block-editor.mdx @@ -1,6 +1,5 @@ --- title: ブロックエディター -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/ja/twenty-ui/input/buttons.mdx b/packages/twenty-docs/l/ja/twenty-ui/input/buttons.mdx index aa52901152..8bc9b2e36f 100644 --- a/packages/twenty-docs/l/ja/twenty-ui/input/buttons.mdx +++ b/packages/twenty-docs/l/ja/twenty-ui/input/buttons.mdx @@ -1,6 +1,5 @@ --- title: ボタン -image: /images/user-guide/views/filter.png --- diff --git a/packages/twenty-docs/l/ja/twenty-ui/input/color-scheme.mdx b/packages/twenty-docs/l/ja/twenty-ui/input/color-scheme.mdx index 093c79b8b8..20b06588e7 100644 --- a/packages/twenty-docs/l/ja/twenty-ui/input/color-scheme.mdx +++ b/packages/twenty-docs/l/ja/twenty-ui/input/color-scheme.mdx @@ -1,6 +1,5 @@ --- title: カラースキーム -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/ja/twenty-ui/input/icon-picker.mdx b/packages/twenty-docs/l/ja/twenty-ui/input/icon-picker.mdx index 796d0d013c..727c8cc7b8 100644 --- a/packages/twenty-docs/l/ja/twenty-ui/input/icon-picker.mdx +++ b/packages/twenty-docs/l/ja/twenty-ui/input/icon-picker.mdx @@ -1,6 +1,5 @@ --- title: アイコンピッカー -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/ja/twenty-ui/input/image-input.mdx b/packages/twenty-docs/l/ja/twenty-ui/input/image-input.mdx index f8f88fb97c..85655f3734 100644 --- a/packages/twenty-docs/l/ja/twenty-ui/input/image-input.mdx +++ b/packages/twenty-docs/l/ja/twenty-ui/input/image-input.mdx @@ -1,6 +1,5 @@ --- title: 画像入力 -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/ja/twenty-ui/input/radio.mdx b/packages/twenty-docs/l/ja/twenty-ui/input/radio.mdx index 36c793dd72..bb559c799a 100644 --- a/packages/twenty-docs/l/ja/twenty-ui/input/radio.mdx +++ b/packages/twenty-docs/l/ja/twenty-ui/input/radio.mdx @@ -1,6 +1,5 @@ --- title: ラジオ -image: /images/user-guide/create-workspace/workspace-cover.png --- diff --git a/packages/twenty-docs/l/ja/twenty-ui/input/select.mdx b/packages/twenty-docs/l/ja/twenty-ui/input/select.mdx index 450b31c0e7..b022459a4a 100644 --- a/packages/twenty-docs/l/ja/twenty-ui/input/select.mdx +++ b/packages/twenty-docs/l/ja/twenty-ui/input/select.mdx @@ -1,6 +1,5 @@ --- title: 選択する -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/ja/twenty-ui/input/text.mdx b/packages/twenty-docs/l/ja/twenty-ui/input/text.mdx index b1c208fb65..6d37744554 100644 --- a/packages/twenty-docs/l/ja/twenty-ui/input/text.mdx +++ b/packages/twenty-docs/l/ja/twenty-ui/input/text.mdx @@ -1,6 +1,5 @@ --- title: テキスト -image: /images/user-guide/notes/notes_header.png --- diff --git a/packages/twenty-docs/l/ja/twenty-ui/input/toggle.mdx b/packages/twenty-docs/l/ja/twenty-ui/input/toggle.mdx index d3304f9606..efadb1712d 100644 --- a/packages/twenty-docs/l/ja/twenty-ui/input/toggle.mdx +++ b/packages/twenty-docs/l/ja/twenty-ui/input/toggle.mdx @@ -1,11 +1,7 @@ --- title: 切り替え -image: /images/user-guide/table-views/table.png --- - - ヘッダー - diff --git a/packages/twenty-docs/l/ja/twenty-ui/navigation/breadcrumb.mdx b/packages/twenty-docs/l/ja/twenty-ui/navigation/breadcrumb.mdx index 47fda70593..ef9a135bd2 100644 --- a/packages/twenty-docs/l/ja/twenty-ui/navigation/breadcrumb.mdx +++ b/packages/twenty-docs/l/ja/twenty-ui/navigation/breadcrumb.mdx @@ -1,6 +1,5 @@ --- title: ブレッドクラム -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/ja/twenty-ui/navigation/links.mdx b/packages/twenty-docs/l/ja/twenty-ui/navigation/links.mdx index 8b1a327b0f..9a81791d68 100644 --- a/packages/twenty-docs/l/ja/twenty-ui/navigation/links.mdx +++ b/packages/twenty-docs/l/ja/twenty-ui/navigation/links.mdx @@ -1,6 +1,5 @@ --- title: リンク -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/ja/twenty-ui/navigation/menu-item.mdx b/packages/twenty-docs/l/ja/twenty-ui/navigation/menu-item.mdx index 0a41c59f79..6172a69e31 100644 --- a/packages/twenty-docs/l/ja/twenty-ui/navigation/menu-item.mdx +++ b/packages/twenty-docs/l/ja/twenty-ui/navigation/menu-item.mdx @@ -1,11 +1,7 @@ --- title: メニュー項目 -image: /images/user-guide/kanban-views/kanban.png --- - - ヘッダー - メニューまたはナビゲーションリストで使用するために設計された汎用性の高いメニュー項目です。 diff --git a/packages/twenty-docs/l/ja/twenty-ui/navigation/navigation-bar.mdx b/packages/twenty-docs/l/ja/twenty-ui/navigation/navigation-bar.mdx index de7a69a1f9..d3c4dc5b6c 100644 --- a/packages/twenty-docs/l/ja/twenty-ui/navigation/navigation-bar.mdx +++ b/packages/twenty-docs/l/ja/twenty-ui/navigation/navigation-bar.mdx @@ -1,11 +1,7 @@ --- title: ナビゲーションバー -image: /images/user-guide/table-views/table.png --- - - ヘッダー - 複数の`NavigationBarItem`コンポーネントを含むナビゲーションバーをレンダリングします。 diff --git a/packages/twenty-docs/l/ja/twenty-ui/navigation/step-bar.mdx b/packages/twenty-docs/l/ja/twenty-ui/navigation/step-bar.mdx index 335fa2fab1..92acce616a 100644 --- a/packages/twenty-docs/l/ja/twenty-ui/navigation/step-bar.mdx +++ b/packages/twenty-docs/l/ja/twenty-ui/navigation/step-bar.mdx @@ -1,6 +1,5 @@ --- title: ステップバー -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/ja/twenty-ui/progress-bar.mdx b/packages/twenty-docs/l/ja/twenty-ui/progress-bar.mdx index 3eec71cb81..cff3ea6c14 100644 --- a/packages/twenty-docs/l/ja/twenty-ui/progress-bar.mdx +++ b/packages/twenty-docs/l/ja/twenty-ui/progress-bar.mdx @@ -1,11 +1,7 @@ --- title: フィードバック -image: /images/user-guide/emails/emails_header.png --- - - ヘッダー - 進捗やカウントダウンを示し、右から左に動きます。 diff --git a/packages/twenty-docs/l/ja/user-guide/billing/overview.mdx b/packages/twenty-docs/l/ja/user-guide/billing/overview.mdx index cc05816b74..6de28ff588 100644 --- a/packages/twenty-docs/l/ja/user-guide/billing/overview.mdx +++ b/packages/twenty-docs/l/ja/user-guide/billing/overview.mdx @@ -1,12 +1,8 @@ --- title: 請求 description: Twenty の料金を把握し、サブスクリプションを管理しましょう。 -image: /images/user-guide/setup/pricing.png --- - - 請求 - Twenty は、チームのニーズに合わせた柔軟な料金プランを提供します。 サブスクリプションの管理、ワークフロー クレジットの確認、請求書へのアクセスは、すべて **設定 → 請求** から行えます。 diff --git a/packages/twenty-docs/l/ja/user-guide/calendar-emails/overview.mdx b/packages/twenty-docs/l/ja/user-guide/calendar-emails/overview.mdx index 61b9f94c46..f34844aad4 100644 --- a/packages/twenty-docs/l/ja/user-guide/calendar-emails/overview.mdx +++ b/packages/twenty-docs/l/ja/user-guide/calendar-emails/overview.mdx @@ -1,12 +1,8 @@ --- title: カレンダーとメール description: メールとカレンダーのアカウントをTwentyに接続します。 -image: /images/user-guide/emails/emails_header.png --- - - カレンダーとメール - ## 接続オプション diff --git a/packages/twenty-docs/l/ja/user-guide/dashboards/overview.mdx b/packages/twenty-docs/l/ja/user-guide/dashboards/overview.mdx index 68e7c0d461..c558961c65 100644 --- a/packages/twenty-docs/l/ja/user-guide/dashboards/overview.mdx +++ b/packages/twenty-docs/l/ja/user-guide/dashboards/overview.mdx @@ -1,12 +1,8 @@ --- title: ダッシュボード description: Twenty におけるレポートとダッシュボードの基本を学びましょう。 -image: /images/user-guide/reporting/pie-chart.png --- - - ダッシュボード - ダッシュボードは現在ベータ版です。 **設定 → 更新 → 早期アクセス**で有効にしてください。 diff --git a/packages/twenty-docs/l/ja/user-guide/data-migration/overview.mdx b/packages/twenty-docs/l/ja/user-guide/data-migration/overview.mdx index 19ea88b4c2..6f75071dc4 100644 --- a/packages/twenty-docs/l/ja/user-guide/data-migration/overview.mdx +++ b/packages/twenty-docs/l/ja/user-guide/data-migration/overview.mdx @@ -1,14 +1,10 @@ --- title: データ移行 description: CSVファイルまたはAPIを使用してCRMデータをインポートおよびエクスポートできます。 -image: /images/user-guide/import-export-data/cloud.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - データ移行 - ## インポート方法 diff --git a/packages/twenty-docs/l/ja/user-guide/data-model/overview.mdx b/packages/twenty-docs/l/ja/user-guide/data-model/overview.mdx index 3414262d3c..fca43dbc11 100644 --- a/packages/twenty-docs/l/ja/user-guide/data-model/overview.mdx +++ b/packages/twenty-docs/l/ja/user-guide/data-model/overview.mdx @@ -1,12 +1,8 @@ --- title: データモデル description: データモデルとは何か、ビジネスに適したデータモデルの設計方法を学びましょう。 -image: /images/user-guide/fields/custom_data_model.png --- - - データモデル - ## データモデルとは何ですか? diff --git a/packages/twenty-docs/l/ja/user-guide/introduction.mdx b/packages/twenty-docs/l/ja/user-guide/introduction.mdx index 932feb5ac7..c8e7cb11c8 100644 --- a/packages/twenty-docs/l/ja/user-guide/introduction.mdx +++ b/packages/twenty-docs/l/ja/user-guide/introduction.mdx @@ -11,52 +11,52 @@ import { CardTitle } from "/snippets/card-title.mdx" Twenty とは何か、ビジネスにどのように役立つかを学びましょう。 - + データモデル 固有のビジネスプロセスに合わせてデータモデルをカスタマイズします。 - + データ移行 CSV または API でデータをインポート/エクスポートします。 - + カレンダーとメール チームの会議やメールを一元管理します。 - + ワークフロー プロセスを自動化し、外部ツールと統合します。 - + AI AI エージェントでチームを強化します。 - + ビューとパイプライン 実行可能なビューとパイプラインでデータを整理します。 - + ダッシュボード パフォーマンスを追跡するためのリアルタイムなインサイトを提供します。 - + 権限とアクセス Twenty へのロールおよびアクセス権を管理します。 - + 請求 Twenty の料金と請求の仕組みを理解します。 - + 設定 ワークスペースの設定を行います。 diff --git a/packages/twenty-docs/l/ja/user-guide/permissions-access/capabilities/permissions.mdx b/packages/twenty-docs/l/ja/user-guide/permissions-access/capabilities/permissions.mdx index 8787b90f21..c6d3ecee30 100644 --- a/packages/twenty-docs/l/ja/user-guide/permissions-access/capabilities/permissions.mdx +++ b/packages/twenty-docs/l/ja/user-guide/permissions-access/capabilities/permissions.mdx @@ -1,7 +1,6 @@ --- title: 権限 description: ロールベースの権限でオブジェクト、フィールド、設定へのアクセスを制御します。 -image: /images/user-guide/permissions/permissions.png --- Twentyの権限システムにより、3つの主要な領域へのアクセスを制御できます: diff --git a/packages/twenty-docs/l/ja/user-guide/permissions-access/overview.mdx b/packages/twenty-docs/l/ja/user-guide/permissions-access/overview.mdx index b50e2a9422..054dd540a1 100644 --- a/packages/twenty-docs/l/ja/user-guide/permissions-access/overview.mdx +++ b/packages/twenty-docs/l/ja/user-guide/permissions-access/overview.mdx @@ -3,9 +3,6 @@ title: 権限とアクセス description: ワークスペースでロール、権限、アクセス制御を管理します。}, { --- - - 権限とアクセス - Twentyの権限システムは、ワークスペース内のデータに誰がアクセスし、変更できるかを制御できます。 ロールを作成し、権限を割り当て、安全なアクセスのためにSSOを構成します。 diff --git a/packages/twenty-docs/l/ja/user-guide/settings/how-tos/settings-faq.mdx b/packages/twenty-docs/l/ja/user-guide/settings/how-tos/settings-faq.mdx index 574d6819ed..67a55c5321 100644 --- a/packages/twenty-docs/l/ja/user-guide/settings/how-tos/settings-faq.mdx +++ b/packages/twenty-docs/l/ja/user-guide/settings/how-tos/settings-faq.mdx @@ -1,7 +1,6 @@ --- title: 設定FAQ description: Twenty の設定に関するよくある質問。 -image: /images/user-guide/setup/settings.png --- ## ワークスペース設定 diff --git a/packages/twenty-docs/l/ja/user-guide/settings/overview.mdx b/packages/twenty-docs/l/ja/user-guide/settings/overview.mdx index 6cd6cbb150..f6f9195191 100644 --- a/packages/twenty-docs/l/ja/user-guide/settings/overview.mdx +++ b/packages/twenty-docs/l/ja/user-guide/settings/overview.mdx @@ -1,12 +1,8 @@ --- title: 設定 description: 必須の設定を行い、Twenty のワークスペースをセットアップします。 -image: /images/user-guide/setup/settings.png --- - - 設定 - ## 初期セットアップ diff --git a/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/kanban-views.mdx b/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/kanban-views.mdx index d1d3a15832..be1f6d29bf 100644 --- a/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/kanban-views.mdx +++ b/packages/twenty-docs/l/ja/user-guide/views-pipelines/capabilities/kanban-views.mdx @@ -1,7 +1,6 @@ --- title: カンバンボードビュー description: カンバンビューを使用してワークフローを可視化し、管理する方法を学びましょう。 -image: /images/user-guide/kanban-views/kanban.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; diff --git a/packages/twenty-docs/l/ja/user-guide/views-pipelines/overview.mdx b/packages/twenty-docs/l/ja/user-guide/views-pipelines/overview.mdx index e1a8ccabe5..4195e22bc2 100644 --- a/packages/twenty-docs/l/ja/user-guide/views-pipelines/overview.mdx +++ b/packages/twenty-docs/l/ja/user-guide/views-pipelines/overview.mdx @@ -1,14 +1,10 @@ --- title: ビューとパイプライン description: Twentyでビューを作成および管理する方法を理解する。 -image: /images/user-guide/table-views/table.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - ビューとパイプライン - ## ビューの理解 diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/send-emails-from-workflows.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/send-emails-from-workflows.mdx index 7dc0fe36da..2a64edd510 100644 --- a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/send-emails-from-workflows.mdx +++ b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/send-emails-from-workflows.mdx @@ -1,7 +1,6 @@ --- title: ワークフローによるメール送信 description: ワークフローアクションを使用して、パーソナライズされたメールを自動送信します。 -image: /images/user-guide/workflows/workflow.png --- CRM で特定のイベントが発生したときにメールを自動送信します—新規連絡先を歓迎し、商談をフォローアップしたり、チームメンバーに通知したりします。 diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/use-iterator.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/use-iterator.mdx index 7ba48827e1..b9ad1563d4 100644 --- a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/use-iterator.mdx +++ b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/use-iterator.mdx @@ -1,7 +1,6 @@ --- title: Iterator を使用 description: レコードの配列をループし、各アイテムに対してアクションを実行します。 -image: /images/user-guide/workflows/workflow.png --- Iterator を使用すると、レコードの配列をループし、各レコードに対してアクションを実行できます。 これは、Search Records で返された複数のレコードや Webhook で受信したレコードを処理する必要があるワークフローに不可欠です。 diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-runs.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-runs.mdx index b33d6997c4..3628f61c4d 100644 --- a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-runs.mdx +++ b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-runs.mdx @@ -1,7 +1,6 @@ --- title: ワークフロー実行 description: ワークフローの実行を監視および管理します。 -image: /images/user-guide/workflows/workflow.png --- ## 実行について diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-versions.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-versions.mdx index b2108b95cd..852a666850 100644 --- a/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-versions.mdx +++ b/packages/twenty-docs/l/ja/user-guide/workflows/capabilities/workflow-versions.mdx @@ -1,7 +1,6 @@ --- title: ワークフローバージョン description: ワークフローのバージョンとドラフトを管理します。 -image: /images/user-guide/workflows/workflow.png --- ## バージョンについて diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx index aa505c067f..a90b0a11c5 100644 --- a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx +++ b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx @@ -1,7 +1,6 @@ --- title: Webhook トリガーの設定 description: 外部サービスからデータを受け取り、ワークフローをトリガーします。 -image: /images/user-guide/workflows/workflow.png --- Webhook トリガーは、一意の URL にデータを送信することで外部サービスがあなたのワークフローを開始できるようにします。 フォーム、サードパーティアプリ、カスタム統合に接続するために使用します。 diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/overview.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/overview.mdx index 89413c131f..a9a2e5cb48 100644 --- a/packages/twenty-docs/l/ja/user-guide/workflows/overview.mdx +++ b/packages/twenty-docs/l/ja/user-guide/workflows/overview.mdx @@ -1,12 +1,8 @@ --- title: ワークフロー description: Twenty で自動化を構築する方法を学びましょう。 -image: /images/user-guide/workflows/workflow.png --- - - ワークフロー - ## ワークフローが重要な理由 diff --git a/packages/twenty-docs/l/ko/twenty-ui/display/app-tooltip.mdx b/packages/twenty-docs/l/ko/twenty-ui/display/app-tooltip.mdx index 8448e053a0..fc529bfb99 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/display/app-tooltip.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/display/app-tooltip.mdx @@ -1,6 +1,5 @@ --- title: 앱 툴팁 -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/ko/twenty-ui/display/checkmark.mdx b/packages/twenty-docs/l/ko/twenty-ui/display/checkmark.mdx index bfa4ef553c..069b78b98c 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/display/checkmark.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/display/checkmark.mdx @@ -1,6 +1,5 @@ --- title: 체크마크 -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/ko/twenty-ui/display/chip.mdx b/packages/twenty-docs/l/ko/twenty-ui/display/chip.mdx index 3feb3a3bbb..05a11fbf2d 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/display/chip.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/display/chip.mdx @@ -1,6 +1,5 @@ --- title: 칩 -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/ko/twenty-ui/display/icons.mdx b/packages/twenty-docs/l/ko/twenty-ui/display/icons.mdx index 905961eddf..d31a6cf7e3 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/display/icons.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/display/icons.mdx @@ -1,6 +1,5 @@ --- title: 아이콘들 -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/ko/twenty-ui/display/soon-pill.mdx b/packages/twenty-docs/l/ko/twenty-ui/display/soon-pill.mdx index 3e9c1ddc16..b41e78b295 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/display/soon-pill.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/display/soon-pill.mdx @@ -1,11 +1,7 @@ --- title: 제공 예정 배지 -image: /images/user-guide/kanban-views/kanban.png --- - - 헤더 - 무언가가 곧 제공될 것임을 나타내는 작은 배지 또는 "pill"입니다. diff --git a/packages/twenty-docs/l/ko/twenty-ui/display/tag.mdx b/packages/twenty-docs/l/ko/twenty-ui/display/tag.mdx index 630ba62a0e..e8d6bd5357 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/display/tag.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/display/tag.mdx @@ -1,11 +1,7 @@ --- title: 태그 -image: /images/user-guide/table-views/table.png --- - - 헤더 - 콘텐츠를 시각적으로 분류하거나 라벨을 붙이는 구성 요소입니다. diff --git a/packages/twenty-docs/l/ko/twenty-ui/input.mdx b/packages/twenty-docs/l/ko/twenty-ui/input.mdx index 74f860155d..be975177b7 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/input.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/input.mdx @@ -1,6 +1,5 @@ --- title: 입력 -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/ko/twenty-ui/input/block-editor.mdx b/packages/twenty-docs/l/ko/twenty-ui/input/block-editor.mdx index 589e48078c..3147b7b3a8 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/input/block-editor.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/input/block-editor.mdx @@ -1,6 +1,5 @@ --- title: 블록 편집기 -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/ko/twenty-ui/input/buttons.mdx b/packages/twenty-docs/l/ko/twenty-ui/input/buttons.mdx index 1b7652b71a..aff0737a52 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/input/buttons.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/input/buttons.mdx @@ -1,6 +1,5 @@ --- title: 버튼들 -image: /images/user-guide/views/filter.png --- diff --git a/packages/twenty-docs/l/ko/twenty-ui/input/checkbox.mdx b/packages/twenty-docs/l/ko/twenty-ui/input/checkbox.mdx index 027ef5da9c..27178f6498 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/input/checkbox.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/input/checkbox.mdx @@ -1,6 +1,5 @@ --- title: 체크박스 -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/ko/twenty-ui/input/color-scheme.mdx b/packages/twenty-docs/l/ko/twenty-ui/input/color-scheme.mdx index e520556a91..17552b390e 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/input/color-scheme.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/input/color-scheme.mdx @@ -1,6 +1,5 @@ --- title: 색 구성표 -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/ko/twenty-ui/input/icon-picker.mdx b/packages/twenty-docs/l/ko/twenty-ui/input/icon-picker.mdx index 4fa5d59e08..cb1ca6c376 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/input/icon-picker.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/input/icon-picker.mdx @@ -1,6 +1,5 @@ --- title: 아이콘 선택기 -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/ko/twenty-ui/input/image-input.mdx b/packages/twenty-docs/l/ko/twenty-ui/input/image-input.mdx index 9f27f5d1c5..35086304da 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/input/image-input.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/input/image-input.mdx @@ -1,6 +1,5 @@ --- title: 이미지 입력 -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/ko/twenty-ui/input/radio.mdx b/packages/twenty-docs/l/ko/twenty-ui/input/radio.mdx index 52918c4dcb..3822403299 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/input/radio.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/input/radio.mdx @@ -1,6 +1,5 @@ --- title: 라디오 -image: /images/user-guide/create-workspace/workspace-cover.png --- diff --git a/packages/twenty-docs/l/ko/twenty-ui/input/select.mdx b/packages/twenty-docs/l/ko/twenty-ui/input/select.mdx index 738087d8f1..bfd6961ef1 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/input/select.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/input/select.mdx @@ -1,6 +1,5 @@ --- title: 선택 -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/ko/twenty-ui/input/text.mdx b/packages/twenty-docs/l/ko/twenty-ui/input/text.mdx index 094e865263..0feeba10a9 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/input/text.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/input/text.mdx @@ -1,6 +1,5 @@ --- title: 텍스트 -image: /images/user-guide/notes/notes_header.png --- diff --git a/packages/twenty-docs/l/ko/twenty-ui/input/toggle.mdx b/packages/twenty-docs/l/ko/twenty-ui/input/toggle.mdx index fc48e6cf49..d27f505de9 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/input/toggle.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/input/toggle.mdx @@ -1,11 +1,7 @@ --- title: 토글 -image: /images/user-guide/table-views/table.png --- - - 헤더 - diff --git a/packages/twenty-docs/l/ko/twenty-ui/navigation.mdx b/packages/twenty-docs/l/ko/twenty-ui/navigation.mdx index e9a819550b..6bbcecb832 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/navigation.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/navigation.mdx @@ -1,6 +1,5 @@ --- title: 네비게이션 -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/ko/twenty-ui/navigation/breadcrumb.mdx b/packages/twenty-docs/l/ko/twenty-ui/navigation/breadcrumb.mdx index a521d9572b..f9c2ab287d 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/navigation/breadcrumb.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/navigation/breadcrumb.mdx @@ -1,6 +1,5 @@ --- title: Breadcrumb -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/ko/twenty-ui/navigation/links.mdx b/packages/twenty-docs/l/ko/twenty-ui/navigation/links.mdx index f4964e86d3..b296cdf5bb 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/navigation/links.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/navigation/links.mdx @@ -1,6 +1,5 @@ --- title: 링크 -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/ko/twenty-ui/navigation/menu-item.mdx b/packages/twenty-docs/l/ko/twenty-ui/navigation/menu-item.mdx index 682cf2a1ee..5ae60427d5 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/navigation/menu-item.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/navigation/menu-item.mdx @@ -1,11 +1,7 @@ --- title: 메뉴 항목 -image: /images/user-guide/kanban-views/kanban.png --- - - 헤더 - 메뉴 또는 탐색 목록에서 사용할 수 있도록 설계된 다용도 메뉴 항목입니다. diff --git a/packages/twenty-docs/l/ko/twenty-ui/navigation/navigation-bar.mdx b/packages/twenty-docs/l/ko/twenty-ui/navigation/navigation-bar.mdx index 1cb5532a71..180f20a867 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/navigation/navigation-bar.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/navigation/navigation-bar.mdx @@ -1,11 +1,7 @@ --- title: 내비게이션 바 -image: /images/user-guide/table-views/table.png --- - - 헤더 - 여러 `NavigationBarItem` 구성 요소를 포함하는 탐색 막대를 렌더링합니다. diff --git a/packages/twenty-docs/l/ko/twenty-ui/navigation/step-bar.mdx b/packages/twenty-docs/l/ko/twenty-ui/navigation/step-bar.mdx index 5758161934..3a354767fb 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/navigation/step-bar.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/navigation/step-bar.mdx @@ -1,6 +1,5 @@ --- title: 단계 막대 -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/ko/twenty-ui/progress-bar.mdx b/packages/twenty-docs/l/ko/twenty-ui/progress-bar.mdx index 8c84a08e8e..8f4a719f68 100644 --- a/packages/twenty-docs/l/ko/twenty-ui/progress-bar.mdx +++ b/packages/twenty-docs/l/ko/twenty-ui/progress-bar.mdx @@ -1,11 +1,7 @@ --- title: 피드백 -image: /images/user-guide/emails/emails_header.png --- - - 헤더 - 진행 또는 카운트다운을 나타내며 오른쪽에서 왼쪽으로 이동합니다. diff --git a/packages/twenty-docs/l/ko/user-guide/billing/overview.mdx b/packages/twenty-docs/l/ko/user-guide/billing/overview.mdx index c7898b223d..993f72d859 100644 --- a/packages/twenty-docs/l/ko/user-guide/billing/overview.mdx +++ b/packages/twenty-docs/l/ko/user-guide/billing/overview.mdx @@ -1,12 +1,8 @@ --- title: 청구 description: Twenty의 요금제를 이해하고 구독을 관리하세요. -image: /images/user-guide/setup/pricing.png --- - - 청구 - Twenty는 팀의 요구에 맞는 유연한 요금제를 제공합니다. **설정 → 결제**에서 구독을 관리하고 워크플로 크레딧을 확인하며 청구서를 확인할 수 있습니다. diff --git a/packages/twenty-docs/l/ko/user-guide/calendar-emails/overview.mdx b/packages/twenty-docs/l/ko/user-guide/calendar-emails/overview.mdx index 8d73763cbe..01d7120355 100644 --- a/packages/twenty-docs/l/ko/user-guide/calendar-emails/overview.mdx +++ b/packages/twenty-docs/l/ko/user-guide/calendar-emails/overview.mdx @@ -1,12 +1,8 @@ --- title: 캘린더 및 이메일 description: Twenty에 이메일과 캘린더 계정을 연결하세요. -image: /images/user-guide/emails/emails_header.png --- - - 캘린더 및 이메일 - ## 연결 옵션 diff --git a/packages/twenty-docs/l/ko/user-guide/dashboards/overview.mdx b/packages/twenty-docs/l/ko/user-guide/dashboards/overview.mdx index 805d6c50a8..05a9ab6bec 100644 --- a/packages/twenty-docs/l/ko/user-guide/dashboards/overview.mdx +++ b/packages/twenty-docs/l/ko/user-guide/dashboards/overview.mdx @@ -1,12 +1,8 @@ --- title: 대시보드 description: Twenty에서 보고 및 대시보드의 기본을 알아보세요. -image: /images/user-guide/reporting/pie-chart.png --- - - 대시보드 - 대시보드는 현재 베타 단계입니다. 해당 기능은 **설정 → 업데이트 → 얼리 액세스**에서 활성화할 수 있습니다. diff --git a/packages/twenty-docs/l/ko/user-guide/data-migration/overview.mdx b/packages/twenty-docs/l/ko/user-guide/data-migration/overview.mdx index 2de3f8efd8..935a6e72ef 100644 --- a/packages/twenty-docs/l/ko/user-guide/data-migration/overview.mdx +++ b/packages/twenty-docs/l/ko/user-guide/data-migration/overview.mdx @@ -1,14 +1,10 @@ --- title: 데이터 마이그레이션 description: CSV 파일 또는 API를 통해 CRM 데이터를 가져오고 내보내세요. -image: /images/user-guide/import-export-data/cloud.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - 데이터 마이그레이션 - ## 가져오기 방법 diff --git a/packages/twenty-docs/l/ko/user-guide/data-model/overview.mdx b/packages/twenty-docs/l/ko/user-guide/data-model/overview.mdx index edc3e9b26e..64764b4acc 100644 --- a/packages/twenty-docs/l/ko/user-guide/data-model/overview.mdx +++ b/packages/twenty-docs/l/ko/user-guide/data-model/overview.mdx @@ -1,12 +1,8 @@ --- title: 데이터 모델 description: 데이터 모델이 무엇이며 귀사의 비즈니스에 맞는 모델을 설계하는 방법을 알아보세요. -image: /images/user-guide/fields/custom_data_model.png --- - - 데이터 모델 - ## 데이터 모델이란 무엇입니까? diff --git a/packages/twenty-docs/l/ko/user-guide/introduction.mdx b/packages/twenty-docs/l/ko/user-guide/introduction.mdx index bd486725c7..7fdbb3656e 100644 --- a/packages/twenty-docs/l/ko/user-guide/introduction.mdx +++ b/packages/twenty-docs/l/ko/user-guide/introduction.mdx @@ -11,52 +11,52 @@ import { CardTitle } from "/snippets/card-title.mdx" Twenty가 무엇이며 비즈니스에 어떻게 도움이 되는지 알아보세요. - + 데이터 모델 비즈니스 프로세스에 맞게 데이터 모델을 사용자 정의하세요. - + 데이터 마이그레이션 CSV 또는 API를 통해 데이터를 가져오고 내보내세요. - + 캘린더 및 이메일 팀의 미팅과 이메일을 한곳에 통합하세요. - + 워크플로우 프로세스를 자동화하고 외부 도구와 통합하세요. - + AI AI 에이전트로 팀을 강화하세요. - + 보기 및 파이프라인 실행 가능한 보기와 파이프라인으로 데이터를 구성하세요. - + 대시보드 성과를 추적할 수 있는 실시간 인사이트. - + 권한 및 액세스 Twenty에 대한 역할과 액세스를 관리하세요. - + 청구 Twenty의 요금제와 청구 방식에 대해 알아보세요. - + 설정 워크스페이스 기본 설정을 구성하세요. diff --git a/packages/twenty-docs/l/ko/user-guide/permissions-access/capabilities/permissions.mdx b/packages/twenty-docs/l/ko/user-guide/permissions-access/capabilities/permissions.mdx index 8491bb0850..759acbbcef 100644 --- a/packages/twenty-docs/l/ko/user-guide/permissions-access/capabilities/permissions.mdx +++ b/packages/twenty-docs/l/ko/user-guide/permissions-access/capabilities/permissions.mdx @@ -1,7 +1,6 @@ --- title: 권한 description: 역할 기반 권한을 통해 객체, 필드 및 설정에 대한 접근을 제어합니다. -image: /images/user-guide/permissions/permissions.png --- Twenty의 권한 시스템은 세 가지 주요 영역에 대한 접근을 제어할 수 있게 해줍니다: diff --git a/packages/twenty-docs/l/ko/user-guide/permissions-access/overview.mdx b/packages/twenty-docs/l/ko/user-guide/permissions-access/overview.mdx index d156275fc5..fc0f2e6278 100644 --- a/packages/twenty-docs/l/ko/user-guide/permissions-access/overview.mdx +++ b/packages/twenty-docs/l/ko/user-guide/permissions-access/overview.mdx @@ -3,9 +3,6 @@ title: 권한 및 액세스 description: 워크스페이스에서 역할, 권한 및 액세스 제어를 관리합니다. --- - - 권한 및 액세스 - Twenty의 권한 시스템을 통해 워크스페이스에서 누가 데이터에 액세스하고 수정할 수 있는지 제어할 수 있습니다. 역할을 만들고 권한을 부여하며 보안 액세스를 위해 SSO를 구성하세요. diff --git a/packages/twenty-docs/l/ko/user-guide/settings/how-tos/settings-faq.mdx b/packages/twenty-docs/l/ko/user-guide/settings/how-tos/settings-faq.mdx index b4866f4467..5d4ac7c1a5 100644 --- a/packages/twenty-docs/l/ko/user-guide/settings/how-tos/settings-faq.mdx +++ b/packages/twenty-docs/l/ko/user-guide/settings/how-tos/settings-faq.mdx @@ -1,7 +1,6 @@ --- title: 설정 FAQ description: Twenty 설정에 대한 자주 묻는 질문입니다. -image: /images/user-guide/setup/settings.png --- ## 작업 공간 설정 diff --git a/packages/twenty-docs/l/ko/user-guide/settings/overview.mdx b/packages/twenty-docs/l/ko/user-guide/settings/overview.mdx index 667c000e92..c8402aa3ea 100644 --- a/packages/twenty-docs/l/ko/user-guide/settings/overview.mdx +++ b/packages/twenty-docs/l/ko/user-guide/settings/overview.mdx @@ -1,12 +1,8 @@ --- title: 설정 description: 필수 구성으로 Twenty 워크스페이스를 설정하세요. -image: /images/user-guide/setup/settings.png --- - - 설정 - ## 초기 설정 diff --git a/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/kanban-views.mdx b/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/kanban-views.mdx index 4954d9074c..dda6e42406 100644 --- a/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/kanban-views.mdx +++ b/packages/twenty-docs/l/ko/user-guide/views-pipelines/capabilities/kanban-views.mdx @@ -1,7 +1,6 @@ --- title: 칸반 보드 보기 description: 칸반 보기를 사용하여 워크플로를 시각화하고 관리하는 방법을 알아보세요. -image: /images/user-guide/kanban-views/kanban.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; diff --git a/packages/twenty-docs/l/ko/user-guide/views-pipelines/overview.mdx b/packages/twenty-docs/l/ko/user-guide/views-pipelines/overview.mdx index cc4b4c0563..d585869f10 100644 --- a/packages/twenty-docs/l/ko/user-guide/views-pipelines/overview.mdx +++ b/packages/twenty-docs/l/ko/user-guide/views-pipelines/overview.mdx @@ -1,14 +1,10 @@ --- title: 보기 및 파이프라인 description: Twenty에서 보기를 생성하고 관리하는 방법을 알아보세요. -image: /images/user-guide/table-views/table.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - 보기 및 파이프라인 - ## 보기 이해하기 diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/send-emails-from-workflows.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/send-emails-from-workflows.mdx index c8c4d8d5b0..39bed8f00f 100644 --- a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/send-emails-from-workflows.mdx +++ b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/send-emails-from-workflows.mdx @@ -1,7 +1,6 @@ --- title: 워크플로우를 통해 이메일 보내기 description: 워크플로우 액션을 사용해 개인화된 이메일을 자동으로 보냅니다. -image: /images/user-guide/workflows/workflow.png --- CRM에서 특정 이벤트가 발생하면 자동으로 이메일을 보냅니다—신규 연락처 환영, 기회 팔로업, 팀원 알림 등. diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/use-iterator.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/use-iterator.mdx index 5f1756267f..721fca9524 100644 --- a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/use-iterator.mdx +++ b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/use-iterator.mdx @@ -1,7 +1,6 @@ --- title: Iterator 사용 description: 레코드 배열을 순회하여 각 항목에 대해 작업을 수행합니다. -image: /images/user-guide/workflows/workflow.png --- Iterator를 사용하면 레코드 배열을 반복하면서 각 항목에 대해 작업을 수행할 수 있습니다. 이는 Search Records가 반환하거나 웹훅으로 수신한 여러 레코드를 처리해야 하는 워크플로우에 필수적입니다. diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-runs.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-runs.mdx index f442baf416..7ebdf56497 100644 --- a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-runs.mdx +++ b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-runs.mdx @@ -1,7 +1,6 @@ --- title: Workflow 실행들 description: 워크플로우 실행을 모니터링하고 관리합니다. -image: /images/user-guide/workflows/workflow.png --- ## 실행에 대하여 diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-versions.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-versions.mdx index 41b0790e13..4e29af1d2f 100644 --- a/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-versions.mdx +++ b/packages/twenty-docs/l/ko/user-guide/workflows/capabilities/workflow-versions.mdx @@ -1,7 +1,6 @@ --- title: Workflow 버전들 description: 워크플로 버전과 초안을 관리합니다. -image: /images/user-guide/workflows/workflow.png --- ## 버전 정보 diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx index 880cfbe4a3..a79d4a174b 100644 --- a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx +++ b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx @@ -1,7 +1,6 @@ --- title: 웹훅 트리거 설정 description: 외부 서비스에서 데이터를 받아 워크플로우를 트리거합니다. -image: /images/user-guide/workflows/workflow.png --- 웹훅 트리거는 고유한 URL로 데이터를 보내 외부 서비스가 워크플로우를 시작할 수 있게 합니다. 양식, 서드파티 앱 및 커스텀 통합과 연결하는 데 사용하세요. diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/overview.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/overview.mdx index 769c294ab8..740ecc1d5f 100644 --- a/packages/twenty-docs/l/ko/user-guide/workflows/overview.mdx +++ b/packages/twenty-docs/l/ko/user-guide/workflows/overview.mdx @@ -1,12 +1,8 @@ --- title: 워크플로우 description: Twenty에서 자동화를 구축하는 방법을 알아보세요. -image: /images/user-guide/workflows/workflow.png --- - - 워크플로우 - ## 워크플로우의 중요성 diff --git a/packages/twenty-docs/l/pt/twenty-ui/display/app-tooltip.mdx b/packages/twenty-docs/l/pt/twenty-ui/display/app-tooltip.mdx index cf1af6d38a..e1c7760d91 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/display/app-tooltip.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/display/app-tooltip.mdx @@ -1,6 +1,5 @@ --- title: Dica do Aplicativo -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/pt/twenty-ui/display/checkmark.mdx b/packages/twenty-docs/l/pt/twenty-ui/display/checkmark.mdx index 5c0e529038..3d4ec74eea 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/display/checkmark.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/display/checkmark.mdx @@ -1,6 +1,5 @@ --- title: Marca de seleção -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/pt/twenty-ui/display/chip.mdx b/packages/twenty-docs/l/pt/twenty-ui/display/chip.mdx index 01b8c1e22d..26576c6467 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/display/chip.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/display/chip.mdx @@ -1,6 +1,5 @@ --- title: Chip -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/pt/twenty-ui/display/icons.mdx b/packages/twenty-docs/l/pt/twenty-ui/display/icons.mdx index b66678d23c..925e7df1e9 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/display/icons.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/display/icons.mdx @@ -1,6 +1,5 @@ --- title: Ícones -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/pt/twenty-ui/display/soon-pill.mdx b/packages/twenty-docs/l/pt/twenty-ui/display/soon-pill.mdx index 982e36ac47..6678b07dd6 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/display/soon-pill.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/display/soon-pill.mdx @@ -1,11 +1,7 @@ --- title: Selo Em breve -image: /images/user-guide/kanban-views/kanban.png --- - - Cabeçalho - Uma pequena insígnia ou "pílula" para indicar que algo está chegando em breve. diff --git a/packages/twenty-docs/l/pt/twenty-ui/display/tag.mdx b/packages/twenty-docs/l/pt/twenty-ui/display/tag.mdx index 89a7af86fd..7f702f1ab4 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/display/tag.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/display/tag.mdx @@ -1,11 +1,7 @@ --- title: Etiqueta -image: /images/user-guide/table-views/table.png --- - - Cabeçalho - Componente para categorizar visualmente ou rotular conteúdo. diff --git a/packages/twenty-docs/l/pt/twenty-ui/input.mdx b/packages/twenty-docs/l/pt/twenty-ui/input.mdx index 70eff960cc..476da92612 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/input.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/input.mdx @@ -1,6 +1,5 @@ --- title: Entrada -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/pt/twenty-ui/input/block-editor.mdx b/packages/twenty-docs/l/pt/twenty-ui/input/block-editor.mdx index 0e031b3a3a..474d68594a 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/input/block-editor.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/input/block-editor.mdx @@ -1,6 +1,5 @@ --- title: Editor de Blocos -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/pt/twenty-ui/input/buttons.mdx b/packages/twenty-docs/l/pt/twenty-ui/input/buttons.mdx index 1f18d6d16f..2f3920c9d2 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/input/buttons.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/input/buttons.mdx @@ -1,6 +1,5 @@ --- title: Botões -image: /images/user-guide/views/filter.png --- diff --git a/packages/twenty-docs/l/pt/twenty-ui/input/checkbox.mdx b/packages/twenty-docs/l/pt/twenty-ui/input/checkbox.mdx index f6ad7e1eb4..aa79afadd8 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/input/checkbox.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/input/checkbox.mdx @@ -1,6 +1,5 @@ --- title: Caixa de Seleção -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/pt/twenty-ui/input/color-scheme.mdx b/packages/twenty-docs/l/pt/twenty-ui/input/color-scheme.mdx index d966e0fa73..daeb485d85 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/input/color-scheme.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/input/color-scheme.mdx @@ -1,6 +1,5 @@ --- title: Esquema de Cores -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/pt/twenty-ui/input/icon-picker.mdx b/packages/twenty-docs/l/pt/twenty-ui/input/icon-picker.mdx index 55b03676b1..1a0938a0de 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/input/icon-picker.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/input/icon-picker.mdx @@ -1,6 +1,5 @@ --- title: Seletor de Ícone -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/pt/twenty-ui/input/image-input.mdx b/packages/twenty-docs/l/pt/twenty-ui/input/image-input.mdx index b86d3befc2..7bea4769f9 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/input/image-input.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/input/image-input.mdx @@ -1,6 +1,5 @@ --- title: Entrada de Imagem -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/pt/twenty-ui/input/radio.mdx b/packages/twenty-docs/l/pt/twenty-ui/input/radio.mdx index 6756778045..9887f2b47f 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/input/radio.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/input/radio.mdx @@ -1,6 +1,5 @@ --- title: Rádio -image: /images/user-guide/create-workspace/workspace-cover.png --- diff --git a/packages/twenty-docs/l/pt/twenty-ui/input/select.mdx b/packages/twenty-docs/l/pt/twenty-ui/input/select.mdx index 5dd4bffde8..c28b461629 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/input/select.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/input/select.mdx @@ -1,6 +1,5 @@ --- title: Selecionar -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/pt/twenty-ui/input/text.mdx b/packages/twenty-docs/l/pt/twenty-ui/input/text.mdx index 75def19eb4..fead0f93a6 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/input/text.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/input/text.mdx @@ -1,6 +1,5 @@ --- title: Texto -image: /images/user-guide/notes/notes_header.png --- diff --git a/packages/twenty-docs/l/pt/twenty-ui/input/toggle.mdx b/packages/twenty-docs/l/pt/twenty-ui/input/toggle.mdx index 843d388741..8ddfdb2a99 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/input/toggle.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/input/toggle.mdx @@ -1,11 +1,7 @@ --- title: Alternar -image: /images/user-guide/table-views/table.png --- - - Cabeçalho - diff --git a/packages/twenty-docs/l/pt/twenty-ui/navigation.mdx b/packages/twenty-docs/l/pt/twenty-ui/navigation.mdx index 5c3636d8cc..3aa6754ddf 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/navigation.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/navigation.mdx @@ -1,6 +1,5 @@ --- title: Navegação -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/pt/twenty-ui/navigation/breadcrumb.mdx b/packages/twenty-docs/l/pt/twenty-ui/navigation/breadcrumb.mdx index ed403ecb68..4de961d5a3 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/navigation/breadcrumb.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/navigation/breadcrumb.mdx @@ -1,6 +1,5 @@ --- title: Trilha de navegação -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/pt/twenty-ui/navigation/links.mdx b/packages/twenty-docs/l/pt/twenty-ui/navigation/links.mdx index d39e0d942a..9db5a1918d 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/navigation/links.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/navigation/links.mdx @@ -1,6 +1,5 @@ --- title: Links -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/pt/twenty-ui/navigation/menu-item.mdx b/packages/twenty-docs/l/pt/twenty-ui/navigation/menu-item.mdx index cd70b48048..af36e7fecc 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/navigation/menu-item.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/navigation/menu-item.mdx @@ -1,11 +1,7 @@ --- title: Entrada de menu -image: /images/user-guide/kanban-views/kanban.png --- - - Cabeçalho - Um item de menu versátil projetado para ser usado em uma lista de menu ou navegação. diff --git a/packages/twenty-docs/l/pt/twenty-ui/navigation/navigation-bar.mdx b/packages/twenty-docs/l/pt/twenty-ui/navigation/navigation-bar.mdx index ec6ffc6b36..a4cc7b2627 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/navigation/navigation-bar.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/navigation/navigation-bar.mdx @@ -1,11 +1,7 @@ --- title: Barra de Navegação -image: /images/user-guide/table-views/table.png --- - - Cabeçalho - Renderiza uma barra de navegação que contém múltiplos componentes `NavigationBarItem`. diff --git a/packages/twenty-docs/l/pt/twenty-ui/navigation/step-bar.mdx b/packages/twenty-docs/l/pt/twenty-ui/navigation/step-bar.mdx index 0f662ed733..66e4f6edb3 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/navigation/step-bar.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/navigation/step-bar.mdx @@ -1,6 +1,5 @@ --- title: Barra de Passos -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/pt/twenty-ui/progress-bar.mdx b/packages/twenty-docs/l/pt/twenty-ui/progress-bar.mdx index 532af7c774..186815e9f3 100644 --- a/packages/twenty-docs/l/pt/twenty-ui/progress-bar.mdx +++ b/packages/twenty-docs/l/pt/twenty-ui/progress-bar.mdx @@ -1,11 +1,7 @@ --- title: Feedback -image: /images/user-guide/emails/emails_header.png --- - - Cabeçalho - Indica progresso ou contagem regressiva e move-se da direita para a esquerda. diff --git a/packages/twenty-docs/l/pt/user-guide/billing/overview.mdx b/packages/twenty-docs/l/pt/user-guide/billing/overview.mdx index 6611f48198..12540890c5 100644 --- a/packages/twenty-docs/l/pt/user-guide/billing/overview.mdx +++ b/packages/twenty-docs/l/pt/user-guide/billing/overview.mdx @@ -1,12 +1,8 @@ --- title: Faturação description: Entenda os preços da Twenty e gerencie sua assinatura. -image: /images/user-guide/setup/pricing.png --- - - Faturação - A Twenty oferece planos de preços flexíveis para atender às necessidades da sua equipe. Gerencie sua assinatura, acompanhe créditos de fluxos de trabalho e acesse faturas, tudo em **Configurações → Cobrança**. diff --git a/packages/twenty-docs/l/pt/user-guide/calendar-emails/overview.mdx b/packages/twenty-docs/l/pt/user-guide/calendar-emails/overview.mdx index 22bc9b02e8..a005c2730e 100644 --- a/packages/twenty-docs/l/pt/user-guide/calendar-emails/overview.mdx +++ b/packages/twenty-docs/l/pt/user-guide/calendar-emails/overview.mdx @@ -1,12 +1,8 @@ --- title: Calendário e emails description: Conecte as suas contas de email e calendário ao Twenty. -image: /images/user-guide/emails/emails_header.png --- - - Calendário e emails - ## Opções de Conexão diff --git a/packages/twenty-docs/l/pt/user-guide/dashboards/overview.mdx b/packages/twenty-docs/l/pt/user-guide/dashboards/overview.mdx index dd7a7cbd7f..f94cefc4da 100644 --- a/packages/twenty-docs/l/pt/user-guide/dashboards/overview.mdx +++ b/packages/twenty-docs/l/pt/user-guide/dashboards/overview.mdx @@ -1,12 +1,8 @@ --- title: Painéis description: Aprenda o básico sobre relatórios e painéis no Twenty. -image: /images/user-guide/reporting/pie-chart.png --- - - Painéis - Os painéis estão atualmente em versão beta. Ative-os em **Configurações → Atualizações → Acesso antecipado**. diff --git a/packages/twenty-docs/l/pt/user-guide/data-migration/overview.mdx b/packages/twenty-docs/l/pt/user-guide/data-migration/overview.mdx index 90aedff17c..bdebe379cc 100644 --- a/packages/twenty-docs/l/pt/user-guide/data-migration/overview.mdx +++ b/packages/twenty-docs/l/pt/user-guide/data-migration/overview.mdx @@ -1,14 +1,10 @@ --- title: Migração de dados description: Importe e exporte os seus dados de CRM através de ficheiros CSV ou da API. -image: /images/user-guide/import-export-data/cloud.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - Migração de dados - ## Métodos de importação diff --git a/packages/twenty-docs/l/pt/user-guide/data-model/overview.mdx b/packages/twenty-docs/l/pt/user-guide/data-model/overview.mdx index 9f58856890..2386139128 100644 --- a/packages/twenty-docs/l/pt/user-guide/data-model/overview.mdx +++ b/packages/twenty-docs/l/pt/user-guide/data-model/overview.mdx @@ -1,12 +1,8 @@ --- title: Modelo de dados description: Saiba o que é um modelo de dados e como projetar um que se ajuste ao seu negócio. -image: /images/user-guide/fields/custom_data_model.png --- - - Modelo de dados - ## O que é um modelo de dados? diff --git a/packages/twenty-docs/l/pt/user-guide/introduction.mdx b/packages/twenty-docs/l/pt/user-guide/introduction.mdx index 2581ac8696..f882b9acb8 100644 --- a/packages/twenty-docs/l/pt/user-guide/introduction.mdx +++ b/packages/twenty-docs/l/pt/user-guide/introduction.mdx @@ -11,51 +11,51 @@ import { CardTitle } from "/snippets/card-title.mdx" Saiba o que é o Twenty e como ele pode ajudar sua empresa. - + Modelo de Dados Personalize seu modelo de dados para se adequar aos processos da sua empresa. - + Migração de Dados Importe e exporte seus dados via CSV ou API. - + Calendário & E-mails Centralize as reuniões e os e-mails da sua equipe. - + Fluxos de trabalho Automatize processos e integre com ferramentas externas. - + IA Aprimore sua equipe com agentes de IA. - + Visualizações & Pipelines Organize seus dados com visualizações e pipelines acionáveis. - + Painéis Insights em tempo real para acompanhar o desempenho. - + Gerencie papéis e o acesso ao Twenty. - + Faturamento Entenda como funcionam os preços e o faturamento do Twenty. - + Configurações Configure as preferências do seu espaço de trabalho. diff --git a/packages/twenty-docs/l/pt/user-guide/permissions-access/capabilities/permissions.mdx b/packages/twenty-docs/l/pt/user-guide/permissions-access/capabilities/permissions.mdx index a5153e6cdd..84b3668385 100644 --- a/packages/twenty-docs/l/pt/user-guide/permissions-access/capabilities/permissions.mdx +++ b/packages/twenty-docs/l/pt/user-guide/permissions-access/capabilities/permissions.mdx @@ -1,7 +1,6 @@ --- title: Permissões description: Controle o acesso a objetos, campos e configurações com permissões baseadas em função. -image: /images/user-guide/permissions/permissions.png --- O sistema de permissões do Twenty permite que você controle o acesso a três áreas principais: diff --git a/packages/twenty-docs/l/pt/user-guide/permissions-access/overview.mdx b/packages/twenty-docs/l/pt/user-guide/permissions-access/overview.mdx index 21f8d5b499..c8dbc92a4c 100644 --- a/packages/twenty-docs/l/pt/user-guide/permissions-access/overview.mdx +++ b/packages/twenty-docs/l/pt/user-guide/permissions-access/overview.mdx @@ -3,9 +3,6 @@ title: Permissões e Acesso description: Gerencie funções, permissões e o controle de acesso no seu espaço de trabalho. --- - - Permissões e Acesso - O sistema de permissões do Twenty permite controlar quem pode acessar e modificar dados no seu espaço de trabalho. Crie funções, atribua permissões e configure SSO para um acesso seguro. diff --git a/packages/twenty-docs/l/pt/user-guide/settings/how-tos/settings-faq.mdx b/packages/twenty-docs/l/pt/user-guide/settings/how-tos/settings-faq.mdx index d049c6805a..b4ea9e735b 100644 --- a/packages/twenty-docs/l/pt/user-guide/settings/how-tos/settings-faq.mdx +++ b/packages/twenty-docs/l/pt/user-guide/settings/how-tos/settings-faq.mdx @@ -1,7 +1,6 @@ --- title: Configurações FAQ description: Perguntas frequentes sobre as configurações do Twenty. -image: /images/user-guide/setup/settings.png --- ## Configurações do Espaço de Trabalho diff --git a/packages/twenty-docs/l/pt/user-guide/settings/overview.mdx b/packages/twenty-docs/l/pt/user-guide/settings/overview.mdx index 0568ff4357..f584f2a059 100644 --- a/packages/twenty-docs/l/pt/user-guide/settings/overview.mdx +++ b/packages/twenty-docs/l/pt/user-guide/settings/overview.mdx @@ -1,12 +1,8 @@ --- title: Configurações description: Configure seu espaço de trabalho Twenty com configurações essenciais. -image: /images/user-guide/setup/settings.png --- - - Configurações - ## Configuração Inicial diff --git a/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/kanban-views.mdx b/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/kanban-views.mdx index 932e3025e1..0b270aa46b 100644 --- a/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/kanban-views.mdx +++ b/packages/twenty-docs/l/pt/user-guide/views-pipelines/capabilities/kanban-views.mdx @@ -1,7 +1,6 @@ --- title: Visualizações do quadro Kanban description: Aprenda a usar as visualizações Kanban para visualizar e gerenciar seus fluxos de trabalho. -image: /images/user-guide/kanban-views/kanban.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; diff --git a/packages/twenty-docs/l/pt/user-guide/views-pipelines/overview.mdx b/packages/twenty-docs/l/pt/user-guide/views-pipelines/overview.mdx index 2d603f1c40..e71e58064f 100644 --- a/packages/twenty-docs/l/pt/user-guide/views-pipelines/overview.mdx +++ b/packages/twenty-docs/l/pt/user-guide/views-pipelines/overview.mdx @@ -1,14 +1,10 @@ --- title: Visualizações e pipelines description: Aprenda a criar e gerenciar visualizações no Twenty. -image: /images/user-guide/table-views/table.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - Visualizações e pipelines - ## Compreendendo as visualizações diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/send-emails-from-workflows.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/send-emails-from-workflows.mdx index 217a46a72b..c0851dedac 100644 --- a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/send-emails-from-workflows.mdx +++ b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/send-emails-from-workflows.mdx @@ -1,7 +1,6 @@ --- title: Enviar e-mails a partir de Fluxos de Trabalho description: Envie e-mails personalizados automaticamente usando ações de Fluxos de Trabalho. -image: /images/user-guide/workflows/workflow.png --- Envie e-mails automaticamente quando eventos específicos ocorrerem no seu CRM — dê boas-vindas a novos contatos, faça acompanhamento de oportunidades ou notifique membros da equipe. diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/use-iterator.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/use-iterator.mdx index 5bb466dde1..51b29a782b 100644 --- a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/use-iterator.mdx +++ b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/use-iterator.mdx @@ -1,7 +1,6 @@ --- title: Usar Iterador description: Percorra arrays de registos para executar ações em cada item. -image: /images/user-guide/workflows/workflow.png --- O Iterador permite percorrer um array de registos e executar ações em cada um. É essencial para fluxos de trabalho que precisam de processar vários registos devolvidos por Pesquisar Registos ou recebidos via Webhooks. diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-runs.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-runs.mdx index 7c0f7d6ebf..4596df0a4c 100644 --- a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-runs.mdx +++ b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-runs.mdx @@ -1,7 +1,6 @@ --- title: Execuções de Workflow description: Monitore e gerencie as execuções de fluxos de trabalho. -image: /images/user-guide/workflows/workflow.png --- ## Sobre Execuções diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-versions.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-versions.mdx index fa8b184cfe..7b70876afc 100644 --- a/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-versions.mdx +++ b/packages/twenty-docs/l/pt/user-guide/workflows/capabilities/workflow-versions.mdx @@ -1,7 +1,6 @@ --- title: Versões de Workflow description: Gerenciar versões e rascunhos de workflow. -image: /images/user-guide/workflows/workflow.png --- ## Sobre versões diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx index 750de324b2..12cbfea1b4 100644 --- a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx +++ b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx @@ -1,7 +1,6 @@ --- title: Configurar um gatilho de Webhook description: Receba dados de serviços externos para acionar fluxos de trabalho. -image: /images/user-guide/workflows/workflow.png --- Gatilhos de Webhook permitem que serviços externos iniciem seus fluxos de trabalho enviando dados para uma URL exclusiva. Use-os para conectar formulários, aplicativos de terceiros e integrações personalizadas. diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/overview.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/overview.mdx index 9d549e29a5..5473595dec 100644 --- a/packages/twenty-docs/l/pt/user-guide/workflows/overview.mdx +++ b/packages/twenty-docs/l/pt/user-guide/workflows/overview.mdx @@ -1,12 +1,8 @@ --- title: Fluxos de trabalho description: Aprenda a criar automações no Twenty. -image: /images/user-guide/workflows/workflow.png --- - - Fluxos de trabalho - ## Por que Workflows Importam diff --git a/packages/twenty-docs/l/ro/twenty-ui/display/app-tooltip.mdx b/packages/twenty-docs/l/ro/twenty-ui/display/app-tooltip.mdx index 634a732e01..b475234202 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/display/app-tooltip.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/display/app-tooltip.mdx @@ -1,6 +1,5 @@ --- title: Sfat aplicație -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/ro/twenty-ui/display/checkmark.mdx b/packages/twenty-docs/l/ro/twenty-ui/display/checkmark.mdx index 65dcf6a4db..37848bb703 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/display/checkmark.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/display/checkmark.mdx @@ -1,6 +1,5 @@ --- title: Bifă -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/ro/twenty-ui/display/chip.mdx b/packages/twenty-docs/l/ro/twenty-ui/display/chip.mdx index 3535d13262..c2c1dbac98 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/display/chip.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/display/chip.mdx @@ -1,6 +1,5 @@ --- title: Chip -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/ro/twenty-ui/display/icons.mdx b/packages/twenty-docs/l/ro/twenty-ui/display/icons.mdx index eb824c6a83..9bbf8128a7 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/display/icons.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/display/icons.mdx @@ -1,6 +1,5 @@ --- title: Pictograme -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/ro/twenty-ui/display/soon-pill.mdx b/packages/twenty-docs/l/ro/twenty-ui/display/soon-pill.mdx index 09f5352a00..1ffea5ffbd 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/display/soon-pill.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/display/soon-pill.mdx @@ -1,11 +1,7 @@ --- title: Pastilă „În curând” -image: /images/user-guide/kanban-views/kanban.png --- - - Antet - O insignă mică sau "pastilă" pentru a indica faptul că ceva este pe cale să vină în curând. diff --git a/packages/twenty-docs/l/ro/twenty-ui/display/tag.mdx b/packages/twenty-docs/l/ro/twenty-ui/display/tag.mdx index 811bef3076..bec971790c 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/display/tag.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/display/tag.mdx @@ -1,11 +1,7 @@ --- title: Etichetă -image: /images/user-guide/table-views/table.png --- - - Antet - Componentă pentru a categoriza vizual sau a eticheta conținutul. diff --git a/packages/twenty-docs/l/ro/twenty-ui/input.mdx b/packages/twenty-docs/l/ro/twenty-ui/input.mdx index 498d999013..9de3eadf3a 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/input.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/input.mdx @@ -1,6 +1,5 @@ --- title: Intrare -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/ro/twenty-ui/input/block-editor.mdx b/packages/twenty-docs/l/ro/twenty-ui/input/block-editor.mdx index 0a5ac4765f..1b9f0d2d48 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/input/block-editor.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/input/block-editor.mdx @@ -1,6 +1,5 @@ --- title: Editor de Blocuri -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/ro/twenty-ui/input/buttons.mdx b/packages/twenty-docs/l/ro/twenty-ui/input/buttons.mdx index 0f44cc7a02..17ee2a94ed 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/input/buttons.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/input/buttons.mdx @@ -1,6 +1,5 @@ --- title: Butoane -image: /images/user-guide/views/filter.png --- diff --git a/packages/twenty-docs/l/ro/twenty-ui/input/checkbox.mdx b/packages/twenty-docs/l/ro/twenty-ui/input/checkbox.mdx index 5118809f85..d20d677732 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/input/checkbox.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/input/checkbox.mdx @@ -1,6 +1,5 @@ --- title: Bifă -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/ro/twenty-ui/input/color-scheme.mdx b/packages/twenty-docs/l/ro/twenty-ui/input/color-scheme.mdx index 74e9d538b9..821c2edbff 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/input/color-scheme.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/input/color-scheme.mdx @@ -1,6 +1,5 @@ --- title: Schema culorilor -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/ro/twenty-ui/input/icon-picker.mdx b/packages/twenty-docs/l/ro/twenty-ui/input/icon-picker.mdx index bb30283736..2279352532 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/input/icon-picker.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/input/icon-picker.mdx @@ -1,6 +1,5 @@ --- title: Selector de iconițe -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/ro/twenty-ui/input/image-input.mdx b/packages/twenty-docs/l/ro/twenty-ui/input/image-input.mdx index 28ababc88a..9c256cbe7a 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/input/image-input.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/input/image-input.mdx @@ -1,6 +1,5 @@ --- title: Intrare imagine -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/ro/twenty-ui/input/radio.mdx b/packages/twenty-docs/l/ro/twenty-ui/input/radio.mdx index 767a5517fb..a7b2161858 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/input/radio.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/input/radio.mdx @@ -1,6 +1,5 @@ --- title: Radio -image: /images/user-guide/create-workspace/workspace-cover.png --- diff --git a/packages/twenty-docs/l/ro/twenty-ui/input/select.mdx b/packages/twenty-docs/l/ro/twenty-ui/input/select.mdx index 7a4337ab18..c3bd5c2cfc 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/input/select.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/input/select.mdx @@ -1,6 +1,5 @@ --- title: Selectați -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/ro/twenty-ui/input/text.mdx b/packages/twenty-docs/l/ro/twenty-ui/input/text.mdx index 282cda6475..e279fb9cad 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/input/text.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/input/text.mdx @@ -1,6 +1,5 @@ --- title: Text -image: /images/user-guide/notes/notes_header.png --- diff --git a/packages/twenty-docs/l/ro/twenty-ui/input/toggle.mdx b/packages/twenty-docs/l/ro/twenty-ui/input/toggle.mdx index 702a40e5e3..73095e1796 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/input/toggle.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/input/toggle.mdx @@ -1,11 +1,7 @@ --- title: Comutare -image: /images/user-guide/table-views/table.png --- - - Antet - diff --git a/packages/twenty-docs/l/ro/twenty-ui/navigation.mdx b/packages/twenty-docs/l/ro/twenty-ui/navigation.mdx index c9d30e0f29..6958dab5bc 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/navigation.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/navigation.mdx @@ -1,6 +1,5 @@ --- title: Navigare -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/ro/twenty-ui/navigation/breadcrumb.mdx b/packages/twenty-docs/l/ro/twenty-ui/navigation/breadcrumb.mdx index 0e69202f8b..8bbf51c13b 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/navigation/breadcrumb.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/navigation/breadcrumb.mdx @@ -1,6 +1,5 @@ --- title: Firimituri de navigare -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/ro/twenty-ui/navigation/links.mdx b/packages/twenty-docs/l/ro/twenty-ui/navigation/links.mdx index 491054b528..7d562016db 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/navigation/links.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/navigation/links.mdx @@ -1,6 +1,5 @@ --- title: Linkuri -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/ro/twenty-ui/navigation/menu-item.mdx b/packages/twenty-docs/l/ro/twenty-ui/navigation/menu-item.mdx index f33fe3ab1b..e44c1dc18a 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/navigation/menu-item.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/navigation/menu-item.mdx @@ -1,11 +1,7 @@ --- title: Element de meniu -image: /images/user-guide/kanban-views/kanban.png --- - - Antet - Un element de meniu versatil, conceput pentru a fi utilizat într-un meniu sau listă de navigare. diff --git a/packages/twenty-docs/l/ro/twenty-ui/navigation/navigation-bar.mdx b/packages/twenty-docs/l/ro/twenty-ui/navigation/navigation-bar.mdx index c838360e86..23b1058c78 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/navigation/navigation-bar.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/navigation/navigation-bar.mdx @@ -1,11 +1,7 @@ --- title: Bară de navigare -image: /images/user-guide/table-views/table.png --- - - Antet - Redă o bară de navigare care conține mai multe componente `NavigationBarItem`. diff --git a/packages/twenty-docs/l/ro/twenty-ui/navigation/step-bar.mdx b/packages/twenty-docs/l/ro/twenty-ui/navigation/step-bar.mdx index 8d48d6cfed..96530beb84 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/navigation/step-bar.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/navigation/step-bar.mdx @@ -1,6 +1,5 @@ --- title: Bară de pași -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/ro/twenty-ui/progress-bar.mdx b/packages/twenty-docs/l/ro/twenty-ui/progress-bar.mdx index e0794fc3a3..a14a4e12ab 100644 --- a/packages/twenty-docs/l/ro/twenty-ui/progress-bar.mdx +++ b/packages/twenty-docs/l/ro/twenty-ui/progress-bar.mdx @@ -1,11 +1,7 @@ --- title: Feedback -image: /images/user-guide/emails/emails_header.png --- - - Antet - Indică progresul sau numărătoarea inversă și se mișcă de la dreapta la stânga. diff --git a/packages/twenty-docs/l/ro/user-guide/billing/overview.mdx b/packages/twenty-docs/l/ro/user-guide/billing/overview.mdx index 77893b7e70..f54cd9ce28 100644 --- a/packages/twenty-docs/l/ro/user-guide/billing/overview.mdx +++ b/packages/twenty-docs/l/ro/user-guide/billing/overview.mdx @@ -1,12 +1,8 @@ --- title: Facturare description: Înțelegeți prețurile Twenty și gestionați-vă abonamentul. -image: /images/user-guide/setup/pricing.png --- - - Facturare - Twenty oferă planuri de preț flexibile care se potrivesc nevoilor echipei dvs. Gestionați-vă abonamentul, urmăriți creditele pentru fluxuri de lucru și accesați facturile, toate din **Setări → Facturare**. diff --git a/packages/twenty-docs/l/ro/user-guide/calendar-emails/overview.mdx b/packages/twenty-docs/l/ro/user-guide/calendar-emails/overview.mdx index 0d360fb74d..7eab80ee0f 100644 --- a/packages/twenty-docs/l/ro/user-guide/calendar-emails/overview.mdx +++ b/packages/twenty-docs/l/ro/user-guide/calendar-emails/overview.mdx @@ -1,12 +1,8 @@ --- title: Calendar și e-mailuri description: Conectați-vă conturile de e-mail și calendar la Twenty. -image: /images/user-guide/emails/emails_header.png --- - - Calendar și e-mailuri - ## Opțiuni de Conexiune diff --git a/packages/twenty-docs/l/ro/user-guide/dashboards/overview.mdx b/packages/twenty-docs/l/ro/user-guide/dashboards/overview.mdx index 342c031884..1d388e5d4e 100644 --- a/packages/twenty-docs/l/ro/user-guide/dashboards/overview.mdx +++ b/packages/twenty-docs/l/ro/user-guide/dashboards/overview.mdx @@ -1,12 +1,8 @@ --- title: Tablouri de Bord description: Învățați noțiunile de bază despre raportare și tablouri de bord în Twenty. -image: /images/user-guide/reporting/pie-chart.png --- - - Tablouri de Bord - Tablourile de bord sunt în prezent în versiune beta. Activați-le din **Setări → Actualizări → Acces timpuriu**. diff --git a/packages/twenty-docs/l/ro/user-guide/data-migration/overview.mdx b/packages/twenty-docs/l/ro/user-guide/data-migration/overview.mdx index 1c38a945ec..c25b11fb19 100644 --- a/packages/twenty-docs/l/ro/user-guide/data-migration/overview.mdx +++ b/packages/twenty-docs/l/ro/user-guide/data-migration/overview.mdx @@ -1,14 +1,10 @@ --- title: Migrarea datelor description: Importați și exportați datele CRM prin fișiere CSV sau API. -image: /images/user-guide/import-export-data/cloud.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - Migrarea datelor - ## Metode de import diff --git a/packages/twenty-docs/l/ro/user-guide/data-model/overview.mdx b/packages/twenty-docs/l/ro/user-guide/data-model/overview.mdx index ffcee4228e..e829b52aff 100644 --- a/packages/twenty-docs/l/ro/user-guide/data-model/overview.mdx +++ b/packages/twenty-docs/l/ro/user-guide/data-model/overview.mdx @@ -1,12 +1,8 @@ --- title: Model de date description: Află ce este un model de date și cum să proiectezi unul care se potrivește afacerii tale. -image: /images/user-guide/fields/custom_data_model.png --- - - Model de date - ## Ce este un model de date? diff --git a/packages/twenty-docs/l/ro/user-guide/introduction.mdx b/packages/twenty-docs/l/ro/user-guide/introduction.mdx index 5968348def..c8a397d2de 100644 --- a/packages/twenty-docs/l/ro/user-guide/introduction.mdx +++ b/packages/twenty-docs/l/ro/user-guide/introduction.mdx @@ -11,52 +11,52 @@ import { CardTitle } from "/snippets/card-title.mdx" Aflați ce este Twenty și cum vă poate ajuta afacerea. - + Model de date Personalizați modelul de date pentru a se potrivi proceselor dvs. de afaceri. - + Migrarea datelor Importați și exportați datele prin CSV sau API. - + Calendar și e-mailuri Centralizați întâlnirile și e-mailurile echipei. - + Fluxuri de lucru Automatizați procesele și integrați cu instrumente externe. - + IA Îmbunătățiți-vă echipa cu agenți IA. - + Vizualizări și pipeline-uri Organizați-vă datele cu vizualizări acționabile și pipeline-uri. - + Tablouri de bord Perspective în timp real pentru a urmări performanța. - + Permisiuni și acces Gestionați rolurile și accesul la Twenty. - + Facturare Înțelegeți cum funcționează prețurile și facturarea în Twenty. - + Setări Configurați preferințele spațiului de lucru. diff --git a/packages/twenty-docs/l/ro/user-guide/permissions-access/capabilities/permissions.mdx b/packages/twenty-docs/l/ro/user-guide/permissions-access/capabilities/permissions.mdx index 39e722549a..53889b6dc5 100644 --- a/packages/twenty-docs/l/ro/user-guide/permissions-access/capabilities/permissions.mdx +++ b/packages/twenty-docs/l/ro/user-guide/permissions-access/capabilities/permissions.mdx @@ -1,7 +1,6 @@ --- title: Permisiuni description: Controlați accesul la obiecte, câmpuri și setări cu permisiuni bazate pe roluri. -image: /images/user-guide/permissions/permissions.png --- Sistemul de permisiuni al Twenty vă permite să controlați accesul la trei domenii principale: diff --git a/packages/twenty-docs/l/ro/user-guide/permissions-access/overview.mdx b/packages/twenty-docs/l/ro/user-guide/permissions-access/overview.mdx index f7f443a0ee..8867af2aa3 100644 --- a/packages/twenty-docs/l/ro/user-guide/permissions-access/overview.mdx +++ b/packages/twenty-docs/l/ro/user-guide/permissions-access/overview.mdx @@ -3,9 +3,6 @@ title: Permisiuni și acces description: Gestionați rolurile, permisiunile și controlul accesului în spațiul dvs. de lucru. --- - - Permisiuni și acces - Sistemul de permisiuni Twenty vă permite să controlați cine poate accesa și modifica datele din spațiul dvs. de lucru. Creați roluri, atribuiți permisiuni și configurați SSO pentru acces securizat. diff --git a/packages/twenty-docs/l/ro/user-guide/settings/how-tos/settings-faq.mdx b/packages/twenty-docs/l/ro/user-guide/settings/how-tos/settings-faq.mdx index c5a745e907..e5d2e06165 100644 --- a/packages/twenty-docs/l/ro/user-guide/settings/how-tos/settings-faq.mdx +++ b/packages/twenty-docs/l/ro/user-guide/settings/how-tos/settings-faq.mdx @@ -1,7 +1,6 @@ --- title: Întrebări frecvente privind setările description: Întrebări frecvente despre setările Twenty. -image: /images/user-guide/setup/settings.png --- ## Setări Spațiu de Lucru diff --git a/packages/twenty-docs/l/ro/user-guide/settings/overview.mdx b/packages/twenty-docs/l/ro/user-guide/settings/overview.mdx index e815b50b45..911e05366a 100644 --- a/packages/twenty-docs/l/ro/user-guide/settings/overview.mdx +++ b/packages/twenty-docs/l/ro/user-guide/settings/overview.mdx @@ -1,12 +1,8 @@ --- title: Setări description: Configurați spațiul de lucru Twenty cu configurările esențiale. -image: /images/user-guide/setup/settings.png --- - - Setări - ## Configurare inițială diff --git a/packages/twenty-docs/l/ro/user-guide/views-pipelines/capabilities/kanban-views.mdx b/packages/twenty-docs/l/ro/user-guide/views-pipelines/capabilities/kanban-views.mdx index dff3dcd874..28ef475076 100644 --- a/packages/twenty-docs/l/ro/user-guide/views-pipelines/capabilities/kanban-views.mdx +++ b/packages/twenty-docs/l/ro/user-guide/views-pipelines/capabilities/kanban-views.mdx @@ -1,7 +1,6 @@ --- title: Vizualizări pentru tabloul Kanban description: Aflați cum să utilizați vizualizările Kanban pentru a vizualiza și gestiona fluxurile de lucru. -image: /images/user-guide/kanban-views/kanban.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; diff --git a/packages/twenty-docs/l/ro/user-guide/views-pipelines/overview.mdx b/packages/twenty-docs/l/ro/user-guide/views-pipelines/overview.mdx index 0c592cf6e2..e2d9457958 100644 --- a/packages/twenty-docs/l/ro/user-guide/views-pipelines/overview.mdx +++ b/packages/twenty-docs/l/ro/user-guide/views-pipelines/overview.mdx @@ -1,14 +1,10 @@ --- title: Vizualizări și fluxuri description: Aflați cum să creați și să gestionați vizualizările în Twenty. -image: /images/user-guide/table-views/table.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - Vizualizări și fluxuri - ## Înțelegerea vizualizărilor diff --git a/packages/twenty-docs/l/ro/user-guide/workflows/capabilities/send-emails-from-workflows.mdx b/packages/twenty-docs/l/ro/user-guide/workflows/capabilities/send-emails-from-workflows.mdx index 8dd623d34d..87febd03ef 100644 --- a/packages/twenty-docs/l/ro/user-guide/workflows/capabilities/send-emails-from-workflows.mdx +++ b/packages/twenty-docs/l/ro/user-guide/workflows/capabilities/send-emails-from-workflows.mdx @@ -1,7 +1,6 @@ --- title: Trimiterea e-mailurilor prin fluxuri de lucru description: Trimiteți automat e-mailuri personalizate folosind acțiunile fluxurilor de lucru. -image: /images/user-guide/workflows/workflow.png --- Trimiteți automat e-mailuri atunci când au loc evenimente specifice în CRM—întâmpinați noile contacte, urmăriți oportunitățile sau notificați membrii echipei. diff --git a/packages/twenty-docs/l/ro/user-guide/workflows/capabilities/use-iterator.mdx b/packages/twenty-docs/l/ro/user-guide/workflows/capabilities/use-iterator.mdx index 3bfc255cc6..b36b3a329d 100644 --- a/packages/twenty-docs/l/ro/user-guide/workflows/capabilities/use-iterator.mdx +++ b/packages/twenty-docs/l/ro/user-guide/workflows/capabilities/use-iterator.mdx @@ -1,7 +1,6 @@ --- title: Utilizați Iterator description: Parcurgeți array-uri de înregistrări pentru a executa acțiuni asupra fiecărui element. -image: /images/user-guide/workflows/workflow.png --- Iterator vă permite să parcurgeți un array de înregistrări și să efectuați acțiuni pe fiecare în parte. Este esențial pentru fluxuri de lucru care trebuie să proceseze mai multe înregistrări returnate de Search Records sau primite prin webhook-uri. diff --git a/packages/twenty-docs/l/ro/user-guide/workflows/capabilities/workflow-runs.mdx b/packages/twenty-docs/l/ro/user-guide/workflows/capabilities/workflow-runs.mdx index f14a642a4c..f00b14e35a 100644 --- a/packages/twenty-docs/l/ro/user-guide/workflows/capabilities/workflow-runs.mdx +++ b/packages/twenty-docs/l/ro/user-guide/workflows/capabilities/workflow-runs.mdx @@ -1,7 +1,6 @@ --- title: Rulările fluxului de lucru description: Monitorizați și gestionați execuțiile fluxurilor de lucru. -image: /images/user-guide/workflows/workflow.png --- ## Despre Rulări diff --git a/packages/twenty-docs/l/ro/user-guide/workflows/capabilities/workflow-versions.mdx b/packages/twenty-docs/l/ro/user-guide/workflows/capabilities/workflow-versions.mdx index 672c215043..5f678dec3a 100644 --- a/packages/twenty-docs/l/ro/user-guide/workflows/capabilities/workflow-versions.mdx +++ b/packages/twenty-docs/l/ro/user-guide/workflows/capabilities/workflow-versions.mdx @@ -1,7 +1,6 @@ --- title: Versiunile fluxului de lucru description: Gestionați versiunile și schițele fluxului de lucru. -image: /images/user-guide/workflows/workflow.png --- ## Despre versiuni diff --git a/packages/twenty-docs/l/ro/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx b/packages/twenty-docs/l/ro/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx index 9a54c12abd..905569bcce 100644 --- a/packages/twenty-docs/l/ro/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx +++ b/packages/twenty-docs/l/ro/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx @@ -1,7 +1,6 @@ --- title: Configurați un declanșator webhook description: Primiți date de la servicii externe pentru a declanșa fluxuri de lucru. -image: /images/user-guide/workflows/workflow.png --- Declanșatoarele webhook permit serviciilor externe să pornească fluxurile dvs. de lucru trimițând date către un URL unic. Folosiți-le pentru a conecta formulare, aplicații terțe și integrări personalizate. diff --git a/packages/twenty-docs/l/ro/user-guide/workflows/overview.mdx b/packages/twenty-docs/l/ro/user-guide/workflows/overview.mdx index 63f1e54c64..09fd4a15c3 100644 --- a/packages/twenty-docs/l/ro/user-guide/workflows/overview.mdx +++ b/packages/twenty-docs/l/ro/user-guide/workflows/overview.mdx @@ -1,12 +1,8 @@ --- title: Fluxuri de lucru description: Aflați cum să creați automatizări în Twenty. -image: /images/user-guide/workflows/workflow.png --- - - Fluxuri de lucru - ## De ce Contează Fluxurile de Lucru diff --git a/packages/twenty-docs/l/ru/twenty-ui/display/app-tooltip.mdx b/packages/twenty-docs/l/ru/twenty-ui/display/app-tooltip.mdx index 7bfa52243c..9647c3e0d3 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/display/app-tooltip.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/display/app-tooltip.mdx @@ -1,6 +1,5 @@ --- title: Подсказка приложения -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/ru/twenty-ui/display/checkmark.mdx b/packages/twenty-docs/l/ru/twenty-ui/display/checkmark.mdx index 98f194f863..7ed039222a 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/display/checkmark.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/display/checkmark.mdx @@ -1,6 +1,5 @@ --- title: Галочка -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/ru/twenty-ui/display/chip.mdx b/packages/twenty-docs/l/ru/twenty-ui/display/chip.mdx index 2fb7e7204c..930d8f5e6d 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/display/chip.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/display/chip.mdx @@ -1,6 +1,5 @@ --- title: Чип -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/ru/twenty-ui/display/icons.mdx b/packages/twenty-docs/l/ru/twenty-ui/display/icons.mdx index c0096c29c9..4f8e3df6a4 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/display/icons.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/display/icons.mdx @@ -1,6 +1,5 @@ --- title: Иконки -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/ru/twenty-ui/display/soon-pill.mdx b/packages/twenty-docs/l/ru/twenty-ui/display/soon-pill.mdx index 90f6078e03..11309e50ef 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/display/soon-pill.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/display/soon-pill.mdx @@ -1,11 +1,7 @@ --- title: Плашка «Скоро» -image: /images/user-guide/kanban-views/kanban.png --- - - Заголовок - Небольшой значок или «таблетка» для обозначения того, что скоро будет. diff --git a/packages/twenty-docs/l/ru/twenty-ui/display/tag.mdx b/packages/twenty-docs/l/ru/twenty-ui/display/tag.mdx index 037fe470b9..ea5ab2a807 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/display/tag.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/display/tag.mdx @@ -1,11 +1,7 @@ --- title: Тег -image: /images/user-guide/table-views/table.png --- - - Заголовок - Компонент для визуального категорирования или маркировки контента. diff --git a/packages/twenty-docs/l/ru/twenty-ui/input.mdx b/packages/twenty-docs/l/ru/twenty-ui/input.mdx index b68cf37afb..4c541f25fd 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/input.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/input.mdx @@ -1,6 +1,5 @@ --- title: Ввод -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/ru/twenty-ui/input/block-editor.mdx b/packages/twenty-docs/l/ru/twenty-ui/input/block-editor.mdx index 0be34beccb..d7fa52ffa4 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/input/block-editor.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/input/block-editor.mdx @@ -1,6 +1,5 @@ --- title: Блочный редактор -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/ru/twenty-ui/input/buttons.mdx b/packages/twenty-docs/l/ru/twenty-ui/input/buttons.mdx index ddfad3a06c..9cb722a53c 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/input/buttons.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/input/buttons.mdx @@ -1,6 +1,5 @@ --- title: Кнопки -image: /images/user-guide/views/filter.png --- diff --git a/packages/twenty-docs/l/ru/twenty-ui/input/checkbox.mdx b/packages/twenty-docs/l/ru/twenty-ui/input/checkbox.mdx index eb1f7c43ca..01c17a92e5 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/input/checkbox.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/input/checkbox.mdx @@ -1,6 +1,5 @@ --- title: Флажок -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/ru/twenty-ui/input/color-scheme.mdx b/packages/twenty-docs/l/ru/twenty-ui/input/color-scheme.mdx index 77734a148e..97966c55ee 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/input/color-scheme.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/input/color-scheme.mdx @@ -1,6 +1,5 @@ --- title: Цветовая Схема -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/ru/twenty-ui/input/icon-picker.mdx b/packages/twenty-docs/l/ru/twenty-ui/input/icon-picker.mdx index ed3f5a39e9..bbda3f363a 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/input/icon-picker.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/input/icon-picker.mdx @@ -1,6 +1,5 @@ --- title: Выбор иконки -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/ru/twenty-ui/input/image-input.mdx b/packages/twenty-docs/l/ru/twenty-ui/input/image-input.mdx index ab29866e7c..3118f1f360 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/input/image-input.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/input/image-input.mdx @@ -1,6 +1,5 @@ --- title: Ввод изображения -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/ru/twenty-ui/input/radio.mdx b/packages/twenty-docs/l/ru/twenty-ui/input/radio.mdx index a7400138ed..f70a667d0a 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/input/radio.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/input/radio.mdx @@ -1,6 +1,5 @@ --- title: Радио -image: /images/user-guide/create-workspace/workspace-cover.png --- diff --git a/packages/twenty-docs/l/ru/twenty-ui/input/select.mdx b/packages/twenty-docs/l/ru/twenty-ui/input/select.mdx index 14559be32d..3a1eb2f1c9 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/input/select.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/input/select.mdx @@ -1,6 +1,5 @@ --- title: Выбрать -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/ru/twenty-ui/input/text.mdx b/packages/twenty-docs/l/ru/twenty-ui/input/text.mdx index a038ac4c25..7c20d6d7b7 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/input/text.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/input/text.mdx @@ -1,6 +1,5 @@ --- title: Текст -image: /images/user-guide/notes/notes_header.png --- diff --git a/packages/twenty-docs/l/ru/twenty-ui/input/toggle.mdx b/packages/twenty-docs/l/ru/twenty-ui/input/toggle.mdx index 28846afa66..2d16e206fb 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/input/toggle.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/input/toggle.mdx @@ -1,11 +1,7 @@ --- title: Переключатель -image: /images/user-guide/table-views/table.png --- - - Заголовок - diff --git a/packages/twenty-docs/l/ru/twenty-ui/navigation.mdx b/packages/twenty-docs/l/ru/twenty-ui/navigation.mdx index 5d707e554c..a39343bf59 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/navigation.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/navigation.mdx @@ -1,6 +1,5 @@ --- title: Навигация -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/ru/twenty-ui/navigation/breadcrumb.mdx b/packages/twenty-docs/l/ru/twenty-ui/navigation/breadcrumb.mdx index 03e3dd85c5..7da36e4aca 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/navigation/breadcrumb.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/navigation/breadcrumb.mdx @@ -1,6 +1,5 @@ --- title: Хлебные крошки -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/ru/twenty-ui/navigation/links.mdx b/packages/twenty-docs/l/ru/twenty-ui/navigation/links.mdx index 6c4b324e4a..005979e5ec 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/navigation/links.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/navigation/links.mdx @@ -1,6 +1,5 @@ --- title: Ссылки -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/ru/twenty-ui/navigation/menu-item.mdx b/packages/twenty-docs/l/ru/twenty-ui/navigation/menu-item.mdx index 337014f837..6fb321ab19 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/navigation/menu-item.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/navigation/menu-item.mdx @@ -1,11 +1,7 @@ --- title: Пункт меню -image: /images/user-guide/kanban-views/kanban.png --- - - Заголовок - Универсальный пункт меню, предназначенный для использования в меню или списке навигации. diff --git a/packages/twenty-docs/l/ru/twenty-ui/navigation/navigation-bar.mdx b/packages/twenty-docs/l/ru/twenty-ui/navigation/navigation-bar.mdx index 76e8816967..80f5f0d45d 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/navigation/navigation-bar.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/navigation/navigation-bar.mdx @@ -1,11 +1,7 @@ --- title: Панель навигации -image: /images/user-guide/table-views/table.png --- - - Заголовок - Отображает панель навигации, содержащую несколько компонентов `NavigationBarItem`. diff --git a/packages/twenty-docs/l/ru/twenty-ui/navigation/step-bar.mdx b/packages/twenty-docs/l/ru/twenty-ui/navigation/step-bar.mdx index 32325dc816..6ffd16c2e3 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/navigation/step-bar.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/navigation/step-bar.mdx @@ -1,6 +1,5 @@ --- title: Шаговая панель -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/ru/twenty-ui/progress-bar.mdx b/packages/twenty-docs/l/ru/twenty-ui/progress-bar.mdx index 320245796e..ddc6a88ae1 100644 --- a/packages/twenty-docs/l/ru/twenty-ui/progress-bar.mdx +++ b/packages/twenty-docs/l/ru/twenty-ui/progress-bar.mdx @@ -1,11 +1,7 @@ --- title: Обратная связь -image: /images/user-guide/emails/emails_header.png --- - - Заголовок - Указывает на прогресс или обратный отсчет и перемещается справа налево. diff --git a/packages/twenty-docs/l/ru/user-guide/billing/overview.mdx b/packages/twenty-docs/l/ru/user-guide/billing/overview.mdx index ea77103965..ca4945edaf 100644 --- a/packages/twenty-docs/l/ru/user-guide/billing/overview.mdx +++ b/packages/twenty-docs/l/ru/user-guide/billing/overview.mdx @@ -1,12 +1,8 @@ --- title: Биллинг description: Разберитесь в тарифах Twenty и управляйте своей подпиской. -image: /images/user-guide/setup/pricing.png --- - - Биллинг - Twenty предлагает гибкие тарифные планы, соответствующие потребностям вашей команды. Управляйте подпиской, отслеживайте кредиты рабочих процессов и получайте доступ к счетам — всё в **Настройки → Выставление счетов**. diff --git a/packages/twenty-docs/l/ru/user-guide/calendar-emails/overview.mdx b/packages/twenty-docs/l/ru/user-guide/calendar-emails/overview.mdx index 4d707e9936..a226126ba3 100644 --- a/packages/twenty-docs/l/ru/user-guide/calendar-emails/overview.mdx +++ b/packages/twenty-docs/l/ru/user-guide/calendar-emails/overview.mdx @@ -1,12 +1,8 @@ --- title: Календарь и электронная почта description: Подключите свои учетные записи электронной почты и календаря к Twenty. -image: /images/user-guide/emails/emails_header.png --- - - Календарь и электронная почта - ## Параметры подключения diff --git a/packages/twenty-docs/l/ru/user-guide/dashboards/overview.mdx b/packages/twenty-docs/l/ru/user-guide/dashboards/overview.mdx index 7d73585d87..34e03fc313 100644 --- a/packages/twenty-docs/l/ru/user-guide/dashboards/overview.mdx +++ b/packages/twenty-docs/l/ru/user-guide/dashboards/overview.mdx @@ -1,12 +1,8 @@ --- title: Панели управления description: Изучите основы отчетности и панелей мониторинга в Twenty. -image: /images/user-guide/reporting/pie-chart.png --- - - Панели управления - Дашборды сейчас в бета-версии. Активируйте их в разделе **Настройки → Обновления → Ранний доступ**. diff --git a/packages/twenty-docs/l/ru/user-guide/data-migration/overview.mdx b/packages/twenty-docs/l/ru/user-guide/data-migration/overview.mdx index 04d06ddfa6..a20b436c2a 100644 --- a/packages/twenty-docs/l/ru/user-guide/data-migration/overview.mdx +++ b/packages/twenty-docs/l/ru/user-guide/data-migration/overview.mdx @@ -1,14 +1,10 @@ --- title: Data Migration description: Импортируйте и экспортируйте данные вашей CRM через файлы CSV или API. -image: /images/user-guide/import-export-data/cloud.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - Миграция данных - ## Способы импорта diff --git a/packages/twenty-docs/l/ru/user-guide/data-model/overview.mdx b/packages/twenty-docs/l/ru/user-guide/data-model/overview.mdx index 66c16c65b0..72372e9001 100644 --- a/packages/twenty-docs/l/ru/user-guide/data-model/overview.mdx +++ b/packages/twenty-docs/l/ru/user-guide/data-model/overview.mdx @@ -1,12 +1,8 @@ --- title: Модель данных description: Узнайте, что такое модель данных и как спроектировать её под ваш бизнес. -image: /images/user-guide/fields/custom_data_model.png --- - - Модель данных - ## Что такое модель данных? diff --git a/packages/twenty-docs/l/ru/user-guide/introduction.mdx b/packages/twenty-docs/l/ru/user-guide/introduction.mdx index 031ab4f2d1..0aaedf0d42 100644 --- a/packages/twenty-docs/l/ru/user-guide/introduction.mdx +++ b/packages/twenty-docs/l/ru/user-guide/introduction.mdx @@ -11,52 +11,52 @@ import { CardTitle } from "/snippets/card-title.mdx" Узнайте, что такое Twenty и как она может помочь вашему бизнесу. - + Модель данных Настройте модель данных под процессы вашего бизнеса. - + Миграция данных Импортируйте и экспортируйте свои данные в CSV или через API. - + Календарь и электронная почта Соберите встречи и письма вашей команды в одном месте. - + Рабочие процессы Автоматизируйте процессы и интегрируйте с внешними инструментами. - + ИИ Усильте команду агентами ИИ. - + Представления и воронки Организуйте данные с помощью рабочих представлений и воронок. - + Панели управления Аналитика в реальном времени для отслеживания эффективности. - + Разрешения и доступ Управляйте ролями и доступом к Twenty. - + Выставление счетов Разберитесь, как устроены цены и выставление счетов в Twenty. - + Настройки Настройте параметры рабочего пространства. diff --git a/packages/twenty-docs/l/ru/user-guide/permissions-access/capabilities/permissions.mdx b/packages/twenty-docs/l/ru/user-guide/permissions-access/capabilities/permissions.mdx index 1626af36e9..f1c5eb41d8 100644 --- a/packages/twenty-docs/l/ru/user-guide/permissions-access/capabilities/permissions.mdx +++ b/packages/twenty-docs/l/ru/user-guide/permissions-access/capabilities/permissions.mdx @@ -1,7 +1,6 @@ --- title: Разрешения description: Управляйте доступом к объектам, полям и настройкам с помощью разрешений на основе ролей. -image: /images/user-guide/permissions/permissions.png --- Система разрешений Twenty позволяет вам контролировать доступ к трем основным областям: diff --git a/packages/twenty-docs/l/ru/user-guide/permissions-access/overview.mdx b/packages/twenty-docs/l/ru/user-guide/permissions-access/overview.mdx index 683c5d7133..29df2beea4 100644 --- a/packages/twenty-docs/l/ru/user-guide/permissions-access/overview.mdx +++ b/packages/twenty-docs/l/ru/user-guide/permissions-access/overview.mdx @@ -3,9 +3,6 @@ title: Permissions & Access description: Управляйте ролями, разрешениями и контролем доступа в вашем рабочем пространстве. --- - - Разрешения и доступ - Система разрешений Twenty позволяет контролировать, кто может получать доступ и изменять данные в вашем рабочем пространстве. Создавайте роли, назначайте разрешения и настраивайте SSO для безопасного доступа. diff --git a/packages/twenty-docs/l/ru/user-guide/settings/how-tos/settings-faq.mdx b/packages/twenty-docs/l/ru/user-guide/settings/how-tos/settings-faq.mdx index 2ed3d40b4c..eeb576626e 100644 --- a/packages/twenty-docs/l/ru/user-guide/settings/how-tos/settings-faq.mdx +++ b/packages/twenty-docs/l/ru/user-guide/settings/how-tos/settings-faq.mdx @@ -1,7 +1,6 @@ --- title: Настройки FAQ description: Часто задаваемые вопросы о настройках Twenty. -image: /images/user-guide/setup/settings.png --- ## Настройки рабочей области diff --git a/packages/twenty-docs/l/ru/user-guide/settings/overview.mdx b/packages/twenty-docs/l/ru/user-guide/settings/overview.mdx index ef96452574..cef90b21cc 100644 --- a/packages/twenty-docs/l/ru/user-guide/settings/overview.mdx +++ b/packages/twenty-docs/l/ru/user-guide/settings/overview.mdx @@ -1,12 +1,8 @@ --- title: Настройки description: Настройте рабочее пространство Twenty с основными настройками. -image: /images/user-guide/setup/settings.png --- - - Настройки - ## Начальная настройка diff --git a/packages/twenty-docs/l/ru/user-guide/views-pipelines/capabilities/kanban-views.mdx b/packages/twenty-docs/l/ru/user-guide/views-pipelines/capabilities/kanban-views.mdx index 0fbf4d23ab..f59254e4ae 100644 --- a/packages/twenty-docs/l/ru/user-guide/views-pipelines/capabilities/kanban-views.mdx +++ b/packages/twenty-docs/l/ru/user-guide/views-pipelines/capabilities/kanban-views.mdx @@ -1,7 +1,6 @@ --- title: Представления канбан-доски description: Узнайте, как использовать канбан-представления для визуализации и управления вашими рабочими процессами. -image: /images/user-guide/kanban-views/kanban.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; diff --git a/packages/twenty-docs/l/ru/user-guide/views-pipelines/overview.mdx b/packages/twenty-docs/l/ru/user-guide/views-pipelines/overview.mdx index 1037ff17e7..39b19e7157 100644 --- a/packages/twenty-docs/l/ru/user-guide/views-pipelines/overview.mdx +++ b/packages/twenty-docs/l/ru/user-guide/views-pipelines/overview.mdx @@ -1,14 +1,10 @@ --- title: Views & Pipelines description: Узнайте, как создавать и управлять представлениями в Twenty. -image: /images/user-guide/table-views/table.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - Представления и воронки - ## Понимание представлений diff --git a/packages/twenty-docs/l/ru/user-guide/workflows/capabilities/send-emails-from-workflows.mdx b/packages/twenty-docs/l/ru/user-guide/workflows/capabilities/send-emails-from-workflows.mdx index 2bf7a27811..8b14b63f07 100644 --- a/packages/twenty-docs/l/ru/user-guide/workflows/capabilities/send-emails-from-workflows.mdx +++ b/packages/twenty-docs/l/ru/user-guide/workflows/capabilities/send-emails-from-workflows.mdx @@ -1,7 +1,6 @@ --- title: Отправка писем через рабочие процессы description: Отправляйте персонализированные письма автоматически с помощью действий рабочего процесса. -image: /images/user-guide/workflows/workflow.png --- Автоматически отправляйте письма при наступлении определённых событий в вашей CRM — приветствуйте новых контактов, делайте последующие касания по возможностям или уведомляйте членов команды. diff --git a/packages/twenty-docs/l/ru/user-guide/workflows/capabilities/use-iterator.mdx b/packages/twenty-docs/l/ru/user-guide/workflows/capabilities/use-iterator.mdx index 5a7f166ff5..a492e6d3a0 100644 --- a/packages/twenty-docs/l/ru/user-guide/workflows/capabilities/use-iterator.mdx +++ b/packages/twenty-docs/l/ru/user-guide/workflows/capabilities/use-iterator.mdx @@ -1,7 +1,6 @@ --- title: Использование итератора description: Перебирайте массивы записей и выполняйте действия для каждого элемента. -image: /images/user-guide/workflows/workflow.png --- Итератор позволяет перебирать массив записей и выполнять действия для каждой из них. Он необходим для рабочих процессов, которым нужно обрабатывать несколько записей, возвращённых действием Search Records или полученных через вебхуки. diff --git a/packages/twenty-docs/l/ru/user-guide/workflows/capabilities/workflow-runs.mdx b/packages/twenty-docs/l/ru/user-guide/workflows/capabilities/workflow-runs.mdx index bce240dbeb..e1fef51167 100644 --- a/packages/twenty-docs/l/ru/user-guide/workflows/capabilities/workflow-runs.mdx +++ b/packages/twenty-docs/l/ru/user-guide/workflows/capabilities/workflow-runs.mdx @@ -1,7 +1,6 @@ --- title: Запуски рабочего процесса description: Отслеживайте и управляйте запусками рабочих процессов. -image: /images/user-guide/workflows/workflow.png --- ## О запусках diff --git a/packages/twenty-docs/l/ru/user-guide/workflows/capabilities/workflow-versions.mdx b/packages/twenty-docs/l/ru/user-guide/workflows/capabilities/workflow-versions.mdx index 400fc7e3f2..ee79d9f1a9 100644 --- a/packages/twenty-docs/l/ru/user-guide/workflows/capabilities/workflow-versions.mdx +++ b/packages/twenty-docs/l/ru/user-guide/workflows/capabilities/workflow-versions.mdx @@ -1,7 +1,6 @@ --- title: Версии рабочего процесса description: Управление версиями и черновиками рабочего процесса. -image: /images/user-guide/workflows/workflow.png --- ## О версиях diff --git a/packages/twenty-docs/l/ru/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx b/packages/twenty-docs/l/ru/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx index 82b370834c..321ee2d1f4 100644 --- a/packages/twenty-docs/l/ru/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx +++ b/packages/twenty-docs/l/ru/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx @@ -1,7 +1,6 @@ --- title: Настройка триггера вебхука description: Получайте данные из внешних сервисов, чтобы запускать рабочие процессы. -image: /images/user-guide/workflows/workflow.png --- Триггеры вебхуков позволяют внешним сервисам запускать ваши рабочие процессы, отправляя данные на уникальный URL. Используйте их для подключения форм, сторонних приложений и пользовательских интеграций. diff --git a/packages/twenty-docs/l/ru/user-guide/workflows/overview.mdx b/packages/twenty-docs/l/ru/user-guide/workflows/overview.mdx index c6f8d675ed..93205b840f 100644 --- a/packages/twenty-docs/l/ru/user-guide/workflows/overview.mdx +++ b/packages/twenty-docs/l/ru/user-guide/workflows/overview.mdx @@ -1,12 +1,8 @@ --- title: Рабочие процессы description: Узнайте, как создавать автоматизации в Twenty. -image: /images/user-guide/workflows/workflow.png --- - - Рабочие процессы - ## Почему важны Workflows diff --git a/packages/twenty-docs/l/tr/twenty-ui/display/app-tooltip.mdx b/packages/twenty-docs/l/tr/twenty-ui/display/app-tooltip.mdx index 7036ade08c..ce84e25fc8 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/display/app-tooltip.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/display/app-tooltip.mdx @@ -1,6 +1,5 @@ --- title: Uygulama Araç İpucu -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/tr/twenty-ui/display/checkmark.mdx b/packages/twenty-docs/l/tr/twenty-ui/display/checkmark.mdx index 0f6a341235..cef74c5e55 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/display/checkmark.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/display/checkmark.mdx @@ -1,6 +1,5 @@ --- title: Onay işareti -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/tr/twenty-ui/display/chip.mdx b/packages/twenty-docs/l/tr/twenty-ui/display/chip.mdx index b27fb7407e..79c668c90e 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/display/chip.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/display/chip.mdx @@ -1,6 +1,5 @@ --- title: Çip -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/tr/twenty-ui/display/icons.mdx b/packages/twenty-docs/l/tr/twenty-ui/display/icons.mdx index 75a6d9bd16..de6a06b83c 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/display/icons.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/display/icons.mdx @@ -1,6 +1,5 @@ --- title: İkonlar -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/tr/twenty-ui/display/soon-pill.mdx b/packages/twenty-docs/l/tr/twenty-ui/display/soon-pill.mdx index 2ec41aa11b..5dc3183589 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/display/soon-pill.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/display/soon-pill.mdx @@ -1,11 +1,7 @@ --- title: Yakında Rozeti -image: /images/user-guide/kanban-views/kanban.png --- - - Başlık - Bir şeyin yakında geleceğini belirtmek için küçük bir rozet veya "hap" biçimli etiket. diff --git a/packages/twenty-docs/l/tr/twenty-ui/display/tag.mdx b/packages/twenty-docs/l/tr/twenty-ui/display/tag.mdx index a79b93fa5d..b2834430e3 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/display/tag.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/display/tag.mdx @@ -1,11 +1,7 @@ --- title: Etiket -image: /images/user-guide/table-views/table.png --- - - Başlık - İçeriği görsel olarak kategorize etmek veya etiketlemek için bileşen. diff --git a/packages/twenty-docs/l/tr/twenty-ui/input.mdx b/packages/twenty-docs/l/tr/twenty-ui/input.mdx index 8a6b1d8aab..05cd8cde3d 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/input.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/input.mdx @@ -1,6 +1,5 @@ --- title: Girdi -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/tr/twenty-ui/input/block-editor.mdx b/packages/twenty-docs/l/tr/twenty-ui/input/block-editor.mdx index 81e0961d14..ef027f0087 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/input/block-editor.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/input/block-editor.mdx @@ -1,6 +1,5 @@ --- title: Blok Düzenleyici -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/tr/twenty-ui/input/buttons.mdx b/packages/twenty-docs/l/tr/twenty-ui/input/buttons.mdx index b921aed9bd..5abb215cef 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/input/buttons.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/input/buttons.mdx @@ -1,6 +1,5 @@ --- title: Düğmeler -image: /images/user-guide/views/filter.png --- diff --git a/packages/twenty-docs/l/tr/twenty-ui/input/checkbox.mdx b/packages/twenty-docs/l/tr/twenty-ui/input/checkbox.mdx index 639444a2a0..56e7d010db 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/input/checkbox.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/input/checkbox.mdx @@ -1,6 +1,5 @@ --- title: Kontrol Kutusu -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/tr/twenty-ui/input/color-scheme.mdx b/packages/twenty-docs/l/tr/twenty-ui/input/color-scheme.mdx index cebca81fdb..8d22b7c0d0 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/input/color-scheme.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/input/color-scheme.mdx @@ -1,6 +1,5 @@ --- title: Renk Şeması -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/tr/twenty-ui/input/icon-picker.mdx b/packages/twenty-docs/l/tr/twenty-ui/input/icon-picker.mdx index 030d314065..e4501b1eee 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/input/icon-picker.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/input/icon-picker.mdx @@ -1,6 +1,5 @@ --- title: Simge Seçici -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/tr/twenty-ui/input/image-input.mdx b/packages/twenty-docs/l/tr/twenty-ui/input/image-input.mdx index da0f159f33..3378d357e8 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/input/image-input.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/input/image-input.mdx @@ -1,6 +1,5 @@ --- title: Resim Girişi -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/tr/twenty-ui/input/radio.mdx b/packages/twenty-docs/l/tr/twenty-ui/input/radio.mdx index c3e1e0bb22..18e7ce440f 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/input/radio.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/input/radio.mdx @@ -1,6 +1,5 @@ --- title: Radyo -image: /images/user-guide/create-workspace/workspace-cover.png --- diff --git a/packages/twenty-docs/l/tr/twenty-ui/input/select.mdx b/packages/twenty-docs/l/tr/twenty-ui/input/select.mdx index 28c211db9e..2e26122bbf 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/input/select.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/input/select.mdx @@ -1,6 +1,5 @@ --- title: Seç -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/tr/twenty-ui/input/text.mdx b/packages/twenty-docs/l/tr/twenty-ui/input/text.mdx index e6e2980627..7e0b2db38b 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/input/text.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/input/text.mdx @@ -1,6 +1,5 @@ --- title: Metin -image: /images/user-guide/notes/notes_header.png --- diff --git a/packages/twenty-docs/l/tr/twenty-ui/input/toggle.mdx b/packages/twenty-docs/l/tr/twenty-ui/input/toggle.mdx index b02e042d73..9832d4ae2d 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/input/toggle.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/input/toggle.mdx @@ -1,11 +1,7 @@ --- title: Toggle -image: /images/user-guide/table-views/table.png --- - - Başlık - diff --git a/packages/twenty-docs/l/tr/twenty-ui/navigation.mdx b/packages/twenty-docs/l/tr/twenty-ui/navigation.mdx index b046632b2f..74155bfb02 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/navigation.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/navigation.mdx @@ -1,6 +1,5 @@ --- title: Gezinme -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/tr/twenty-ui/navigation/breadcrumb.mdx b/packages/twenty-docs/l/tr/twenty-ui/navigation/breadcrumb.mdx index f394193e10..7375641421 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/navigation/breadcrumb.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/navigation/breadcrumb.mdx @@ -1,6 +1,5 @@ --- title: Gezinti yolu -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/tr/twenty-ui/navigation/links.mdx b/packages/twenty-docs/l/tr/twenty-ui/navigation/links.mdx index b152a0d8a4..9f6f67db73 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/navigation/links.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/navigation/links.mdx @@ -1,6 +1,5 @@ --- title: Bağlantılar -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/tr/twenty-ui/navigation/menu-item.mdx b/packages/twenty-docs/l/tr/twenty-ui/navigation/menu-item.mdx index 496577913a..6be242e172 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/navigation/menu-item.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/navigation/menu-item.mdx @@ -1,11 +1,7 @@ --- title: Menü Öğesi -image: /images/user-guide/kanban-views/kanban.png --- - - Başlık - Bir menü veya navigasyon listesinde kullanılmak üzere tasarlanmış çok yönlü bir menü öğesi. diff --git a/packages/twenty-docs/l/tr/twenty-ui/navigation/navigation-bar.mdx b/packages/twenty-docs/l/tr/twenty-ui/navigation/navigation-bar.mdx index 2df9ad59eb..d4198c14e8 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/navigation/navigation-bar.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/navigation/navigation-bar.mdx @@ -1,11 +1,7 @@ --- title: Gezinti Çubuğu -image: /images/user-guide/table-views/table.png --- - - Başlık - Birden fazla `NavigationBarItem` bileşeni içeren bir gezinti çubuğu oluşturur. diff --git a/packages/twenty-docs/l/tr/twenty-ui/navigation/step-bar.mdx b/packages/twenty-docs/l/tr/twenty-ui/navigation/step-bar.mdx index 54cc6b7ad3..823f7ca79d 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/navigation/step-bar.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/navigation/step-bar.mdx @@ -1,6 +1,5 @@ --- title: Adım Çubuğu -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/tr/twenty-ui/progress-bar.mdx b/packages/twenty-docs/l/tr/twenty-ui/progress-bar.mdx index 9eaaab0a8e..b925579032 100644 --- a/packages/twenty-docs/l/tr/twenty-ui/progress-bar.mdx +++ b/packages/twenty-docs/l/tr/twenty-ui/progress-bar.mdx @@ -1,11 +1,7 @@ --- title: Geri Bildirim -image: /images/user-guide/emails/emails_header.png --- - - Başlık - İlerlemeyi veya geri sayımı belirtir ve sağdan sola doğru hareket eder. diff --git a/packages/twenty-docs/l/tr/user-guide/billing/overview.mdx b/packages/twenty-docs/l/tr/user-guide/billing/overview.mdx index 04c212493a..1fff7accb5 100644 --- a/packages/twenty-docs/l/tr/user-guide/billing/overview.mdx +++ b/packages/twenty-docs/l/tr/user-guide/billing/overview.mdx @@ -1,12 +1,8 @@ --- title: Faturalandırma description: Twenty'nin fiyatlandırmasını anlayın ve aboneliğinizi yönetin. -image: /images/user-guide/setup/pricing.png --- - - Faturalandırma - Twenty, ekibinizin ihtiyaçlarına uygun esnek fiyatlandırma planları sunar. Aboneliğinizi yönetin, iş akışı kredilerinizi takip edin ve tüm faturalarınıza **Ayarlar → Faturalandırma** bölümünden erişin. diff --git a/packages/twenty-docs/l/tr/user-guide/calendar-emails/overview.mdx b/packages/twenty-docs/l/tr/user-guide/calendar-emails/overview.mdx index 1881d5e94a..c6ad39e98d 100644 --- a/packages/twenty-docs/l/tr/user-guide/calendar-emails/overview.mdx +++ b/packages/twenty-docs/l/tr/user-guide/calendar-emails/overview.mdx @@ -1,12 +1,8 @@ --- title: Takvim ve E-postalar description: E-posta ve takvim hesaplarınızı Twenty'ye bağlayın. -image: /images/user-guide/emails/emails_header.png --- - - Takvim ve E-postalar - ## Bağlantı Seçenekleri diff --git a/packages/twenty-docs/l/tr/user-guide/dashboards/overview.mdx b/packages/twenty-docs/l/tr/user-guide/dashboards/overview.mdx index 607baf95e4..baba7e7211 100644 --- a/packages/twenty-docs/l/tr/user-guide/dashboards/overview.mdx +++ b/packages/twenty-docs/l/tr/user-guide/dashboards/overview.mdx @@ -1,12 +1,8 @@ --- title: Gösterge Panelleri description: Twenty'de raporlama ve gösterge panellerinin temellerini öğrenin. -image: /images/user-guide/reporting/pie-chart.png --- - - Gösterge Panelleri - Panolar şu anda beta sürümünde. Bunları **Ayarlar → Güncellemeler → Erken Erişim** altında etkinleştirin. diff --git a/packages/twenty-docs/l/tr/user-guide/data-migration/overview.mdx b/packages/twenty-docs/l/tr/user-guide/data-migration/overview.mdx index 46ac8e7014..a43c4b63ba 100644 --- a/packages/twenty-docs/l/tr/user-guide/data-migration/overview.mdx +++ b/packages/twenty-docs/l/tr/user-guide/data-migration/overview.mdx @@ -1,14 +1,10 @@ --- title: Veri Geçişi description: CSV dosyaları veya API aracılığıyla CRM verilerinizi içe ve dışa aktarın. -image: /images/user-guide/import-export-data/cloud.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - Veri Geçişi - ## İçe Aktarma Yöntemleri diff --git a/packages/twenty-docs/l/tr/user-guide/data-model/overview.mdx b/packages/twenty-docs/l/tr/user-guide/data-model/overview.mdx index 4e79408080..5d6e6c342f 100644 --- a/packages/twenty-docs/l/tr/user-guide/data-model/overview.mdx +++ b/packages/twenty-docs/l/tr/user-guide/data-model/overview.mdx @@ -1,12 +1,8 @@ --- title: Veri modeli description: Veri modelinin ne olduğunu ve işinize uygun bir modeli nasıl tasarlayacağınızı öğrenin. -image: /images/user-guide/fields/custom_data_model.png --- - - Veri modeli - ## Veri modeli nedir? diff --git a/packages/twenty-docs/l/tr/user-guide/introduction.mdx b/packages/twenty-docs/l/tr/user-guide/introduction.mdx index 8dcbca8583..cb0fcd3d6c 100644 --- a/packages/twenty-docs/l/tr/user-guide/introduction.mdx +++ b/packages/twenty-docs/l/tr/user-guide/introduction.mdx @@ -11,52 +11,52 @@ import { CardTitle } from "/snippets/card-title.mdx" Twenty'nin ne olduğunu ve işletmenize nasıl yardımcı olabileceğini öğrenin. - + Veri Modeli Veri modelinizi iş süreçlerinize uyacak şekilde özelleştirin. - + Veri Geçişi Verilerinizi CSV veya API aracılığıyla içe ve dışa aktarın. - + Takvim ve E-postalar Ekibinizin toplantılarını ve e-postalarını merkezileştirin. - + İş Akışları Süreçleri otomatikleştirin ve harici araçlarla entegre edin. - + Yapay Zekâ Yapay zekâ ajanlarıyla ekibinizi güçlendirin. - + Görünümler ve Boru Hatları Eyleme dönüştürülebilir görünümler ve boru hatlarıyla verilerinizi düzenleyin. - + Panolar Performansı izlemek için gerçek zamanlı içgörüler. - + İzinler ve Erişim Rolleri ve Twenty'ye erişimi yönetin. - + Faturalandırma Twenty'nin fiyatlandırmasının ve faturalandırmasının nasıl çalıştığını anlayın. - + Ayarlar Çalışma alanı tercihlerinizi yapılandırın. diff --git a/packages/twenty-docs/l/tr/user-guide/permissions-access/capabilities/permissions.mdx b/packages/twenty-docs/l/tr/user-guide/permissions-access/capabilities/permissions.mdx index 45d5d06c90..fb3b2b66bb 100644 --- a/packages/twenty-docs/l/tr/user-guide/permissions-access/capabilities/permissions.mdx +++ b/packages/twenty-docs/l/tr/user-guide/permissions-access/capabilities/permissions.mdx @@ -1,7 +1,6 @@ --- title: İzinler description: Rol tabanlı izinlerle nesnelere, alanlara ve ayarlara erişimi kontrol edin. -image: /images/user-guide/permissions/permissions.png --- Twenty'nin izin sistemi, üç ana alana erişimi kontrol etmenizi sağlar: diff --git a/packages/twenty-docs/l/tr/user-guide/permissions-access/overview.mdx b/packages/twenty-docs/l/tr/user-guide/permissions-access/overview.mdx index b8737d3d17..793e0b5d14 100644 --- a/packages/twenty-docs/l/tr/user-guide/permissions-access/overview.mdx +++ b/packages/twenty-docs/l/tr/user-guide/permissions-access/overview.mdx @@ -3,9 +3,6 @@ title: İzinler ve Erişim description: Çalışma alanınızda roller, izinler ve erişim denetimini yönetin. --- - - İzinler ve Erişim - Twenty'nin izin sistemi, çalışma alanınızdaki verilere kimin erişebileceğini ve bunları kimin değiştirebileceğini kontrol etmenizi sağlar. Roller oluşturun, izinler atayın ve güvenli erişim için SSO'yu yapılandırın. diff --git a/packages/twenty-docs/l/tr/user-guide/settings/how-tos/settings-faq.mdx b/packages/twenty-docs/l/tr/user-guide/settings/how-tos/settings-faq.mdx index 460fcfdf42..f8c8bd4e8c 100644 --- a/packages/twenty-docs/l/tr/user-guide/settings/how-tos/settings-faq.mdx +++ b/packages/twenty-docs/l/tr/user-guide/settings/how-tos/settings-faq.mdx @@ -1,7 +1,6 @@ --- title: Ayarlar SSS description: Twenty ayarları hakkında sıkça sorulan sorular. -image: /images/user-guide/setup/settings.png --- ## Çalışma Alanı Ayarları diff --git a/packages/twenty-docs/l/tr/user-guide/settings/overview.mdx b/packages/twenty-docs/l/tr/user-guide/settings/overview.mdx index 4e6cda8a4b..f86ba06ca0 100644 --- a/packages/twenty-docs/l/tr/user-guide/settings/overview.mdx +++ b/packages/twenty-docs/l/tr/user-guide/settings/overview.mdx @@ -1,12 +1,8 @@ --- title: Ayarlar description: Twenty çalışma alanınızı temel yapılandırmalarla kurun. -image: /images/user-guide/setup/settings.png --- - - Ayarlar - ## İlk Kurulum diff --git a/packages/twenty-docs/l/tr/user-guide/views-pipelines/capabilities/kanban-views.mdx b/packages/twenty-docs/l/tr/user-guide/views-pipelines/capabilities/kanban-views.mdx index 0ff1e2bbe7..3c86da9e31 100644 --- a/packages/twenty-docs/l/tr/user-guide/views-pipelines/capabilities/kanban-views.mdx +++ b/packages/twenty-docs/l/tr/user-guide/views-pipelines/capabilities/kanban-views.mdx @@ -1,7 +1,6 @@ --- title: Kanban Board Views description: Learn how to use Kanban views to visualize and manage your workflows. -image: /images/user-guide/kanban-views/kanban.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; diff --git a/packages/twenty-docs/l/tr/user-guide/views-pipelines/overview.mdx b/packages/twenty-docs/l/tr/user-guide/views-pipelines/overview.mdx index 5cf66346ab..84a343b7af 100644 --- a/packages/twenty-docs/l/tr/user-guide/views-pipelines/overview.mdx +++ b/packages/twenty-docs/l/tr/user-guide/views-pipelines/overview.mdx @@ -1,14 +1,10 @@ --- title: Görünümler ve Boru Hatları description: Twenty'de görünümler oluşturmayı ve yönetmeyi öğrenin. -image: /images/user-guide/table-views/table.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - Görünümler ve Boru Hatları - ## Görünümleri Anlama diff --git a/packages/twenty-docs/l/tr/user-guide/workflows/capabilities/send-emails-from-workflows.mdx b/packages/twenty-docs/l/tr/user-guide/workflows/capabilities/send-emails-from-workflows.mdx index 3f4eef1a44..f95c540eae 100644 --- a/packages/twenty-docs/l/tr/user-guide/workflows/capabilities/send-emails-from-workflows.mdx +++ b/packages/twenty-docs/l/tr/user-guide/workflows/capabilities/send-emails-from-workflows.mdx @@ -1,7 +1,6 @@ --- title: İş Akışları Aracılığıyla E-posta Gönderme description: İş akışı eylemlerini kullanarak kişiselleştirilmiş e-postaları otomatik olarak gönderin. -image: /images/user-guide/workflows/workflow.png --- CRM'inizde belirli olaylar gerçekleştiğinde e-postaları otomatik olarak gönderin—yeni kişilere hoş geldiniz e-postası gönderin, fırsatları takip edin veya ekip üyelerini bilgilendirin. diff --git a/packages/twenty-docs/l/tr/user-guide/workflows/capabilities/use-iterator.mdx b/packages/twenty-docs/l/tr/user-guide/workflows/capabilities/use-iterator.mdx index 3e0cb484dd..77704a022c 100644 --- a/packages/twenty-docs/l/tr/user-guide/workflows/capabilities/use-iterator.mdx +++ b/packages/twenty-docs/l/tr/user-guide/workflows/capabilities/use-iterator.mdx @@ -1,7 +1,6 @@ --- title: Yineleyici Kullanın description: Kayıt dizileri üzerinde döngü yaparak her öğe üzerinde eylemler gerçekleştirin. -image: /images/user-guide/workflows/workflow.png --- Yineleyici, bir kayıt dizisi üzerinde döngü yapmanızı ve her biri için eylemler gerçekleştirmenizi sağlar. Search Records tarafından döndürülen veya Webhook'lar aracılığıyla alınan birden çok kaydı işlemeyi gerektiren iş akışları için gereklidir. diff --git a/packages/twenty-docs/l/tr/user-guide/workflows/capabilities/workflow-runs.mdx b/packages/twenty-docs/l/tr/user-guide/workflows/capabilities/workflow-runs.mdx index d9d1e56065..17022a6d78 100644 --- a/packages/twenty-docs/l/tr/user-guide/workflows/capabilities/workflow-runs.mdx +++ b/packages/twenty-docs/l/tr/user-guide/workflows/capabilities/workflow-runs.mdx @@ -1,7 +1,6 @@ --- title: İş Akışı Çalıştırmaları description: İş akışı çalıştırmalarını izleyin ve yönetin. -image: /images/user-guide/workflows/workflow.png --- ## Çalıştırmalar Hakkında diff --git a/packages/twenty-docs/l/tr/user-guide/workflows/capabilities/workflow-versions.mdx b/packages/twenty-docs/l/tr/user-guide/workflows/capabilities/workflow-versions.mdx index 7bac593571..b5108fd82d 100644 --- a/packages/twenty-docs/l/tr/user-guide/workflows/capabilities/workflow-versions.mdx +++ b/packages/twenty-docs/l/tr/user-guide/workflows/capabilities/workflow-versions.mdx @@ -1,7 +1,6 @@ --- title: İş Akışı Versiyonları description: İş akışı sürümlerini ve taslaklarını yönetin. -image: /images/user-guide/workflows/workflow.png --- ## Sürümler Hakkında diff --git a/packages/twenty-docs/l/tr/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx b/packages/twenty-docs/l/tr/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx index c2d44c8fcc..6ee408ef0f 100644 --- a/packages/twenty-docs/l/tr/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx +++ b/packages/twenty-docs/l/tr/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx @@ -1,7 +1,6 @@ --- title: Bir Webhook Tetikleyicisi Ayarlayın description: İş akışlarını tetiklemek için harici hizmetlerden veri alın. -image: /images/user-guide/workflows/workflow.png --- Webhook tetikleyicileri, harici hizmetlerin benzersiz bir URL'ye veri göndererek iş akışlarınızı başlatmasına olanak tanır. Formları, üçüncü taraf uygulamaları ve özel entegrasyonları bağlamak için bunları kullanın. diff --git a/packages/twenty-docs/l/tr/user-guide/workflows/overview.mdx b/packages/twenty-docs/l/tr/user-guide/workflows/overview.mdx index e1bd1a3a37..3c56f6de9b 100644 --- a/packages/twenty-docs/l/tr/user-guide/workflows/overview.mdx +++ b/packages/twenty-docs/l/tr/user-guide/workflows/overview.mdx @@ -1,12 +1,8 @@ --- title: İş Akışları description: Twenty'de otomasyonlar oluşturmayı öğrenin. -image: /images/user-guide/workflows/workflow.png --- - - İş Akışları - ## İş Akışları Neden Önemlidir? diff --git a/packages/twenty-docs/l/zh/twenty-ui/display/app-tooltip.mdx b/packages/twenty-docs/l/zh/twenty-ui/display/app-tooltip.mdx index d1c9a12036..256a6ba05e 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/display/app-tooltip.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/display/app-tooltip.mdx @@ -1,6 +1,5 @@ --- title: 应用程序提示 -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/zh/twenty-ui/display/checkmark.mdx b/packages/twenty-docs/l/zh/twenty-ui/display/checkmark.mdx index d044e84f16..9e7231d1b6 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/display/checkmark.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/display/checkmark.mdx @@ -1,6 +1,5 @@ --- title: 对勾标记 -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/zh/twenty-ui/display/chip.mdx b/packages/twenty-docs/l/zh/twenty-ui/display/chip.mdx index 6b44cd12ac..8fc34348e2 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/display/chip.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/display/chip.mdx @@ -1,6 +1,5 @@ --- title: 芯片 -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/zh/twenty-ui/display/icons.mdx b/packages/twenty-docs/l/zh/twenty-ui/display/icons.mdx index 6f7f69af6e..b8ae34241b 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/display/icons.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/display/icons.mdx @@ -1,6 +1,5 @@ --- title: 图标 -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/zh/twenty-ui/display/soon-pill.mdx b/packages/twenty-docs/l/zh/twenty-ui/display/soon-pill.mdx index 2b272e5be6..a3e94827f4 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/display/soon-pill.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/display/soon-pill.mdx @@ -1,11 +1,7 @@ --- title: 即将推出的小徽章或 "药丸"。 -image: /images/user-guide/kanban-views/kanban.png --- - - 标题 - 指示某物即将出现的小徽章或 "药丸" 。 diff --git a/packages/twenty-docs/l/zh/twenty-ui/display/tag.mdx b/packages/twenty-docs/l/zh/twenty-ui/display/tag.mdx index 3fc71e224f..21296272d8 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/display/tag.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/display/tag.mdx @@ -1,11 +1,7 @@ --- title: 标签 -image: /images/user-guide/table-views/table.png --- - - 标题 - 用于可视化分类或标记内容的组件。 diff --git a/packages/twenty-docs/l/zh/twenty-ui/input.mdx b/packages/twenty-docs/l/zh/twenty-ui/input.mdx index da99958ad8..e0d81675bc 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/input.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/input.mdx @@ -1,6 +1,5 @@ --- title: 输入 -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/l/zh/twenty-ui/input/block-editor.mdx b/packages/twenty-docs/l/zh/twenty-ui/input/block-editor.mdx index f8d840d39b..10c5ec6373 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/input/block-editor.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/input/block-editor.mdx @@ -1,6 +1,5 @@ --- title: 区块编辑器 -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/zh/twenty-ui/input/buttons.mdx b/packages/twenty-docs/l/zh/twenty-ui/input/buttons.mdx index 7a60eec8a4..70fe448d86 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/input/buttons.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/input/buttons.mdx @@ -1,6 +1,5 @@ --- title: 按钮 -image: /images/user-guide/views/filter.png --- diff --git a/packages/twenty-docs/l/zh/twenty-ui/input/checkbox.mdx b/packages/twenty-docs/l/zh/twenty-ui/input/checkbox.mdx index 4be785f672..4982d9a022 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/input/checkbox.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/input/checkbox.mdx @@ -1,6 +1,5 @@ --- title: 复选框 -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/zh/twenty-ui/input/color-scheme.mdx b/packages/twenty-docs/l/zh/twenty-ui/input/color-scheme.mdx index 12be77ed82..5b417d584a 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/input/color-scheme.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/input/color-scheme.mdx @@ -1,6 +1,5 @@ --- title: 配色方案 -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/zh/twenty-ui/input/icon-picker.mdx b/packages/twenty-docs/l/zh/twenty-ui/input/icon-picker.mdx index c3cb719b53..863c494c4e 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/input/icon-picker.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/input/icon-picker.mdx @@ -1,6 +1,5 @@ --- title: 图标选择器 -image: /images/user-guide/github/github-header.png --- diff --git a/packages/twenty-docs/l/zh/twenty-ui/input/image-input.mdx b/packages/twenty-docs/l/zh/twenty-ui/input/image-input.mdx index 1467e6360f..5db7a74a86 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/input/image-input.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/input/image-input.mdx @@ -1,6 +1,5 @@ --- title: 图像输入 -image: /images/user-guide/objects/objects.png --- diff --git a/packages/twenty-docs/l/zh/twenty-ui/input/radio.mdx b/packages/twenty-docs/l/zh/twenty-ui/input/radio.mdx index b5f2088b97..d45bdb5d55 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/input/radio.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/input/radio.mdx @@ -1,6 +1,5 @@ --- title: 单选按钮 -image: /images/user-guide/create-workspace/workspace-cover.png --- diff --git a/packages/twenty-docs/l/zh/twenty-ui/input/select.mdx b/packages/twenty-docs/l/zh/twenty-ui/input/select.mdx index 5337c042b7..42df6957f8 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/input/select.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/input/select.mdx @@ -1,6 +1,5 @@ --- title: 选择 -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/zh/twenty-ui/input/text.mdx b/packages/twenty-docs/l/zh/twenty-ui/input/text.mdx index 6061d42d56..488bade536 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/input/text.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/input/text.mdx @@ -1,6 +1,5 @@ --- title: 文本 -image: /images/user-guide/notes/notes_header.png --- diff --git a/packages/twenty-docs/l/zh/twenty-ui/input/toggle.mdx b/packages/twenty-docs/l/zh/twenty-ui/input/toggle.mdx index f43ea598d2..23ea7f2b5f 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/input/toggle.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/input/toggle.mdx @@ -1,11 +1,7 @@ --- title: 切换 -image: /images/user-guide/table-views/table.png --- - - 标题 - diff --git a/packages/twenty-docs/l/zh/twenty-ui/navigation.mdx b/packages/twenty-docs/l/zh/twenty-ui/navigation.mdx index f0d2d5809f..6a3d83901c 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/navigation.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/navigation.mdx @@ -1,6 +1,5 @@ --- title: 导航 -image: /images/user-guide/tasks/tasks_header.png --- diff --git a/packages/twenty-docs/l/zh/twenty-ui/navigation/breadcrumb.mdx b/packages/twenty-docs/l/zh/twenty-ui/navigation/breadcrumb.mdx index 9a7e769ea1..1dff976599 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/navigation/breadcrumb.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/navigation/breadcrumb.mdx @@ -1,6 +1,5 @@ --- title: 面包屑 -image: /images/user-guide/fields/field.png --- diff --git a/packages/twenty-docs/l/zh/twenty-ui/navigation/links.mdx b/packages/twenty-docs/l/zh/twenty-ui/navigation/links.mdx index dca07bfa11..eeed3a2840 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/navigation/links.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/navigation/links.mdx @@ -1,6 +1,5 @@ --- title: 链接 -image: /images/user-guide/what-is-twenty/20.png --- diff --git a/packages/twenty-docs/l/zh/twenty-ui/navigation/menu-item.mdx b/packages/twenty-docs/l/zh/twenty-ui/navigation/menu-item.mdx index d1591ab9c5..5c4ff71d26 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/navigation/menu-item.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/navigation/menu-item.mdx @@ -1,11 +1,7 @@ --- title: 菜单项 -image: /images/user-guide/kanban-views/kanban.png --- - - 标题 - 一个多用途的菜单项,设计用于菜单或导航列表中。 diff --git a/packages/twenty-docs/l/zh/twenty-ui/navigation/navigation-bar.mdx b/packages/twenty-docs/l/zh/twenty-ui/navigation/navigation-bar.mdx index 72f52adbb8..ec832c3fae 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/navigation/navigation-bar.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/navigation/navigation-bar.mdx @@ -1,11 +1,7 @@ --- title: 导航栏 -image: /images/user-guide/table-views/table.png --- - - 标题 - 渲染一个包含多个`NavigationBarItem`组件的导航栏。 diff --git a/packages/twenty-docs/l/zh/twenty-ui/navigation/step-bar.mdx b/packages/twenty-docs/l/zh/twenty-ui/navigation/step-bar.mdx index 012621c64c..10353574fd 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/navigation/step-bar.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/navigation/step-bar.mdx @@ -1,6 +1,5 @@ --- title: 步骤条 -image: /images/user-guide/api/api.png --- diff --git a/packages/twenty-docs/l/zh/twenty-ui/progress-bar.mdx b/packages/twenty-docs/l/zh/twenty-ui/progress-bar.mdx index 759a7be537..1e1fdc47d3 100644 --- a/packages/twenty-docs/l/zh/twenty-ui/progress-bar.mdx +++ b/packages/twenty-docs/l/zh/twenty-ui/progress-bar.mdx @@ -1,11 +1,7 @@ --- title: 反馈 -image: /images/user-guide/emails/emails_header.png --- - - 标题 - 表示进度或倒计时,并从右向左移动。 diff --git a/packages/twenty-docs/l/zh/user-guide/billing/overview.mdx b/packages/twenty-docs/l/zh/user-guide/billing/overview.mdx index d21c3e1814..49145788c0 100644 --- a/packages/twenty-docs/l/zh/user-guide/billing/overview.mdx +++ b/packages/twenty-docs/l/zh/user-guide/billing/overview.mdx @@ -1,12 +1,8 @@ --- title: 账单 description: 了解 Twenty 的定价并管理你的订阅。 -image: /images/user-guide/setup/pricing.png --- - - 账单 - Twenty 提供灵活的定价方案,满足你的团队需求。 你可以在 **设置 → 账单** 中管理订阅、跟踪工作流额度并访问发票。 diff --git a/packages/twenty-docs/l/zh/user-guide/calendar-emails/overview.mdx b/packages/twenty-docs/l/zh/user-guide/calendar-emails/overview.mdx index d10577510d..869a12cd4b 100644 --- a/packages/twenty-docs/l/zh/user-guide/calendar-emails/overview.mdx +++ b/packages/twenty-docs/l/zh/user-guide/calendar-emails/overview.mdx @@ -1,12 +1,8 @@ --- title: 日历与电子邮件 description: 将您的电子邮件和日历账户连接到 Twenty。 -image: /images/user-guide/emails/emails_header.png --- - - 日历与电子邮件 - ## 连接选项 diff --git a/packages/twenty-docs/l/zh/user-guide/dashboards/overview.mdx b/packages/twenty-docs/l/zh/user-guide/dashboards/overview.mdx index ec6b0689cf..f91f08aa3f 100644 --- a/packages/twenty-docs/l/zh/user-guide/dashboards/overview.mdx +++ b/packages/twenty-docs/l/zh/user-guide/dashboards/overview.mdx @@ -1,12 +1,8 @@ --- title: 仪表板 description: 了解 Twenty 中报表和仪表板的基础知识。 -image: /images/user-guide/reporting/pie-chart.png --- - - 仪表板 - 仪表板目前处于测试版阶段。 在 **设置 → 更新 → 早期访问** 中启用它们。 diff --git a/packages/twenty-docs/l/zh/user-guide/data-migration/overview.mdx b/packages/twenty-docs/l/zh/user-guide/data-migration/overview.mdx index 352807fb4e..4227faf1dc 100644 --- a/packages/twenty-docs/l/zh/user-guide/data-migration/overview.mdx +++ b/packages/twenty-docs/l/zh/user-guide/data-migration/overview.mdx @@ -1,14 +1,10 @@ --- title: 数据迁移 description: 通过 CSV 文件或 API 导入和导出您的 CRM 数据。 -image: /images/user-guide/import-export-data/cloud.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - 数据迁移 - ## 导入方法 diff --git a/packages/twenty-docs/l/zh/user-guide/data-model/overview.mdx b/packages/twenty-docs/l/zh/user-guide/data-model/overview.mdx index 2327d92adc..455fde335a 100644 --- a/packages/twenty-docs/l/zh/user-guide/data-model/overview.mdx +++ b/packages/twenty-docs/l/zh/user-guide/data-model/overview.mdx @@ -1,12 +1,8 @@ --- title: 数据模型 description: 了解什么是数据模型,以及如何设计一个适合您业务的模型。 -image: /images/user-guide/fields/custom_data_model.png --- - - 数据模型 - ## 什么是数据模型? diff --git a/packages/twenty-docs/l/zh/user-guide/introduction.mdx b/packages/twenty-docs/l/zh/user-guide/introduction.mdx index 4ff2fca4ae..24e80c3e3b 100644 --- a/packages/twenty-docs/l/zh/user-guide/introduction.mdx +++ b/packages/twenty-docs/l/zh/user-guide/introduction.mdx @@ -11,52 +11,52 @@ import { CardTitle } from "/snippets/card-title.mdx" 了解 Twenty 是什么,以及它如何助力您的业务。 - + 数据模型 定制您的数据模型,使其适配您的业务流程。 - + 数据迁移 通过 CSV 或 API 导入和导出您的数据。 - + 日历与电子邮件 集中管理您团队的会议和电子邮件。 - + 工作流 自动化流程并与外部工具集成。 - + AI 使用 AI 代理提升您团队的能力。 - + 视图与管道 使用可操作的视图和管道来组织您的数据。 - + 仪表板 实时洞察以跟踪绩效。 - + 权限与访问 管理 Twenty 的角色和访问权限。 - + 计费 了解 Twenty 的定价和计费如何运作。 - + 设置 配置您的工作区首选项。 diff --git a/packages/twenty-docs/l/zh/user-guide/permissions-access/capabilities/permissions.mdx b/packages/twenty-docs/l/zh/user-guide/permissions-access/capabilities/permissions.mdx index e3751449b0..2de27b5b01 100644 --- a/packages/twenty-docs/l/zh/user-guide/permissions-access/capabilities/permissions.mdx +++ b/packages/twenty-docs/l/zh/user-guide/permissions-access/capabilities/permissions.mdx @@ -1,7 +1,6 @@ --- title: 权限 description: 使用基于角色的权限来控制对对象、字段和设置的访问。 -image: /images/user-guide/permissions/permissions.png --- Twenty 的权限系统允许您控制对三个主要区域的访问: diff --git a/packages/twenty-docs/l/zh/user-guide/permissions-access/overview.mdx b/packages/twenty-docs/l/zh/user-guide/permissions-access/overview.mdx index 07e8159e30..9eb45af612 100644 --- a/packages/twenty-docs/l/zh/user-guide/permissions-access/overview.mdx +++ b/packages/twenty-docs/l/zh/user-guide/permissions-access/overview.mdx @@ -3,9 +3,6 @@ title: 权限与访问 description: 在您的工作区中管理角色、权限和访问控制。 --- - - 权限与访问 - Twenty 的权限系统使您能够控制谁可以在您的工作区中访问和修改数据。 创建角色、分配权限,并配置 SSO 以实现安全访问。 diff --git a/packages/twenty-docs/l/zh/user-guide/settings/how-tos/settings-faq.mdx b/packages/twenty-docs/l/zh/user-guide/settings/how-tos/settings-faq.mdx index 13d32e6444..91731a538d 100644 --- a/packages/twenty-docs/l/zh/user-guide/settings/how-tos/settings-faq.mdx +++ b/packages/twenty-docs/l/zh/user-guide/settings/how-tos/settings-faq.mdx @@ -1,7 +1,6 @@ --- title: 设置FAQ description: 关于 Twenty 设置的常见问题。 -image: /images/user-guide/setup/settings.png --- ## 工作区设置 diff --git a/packages/twenty-docs/l/zh/user-guide/settings/overview.mdx b/packages/twenty-docs/l/zh/user-guide/settings/overview.mdx index 93cb92e0ac..40c9821c8e 100644 --- a/packages/twenty-docs/l/zh/user-guide/settings/overview.mdx +++ b/packages/twenty-docs/l/zh/user-guide/settings/overview.mdx @@ -1,12 +1,8 @@ --- title: 设置 description: 通过关键配置来设置您的 Twenty 工作区。 -image: /images/user-guide/setup/settings.png --- - - 设置 - ## 初始设置 diff --git a/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/kanban-views.mdx b/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/kanban-views.mdx index ea5752dca2..e7eda0963e 100644 --- a/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/kanban-views.mdx +++ b/packages/twenty-docs/l/zh/user-guide/views-pipelines/capabilities/kanban-views.mdx @@ -1,7 +1,6 @@ --- title: 看板视图 description: 了解如何使用看板视图来可视化并管理您的工作流。 -image: /images/user-guide/kanban-views/kanban.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; diff --git a/packages/twenty-docs/l/zh/user-guide/views-pipelines/overview.mdx b/packages/twenty-docs/l/zh/user-guide/views-pipelines/overview.mdx index 660639171f..2fdf22df3f 100644 --- a/packages/twenty-docs/l/zh/user-guide/views-pipelines/overview.mdx +++ b/packages/twenty-docs/l/zh/user-guide/views-pipelines/overview.mdx @@ -1,14 +1,10 @@ --- title: 视图与管道 description: 了解如何在 Twenty 中创建和管理视图。 -image: /images/user-guide/table-views/table.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - 视图与管道 - ## 了解视图 diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/send-emails-from-workflows.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/send-emails-from-workflows.mdx index 85360fd669..d7eb0e63fa 100644 --- a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/send-emails-from-workflows.mdx +++ b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/send-emails-from-workflows.mdx @@ -1,7 +1,6 @@ --- title: 通过工作流发送电子邮件 description: 使用工作流操作自动发送个性化电子邮件。 -image: /images/user-guide/workflows/workflow.png --- 当您的 CRM 中发生特定事件时自动发送电子邮件——欢迎新联系人、跟进机会,或通知团队成员。 diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/use-iterator.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/use-iterator.mdx index d9d9519023..1ecd4a4355 100644 --- a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/use-iterator.mdx +++ b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/use-iterator.mdx @@ -1,7 +1,6 @@ --- title: 使用迭代器 description: 遍历记录数组,对每个项执行操作。 -image: /images/user-guide/workflows/workflow.png --- 迭代器可让你遍历记录数组,并对其中每一项执行操作。 对于需要处理由搜索记录返回或通过 Webhook 接收的多条记录的工作流,它至关重要。 diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-runs.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-runs.mdx index ea0efe4369..95adcbe100 100644 --- a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-runs.mdx +++ b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-runs.mdx @@ -1,7 +1,6 @@ --- title: 工作流运行 description: 监控并管理工作流执行。 -image: /images/user-guide/workflows/workflow.png --- ## 关于运行 diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-versions.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-versions.mdx index 3645c5ad71..25c91fdb79 100644 --- a/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-versions.mdx +++ b/packages/twenty-docs/l/zh/user-guide/workflows/capabilities/workflow-versions.mdx @@ -1,7 +1,6 @@ --- title: 工作流版本 description: 管理工作流的版本和草稿。 -image: /images/user-guide/workflows/workflow.png --- ## 关于版本 diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx index 928c232f42..66af6b7e3f 100644 --- a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx +++ b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx @@ -1,7 +1,6 @@ --- title: 设置 Webhook 触发器 description: 从外部服务接收数据以触发工作流。 -image: /images/user-guide/workflows/workflow.png --- Webhook 触发器允许外部服务通过向唯一的 URL 发送数据来启动您的工作流。 使用它们连接表单、第三方应用和自定义集成。 diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/overview.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/overview.mdx index 4934a90b38..b11cbe89b0 100644 --- a/packages/twenty-docs/l/zh/user-guide/workflows/overview.mdx +++ b/packages/twenty-docs/l/zh/user-guide/workflows/overview.mdx @@ -1,12 +1,8 @@ --- title: 工作流 description: 了解如何在 Twenty 中构建自动化流程。 -image: /images/user-guide/workflows/workflow.png --- - - 工作流 - ## 为何工作流很重要 diff --git a/packages/twenty-docs/navigation/base-structure.json b/packages/twenty-docs/navigation/base-structure.json index 138da0db2a..e51f1b7c76 100644 --- a/packages/twenty-docs/navigation/base-structure.json +++ b/packages/twenty-docs/navigation/base-structure.json @@ -1,33 +1,43 @@ { "tabs": [ + { + "key": "gettingStarted", + "label": "Getting Started", + "groups": [ + { + "key": "welcome", + "label": "Welcome", + "pages": [ + "getting-started/introduction", + "getting-started/key-features", + "getting-started/quickstart" + ] + }, + { + "key": "coreConcepts", + "label": "Core Concepts", + "pages": [ + "getting-started/core-concepts/data-model", + "getting-started/core-concepts/layout", + "getting-started/core-concepts/workflows", + "getting-started/core-concepts/calendar-and-email", + "getting-started/core-concepts/ai", + "getting-started/core-concepts/apps", + "getting-started/core-concepts/dashboards", + "getting-started/core-concepts/glossary" + ] + } + ] + }, { "key": "userGuide", "label": "User Guide", "groups": [ { - "key": "discoverTwenty", - "label": "Discover Twenty", - "icon": "rocket", + "key": "userGuideOverview", + "label": "Overview", "pages": [ - "user-guide/introduction", - { - "key": "gettingStartedCapabilities", - "label": "Capabilities", - "pages": [ - "user-guide/getting-started/capabilities/what-is-twenty", - "user-guide/getting-started/capabilities/implementation-services", - "user-guide/getting-started/capabilities/glossary" - ] - }, - { - "key": "gettingStartedHowTos", - "label": "How-Tos", - "pages": [ - "user-guide/getting-started/how-tos/create-workspace", - "user-guide/getting-started/how-tos/navigate-around-twenty", - "user-guide/getting-started/how-tos/configure-your-workspace" - ] - } + "user-guide/introduction" ] }, { @@ -37,8 +47,8 @@ "pages": [ "user-guide/data-model/overview", { - "key": "dataModelCapabilities", - "label": "Capabilities", + "key": "dataModelReference", + "label": "Reference", "pages": [ "user-guide/data-model/capabilities/objects", "user-guide/data-model/capabilities/fields", @@ -66,8 +76,8 @@ "pages": [ "user-guide/data-migration/overview", { - "key": "dataMigrationCapabilities", - "label": "Capabilities", + "key": "dataMigrationReference", + "label": "Reference", "pages": [ "user-guide/data-migration/capabilities/file-formats", "user-guide/data-migration/capabilities/field-mapping", @@ -101,8 +111,8 @@ "pages": [ "user-guide/calendar-emails/overview", { - "key": "calendarEmailsCapabilities", - "label": "Capabilities", + "key": "calendarEmailsReference", + "label": "Reference", "pages": [ "user-guide/calendar-emails/capabilities/mailbox", "user-guide/calendar-emails/capabilities/calendar" @@ -129,8 +139,8 @@ "pages": [ "user-guide/workflows/overview", { - "key": "workflowsCapabilities", - "label": "Capabilities", + "key": "workflowsReference", + "label": "Reference", "pages": [ "user-guide/workflows/capabilities/workflow-triggers", "user-guide/workflows/capabilities/workflow-actions", @@ -199,8 +209,8 @@ "pages": [ "user-guide/ai/overview", { - "key": "aiCapabilities", - "label": "Capabilities", + "key": "aiReference", + "label": "Reference", "pages": [ "user-guide/ai/capabilities/ai-chatbot", "user-guide/ai/capabilities/ai-agents", @@ -217,25 +227,33 @@ ] }, { - "key": "viewsPipelines", - "label": "Views & Pipelines", - "icon": "table", + "key": "layout", + "label": "Layout", + "icon": "table-columns", "pages": [ - "user-guide/views-pipelines/overview", + "user-guide/layout/overview", { - "key": "viewsPipelinesCapabilities", - "label": "Capabilities", + "key": "layoutReference", + "label": "Reference", "pages": [ - "user-guide/views-pipelines/capabilities/table-views", - "user-guide/views-pipelines/capabilities/kanban-views", - "user-guide/views-pipelines/capabilities/calendar-view", - "user-guide/views-pipelines/capabilities/filters-and-sorting", - "user-guide/views-pipelines/capabilities/fields-and-columns", - "user-guide/views-pipelines/capabilities/view-settings" + "user-guide/layout/capabilities/navigation", + { + "key": "layoutViews", + "label": "Views", + "pages": [ + "user-guide/views-pipelines/capabilities/table-views", + "user-guide/views-pipelines/capabilities/kanban-views", + "user-guide/views-pipelines/capabilities/calendar-view", + "user-guide/views-pipelines/capabilities/filters-and-sorting", + "user-guide/views-pipelines/capabilities/fields-and-columns", + "user-guide/views-pipelines/capabilities/view-settings" + ] + }, + "user-guide/layout/capabilities/record-pages" ] }, { - "key": "viewsPipelinesHowTos", + "key": "layoutHowTos", "label": "How-Tos", "pages": [ "user-guide/views-pipelines/how-tos/create-a-table-view-with-grouping", @@ -256,8 +274,8 @@ "pages": [ "user-guide/dashboards/overview", { - "key": "dashboardsCapabilities", - "label": "Capabilities", + "key": "dashboardsReference", + "label": "Reference", "pages": [ "user-guide/dashboards/capabilities/dashboards", "user-guide/dashboards/capabilities/widgets", @@ -281,8 +299,8 @@ "pages": [ "user-guide/permissions-access/overview", { - "key": "permissionsAccessCapabilities", - "label": "Capabilities", + "key": "permissionsAccessReference", + "label": "Reference", "pages": [ "user-guide/permissions-access/capabilities/permissions", "user-guide/permissions-access/capabilities/sso-configuration" @@ -304,8 +322,8 @@ "pages": [ "user-guide/billing/overview", { - "key": "billingCapabilities", - "label": "Capabilities", + "key": "billingReference", + "label": "Reference", "pages": [ "user-guide/billing/capabilities/pricing-plans", "user-guide/billing/capabilities/credits" @@ -327,8 +345,8 @@ "pages": [ "user-guide/settings/overview", { - "key": "settingsCapabilities", - "label": "Capabilities", + "key": "settingsReference", + "label": "Reference", "pages": [ "user-guide/settings/capabilities/workspace-settings", "user-guide/settings/capabilities/member-management", @@ -354,143 +372,54 @@ "label": "Developers", "groups": [ { - "key": "developersGroup", - "label": "Developers", + "key": "developersOverview", + "label": "Overview", "pages": [ "developers/introduction" ] }, { - "key": "extend", - "label": "Extend", - "icon": "plug", + "key": "apps", + "label": "Apps", + "pages": [ + "developers/extend/apps/getting-started", + "developers/extend/apps/building", + "developers/extend/apps/data-model", + "developers/extend/apps/logic-functions", + "developers/extend/apps/front-components", + "developers/extend/apps/layout", + "developers/extend/apps/skills-and-agents", + "developers/extend/apps/cli-and-testing", + "developers/extend/apps/publishing" + ] + }, + { + "key": "api", + "label": "API", "pages": [ "developers/extend/api", "developers/extend/webhooks", - { - "key": "apps", - "label": "Apps", - "pages": [ - "developers/extend/apps/getting-started", - "developers/extend/apps/building", - "developers/extend/apps/publishing" - ] - } + "developers/extend/oauth" ] }, { "key": "selfHost", "label": "Self-Host", - "icon": "desktop", "pages": [ - "developers/self-host/self-host", - { - "key": "selfHostCapabilities", - "label": "Capabilities", - "pages": [ - "developers/self-host/capabilities/docker-compose", - "developers/self-host/capabilities/setup", - "developers/self-host/capabilities/upgrade-guide", - "developers/self-host/capabilities/cloud-providers", - "developers/self-host/capabilities/troubleshooting" - ] - } + "developers/self-host/capabilities/docker-compose", + "developers/self-host/capabilities/setup", + "developers/self-host/capabilities/upgrade-guide", + "developers/self-host/capabilities/cloud-providers", + "developers/self-host/capabilities/troubleshooting" ] }, { "key": "contribute", "label": "Contribute", - "icon": "github", "pages": [ - "developers/contribute/contribute", - { - "key": "contributeCapabilities", - "label": "Capabilities", - "pages": [ - "developers/contribute/capabilities/local-setup", - "developers/contribute/capabilities/bug-and-requests", - { - "key": "frontendDevelopment", - "label": "Frontend Development", - "pages": [ - "developers/contribute/capabilities/frontend-development/storybook", - { - "key": "twentyUi", - "label": "Twenty UI", - "pages": [ - "twenty-ui/introduction", - { - "key": "display", - "label": "Display", - "pages": [ - "twenty-ui/display/checkmark", - "twenty-ui/display/chip", - "twenty-ui/display/icons", - "twenty-ui/display/soon-pill", - "twenty-ui/display/tag", - "twenty-ui/display/app-tooltip" - ] - }, - { - "key": "feedback", - "label": "Feedback", - "pages": [ - "twenty-ui/progress-bar" - ] - }, - { - "key": "input", - "label": "Input", - "pages": [ - "twenty-ui/input/buttons", - "twenty-ui/input/color-scheme", - "twenty-ui/input/text", - "twenty-ui/input/checkbox", - "twenty-ui/input/icon-picker", - "twenty-ui/input/image-input", - "twenty-ui/input/radio", - "twenty-ui/input/select", - "twenty-ui/input/toggle", - "twenty-ui/input/block-editor" - ] - }, - { - "key": "navigation", - "label": "Navigation", - "pages": [ - "twenty-ui/navigation", - "twenty-ui/navigation/breadcrumb", - "twenty-ui/navigation/links", - "twenty-ui/navigation/menu-item", - "twenty-ui/navigation/navigation-bar", - "twenty-ui/navigation/step-bar" - ] - } - ] - }, - "developers/contribute/capabilities/frontend-development/frontend-commands", - "developers/contribute/capabilities/frontend-development/work-with-figma", - "developers/contribute/capabilities/frontend-development/best-practices-front", - "developers/contribute/capabilities/frontend-development/style-guide", - "developers/contribute/capabilities/frontend-development/folder-architecture-front", - "developers/contribute/capabilities/frontend-development/hotkeys" - ] - }, - { - "key": "backendDevelopment", - "label": "Backend Development", - "pages": [ - "developers/contribute/capabilities/backend-development/server-commands", - "developers/contribute/capabilities/backend-development/feature-flags", - "developers/contribute/capabilities/backend-development/folder-architecture-server", - "developers/contribute/capabilities/backend-development/zapier", - "developers/contribute/capabilities/backend-development/best-practices-server", - "developers/contribute/capabilities/backend-development/custom-objects", - "developers/contribute/capabilities/backend-development/queue" - ] - } - ] - } + "developers/contribute/capabilities/local-setup", + "developers/contribute/commands", + "developers/contribute/style-guide" ] } ] diff --git a/packages/twenty-docs/navigation/navigation.template.json b/packages/twenty-docs/navigation/navigation.template.json index 0768994f5a..2ba5338a90 100644 --- a/packages/twenty-docs/navigation/navigation.template.json +++ b/packages/twenty-docs/navigation/navigation.template.json @@ -1,24 +1,27 @@ { "tabs": { + "gettingStarted": { + "label": "Getting Started", + "groups": { + "welcome": { + "label": "Welcome" + }, + "coreConcepts": { + "label": "Core Concepts" + } + } + }, "userGuide": { "label": "User Guide", "groups": { - "discoverTwenty": { - "label": "Discover Twenty", - "groups": { - "gettingStartedCapabilities": { - "label": "Capabilities" - }, - "gettingStartedHowTos": { - "label": "How-Tos" - } - } + "userGuideOverview": { + "label": "Overview" }, "dataModel": { "label": "Data Model", "groups": { - "dataModelCapabilities": { - "label": "Capabilities" + "dataModelReference": { + "label": "Reference" }, "dataModelHowTos": { "label": "How-Tos" @@ -28,8 +31,8 @@ "dataMigration": { "label": "Data Migration", "groups": { - "dataMigrationCapabilities": { - "label": "Capabilities" + "dataMigrationReference": { + "label": "Reference" }, "dataMigrationHowTos": { "label": "How-Tos" @@ -39,8 +42,8 @@ "calendarEmails": { "label": "Calendar & Emails", "groups": { - "calendarEmailsCapabilities": { - "label": "Capabilities" + "calendarEmailsReference": { + "label": "Reference" }, "calendarEmailsHowTos": { "label": "How-Tos" @@ -50,8 +53,8 @@ "workflows": { "label": "Workflows", "groups": { - "workflowsCapabilities": { - "label": "Capabilities" + "workflowsReference": { + "label": "Reference" }, "workflowsHowTos": { "label": "How-Tos", @@ -75,21 +78,26 @@ "ai": { "label": "AI", "groups": { - "aiCapabilities": { - "label": "Capabilities" + "aiReference": { + "label": "Reference" }, "aiHowTos": { "label": "How-Tos" } } }, - "viewsPipelines": { - "label": "Views & Pipelines", + "layout": { + "label": "Layout", "groups": { - "viewsPipelinesCapabilities": { - "label": "Capabilities" + "layoutReference": { + "label": "Reference", + "groups": { + "layoutViews": { + "label": "Views" + } + } }, - "viewsPipelinesHowTos": { + "layoutHowTos": { "label": "How-Tos" } } @@ -97,8 +105,8 @@ "dashboards": { "label": "Dashboards", "groups": { - "dashboardsCapabilities": { - "label": "Capabilities" + "dashboardsReference": { + "label": "Reference" }, "dashboardsHowTos": { "label": "How-Tos" @@ -108,8 +116,8 @@ "permissionsAccess": { "label": "Permissions & Access", "groups": { - "permissionsAccessCapabilities": { - "label": "Capabilities" + "permissionsAccessReference": { + "label": "Reference" }, "permissionsAccessHowTos": { "label": "How-Tos" @@ -119,8 +127,8 @@ "billing": { "label": "Billing", "groups": { - "billingCapabilities": { - "label": "Capabilities" + "billingReference": { + "label": "Reference" }, "billingHowTos": { "label": "How-Tos" @@ -130,8 +138,8 @@ "settings": { "label": "Settings", "groups": { - "settingsCapabilities": { - "label": "Capabilities" + "settingsReference": { + "label": "Reference" }, "settingsHowTos": { "label": "How-Tos" @@ -143,59 +151,20 @@ "developers": { "label": "Developers", "groups": { - "developersGroup": { - "label": "Developers" + "developersOverview": { + "label": "Overview" }, - "extend": { - "label": "Extend", - "groups": { - "apps": { - "label": "Apps" - } - } + "apps": { + "label": "Apps" + }, + "api": { + "label": "API" }, "selfHost": { - "label": "Self-Host", - "groups": { - "selfHostCapabilities": { - "label": "Capabilities" - } - } + "label": "Self-Host" }, "contribute": { - "label": "Contribute", - "groups": { - "contributeCapabilities": { - "label": "Capabilities", - "groups": { - "frontendDevelopment": { - "label": "Frontend Development", - "groups": { - "twentyUi": { - "label": "Twenty UI", - "groups": { - "display": { - "label": "Display" - }, - "feedback": { - "label": "Feedback" - }, - "input": { - "label": "Input" - }, - "navigation": { - "label": "Navigation" - } - } - } - } - }, - "backendDevelopment": { - "label": "Backend Development" - } - } - } - } + "label": "Contribute" } } } diff --git a/packages/twenty-docs/scripts/generate-halftone-illustrations.mjs b/packages/twenty-docs/scripts/generate-halftone-illustrations.mjs new file mode 100644 index 0000000000..6eab95f40e --- /dev/null +++ b/packages/twenty-docs/scripts/generate-halftone-illustrations.mjs @@ -0,0 +1,138 @@ +/** + * Converts existing User Guide illustrations into halftone style. + * Uses Playwright to run a canvas-based halftone filter in the browser. + * No dev server needed. + * + * Usage: + * node packages/twenty-docs/scripts/generate-halftone-illustrations.mjs + */ + +import { chromium } from 'playwright'; +import { writeFileSync, readFileSync, mkdirSync } from 'fs'; +import { join, dirname, resolve } from 'path'; +import { fileURLToPath } from 'url'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); +const DOCS_IMAGES = join(__dirname, '..', 'images'); +const OUTPUT_DIR = join(DOCS_IMAGES, 'user-guide', 'halftone'); + +const ILLUSTRATIONS = [ + { name: 'data-model', source: 'user-guide/fields/custom_data_model.png' }, + { name: 'data-migration', source: 'user-guide/import-export-data/cloud.png' }, + { name: 'calendar-emails', source: 'user-guide/emails/emails_header.png' }, + { name: 'workflows', source: 'user-guide/workflows/workflow.png' }, + { name: 'ai', source: 'user-guide/workflows/robot.png' }, + { name: 'layout', source: 'user-guide/table-views/table_pink.png' }, + { name: 'dashboards', source: 'user-guide/reporting/pie-chart.png' }, + { name: 'permissions', source: 'user-guide/permissions/permissions.png' }, + { name: 'billing', source: 'user-guide/setup/pricing.png' }, + { name: 'settings', source: 'user-guide/setup/settings.png' }, + // Developers section + { name: 'dev-apps', source: 'user-guide/integrations/plug.png' }, + { name: 'dev-api', source: 'user-guide/api/api-overview.png' }, + { name: 'dev-self-host', source: 'user-guide/what-is-twenty/20.png' }, + { name: 'dev-contribute', source: 'user-guide/github/github-header.png' }, +]; + +async function main() { + mkdirSync(OUTPUT_DIR, { recursive: true }); + + const browser = await chromium.launch({ headless: true }); + const page = await browser.newPage(); + await page.setContent(''); + + console.log( + `Converting ${ILLUSTRATIONS.length} illustrations to halftone...\n`, + ); + + for (const illust of ILLUSTRATIONS) { + const sourcePath = resolve(DOCS_IMAGES, illust.source); + console.log(` ${illust.name} ← ${illust.source}`); + + const imageBytes = readFileSync(sourcePath); + const base64 = imageBytes.toString('base64'); + const mime = sourcePath.endsWith('.png') ? 'image/png' : 'image/jpeg'; + + const resultBase64 = await page.evaluate(async ({ b64, m }) => { + const LINE_SPACING = 8; + const MIN_LINE_WIDTH = 0.5; + const MAX_LINE_WIDTH = 6; + const COLOR = { r: 74, g: 56, b: 245 }; // #4A38F5 + const TRANSPARENT_BG = true; + + const img = new Image(); + await new Promise((res, rej) => { + img.onload = res; + img.onerror = rej; + img.src = `data:${m};base64,${b64}`; + }); + + const { width, height } = img; + const scale = 2; + const outW = width * scale; + const outH = height * scale; + + // Read source pixels + const tmp = document.createElement('canvas'); + tmp.width = width; + tmp.height = height; + const tmpCtx = tmp.getContext('2d'); + tmpCtx.drawImage(img, 0, 0); + const px = tmpCtx.getImageData(0, 0, width, height).data; + + // Output canvas + const out = document.createElement('canvas'); + out.width = outW; + out.height = outH; + const ctx = out.getContext('2d'); + // Transparent background — adapts to both light and dark mode + + const sp = LINE_SPACING * scale; + + for (let y = sp / 2; y < outH; y += sp) { + const srcY = Math.min(Math.floor(y / scale), height - 1); + let x = 0; + + while (x < outW) { + const srcX = Math.min(Math.floor(x / scale), width - 1); + const i = (srcY * width + srcX) * 4; + const lum = (0.299 * px[i] + 0.587 * px[i+1] + 0.114 * px[i+2]) / 255; + const a = px[i+3] / 255; + const dark = (1 - lum) * a; + + if (dark > 0.2) { + const w = (MIN_LINE_WIDTH + (MAX_LINE_WIDTH - MIN_LINE_WIDTH) * dark) * scale; + const dashLen = sp * (0.3 + 0.7 * dark); + const gap = sp * (0.1 + 0.4 * (1 - dark)); + const alpha = 0.3 + 0.7 * dark; + + ctx.strokeStyle = `rgba(${COLOR.r},${COLOR.g},${COLOR.b},${alpha})`; + ctx.lineWidth = w; + ctx.lineCap = 'round'; + ctx.beginPath(); + ctx.moveTo(x, y); + ctx.lineTo(Math.min(x + dashLen, outW), y); + ctx.stroke(); + x += dashLen + gap; + } else { + x += sp * 0.5; + } + } + } + + return out.toDataURL('image/png').split(',')[1]; + }, { b64: base64, m: mime }); + + const outputPath = join(OUTPUT_DIR, `${illust.name}.png`); + writeFileSync(outputPath, Buffer.from(resultBase64, 'base64')); + console.log(` → ${outputPath}`); + } + + await browser.close(); + console.log('\nDone!'); +} + +main().catch((err) => { + console.error('Failed:', err); + process.exit(1); +}); diff --git a/packages/twenty-docs/twenty-ui/display/app-tooltip.mdx b/packages/twenty-docs/twenty-ui/display/app-tooltip.mdx index 95e83195b6..c5e735cfda 100644 --- a/packages/twenty-docs/twenty-ui/display/app-tooltip.mdx +++ b/packages/twenty-docs/twenty-ui/display/app-tooltip.mdx @@ -1,6 +1,6 @@ --- title: App Tooltip -image: /images/user-guide/tips/light-bulb.png +icon: "message" --- Header diff --git a/packages/twenty-docs/twenty-ui/display/checkmark.mdx b/packages/twenty-docs/twenty-ui/display/checkmark.mdx index fa00d724f1..0b3dc6248d 100644 --- a/packages/twenty-docs/twenty-ui/display/checkmark.mdx +++ b/packages/twenty-docs/twenty-ui/display/checkmark.mdx @@ -1,6 +1,6 @@ --- title: Checkmark -image: /images/user-guide/tasks/tasks_header.png +icon: "circle-check" --- Header diff --git a/packages/twenty-docs/twenty-ui/display/chip.mdx b/packages/twenty-docs/twenty-ui/display/chip.mdx index ea5e245895..5fc56c7bdf 100644 --- a/packages/twenty-docs/twenty-ui/display/chip.mdx +++ b/packages/twenty-docs/twenty-ui/display/chip.mdx @@ -1,6 +1,5 @@ --- title: Chip -image: /images/user-guide/github/github-header.png --- Header diff --git a/packages/twenty-docs/twenty-ui/display/icons.mdx b/packages/twenty-docs/twenty-ui/display/icons.mdx index 830075d554..fe0c7f1053 100644 --- a/packages/twenty-docs/twenty-ui/display/icons.mdx +++ b/packages/twenty-docs/twenty-ui/display/icons.mdx @@ -1,6 +1,6 @@ --- title: Icons -image: /images/user-guide/objects/objects.png +icon: "icons" --- Header diff --git a/packages/twenty-docs/twenty-ui/display/soon-pill.mdx b/packages/twenty-docs/twenty-ui/display/soon-pill.mdx index 36d9a929d4..477b76f9bf 100644 --- a/packages/twenty-docs/twenty-ui/display/soon-pill.mdx +++ b/packages/twenty-docs/twenty-ui/display/soon-pill.mdx @@ -1,10 +1,6 @@ --- title: Soon Pill -image: /images/user-guide/kanban-views/kanban.png --- - - Header - A small badge or "pill" to indicate something is coming soon. diff --git a/packages/twenty-docs/twenty-ui/display/tag.mdx b/packages/twenty-docs/twenty-ui/display/tag.mdx index ca5179ea82..17eeb9164a 100644 --- a/packages/twenty-docs/twenty-ui/display/tag.mdx +++ b/packages/twenty-docs/twenty-ui/display/tag.mdx @@ -1,10 +1,7 @@ --- title: Tag -image: /images/user-guide/table-views/table.png +icon: "tag" --- - - Header - Component to visually categorize or label content. diff --git a/packages/twenty-docs/twenty-ui/input.mdx b/packages/twenty-docs/twenty-ui/input.mdx index 2da701caf5..c3922a10af 100644 --- a/packages/twenty-docs/twenty-ui/input.mdx +++ b/packages/twenty-docs/twenty-ui/input.mdx @@ -1,6 +1,5 @@ --- title: Input -image: /images/user-guide/tips/light-bulb.png --- diff --git a/packages/twenty-docs/twenty-ui/input/block-editor.mdx b/packages/twenty-docs/twenty-ui/input/block-editor.mdx index 41abbbc327..984392ab4e 100644 --- a/packages/twenty-docs/twenty-ui/input/block-editor.mdx +++ b/packages/twenty-docs/twenty-ui/input/block-editor.mdx @@ -1,6 +1,5 @@ --- title: Block Editor -image: /images/user-guide/api/api.png --- Header diff --git a/packages/twenty-docs/twenty-ui/input/buttons.mdx b/packages/twenty-docs/twenty-ui/input/buttons.mdx index 3339a7da2a..c90d832159 100644 --- a/packages/twenty-docs/twenty-ui/input/buttons.mdx +++ b/packages/twenty-docs/twenty-ui/input/buttons.mdx @@ -1,6 +1,6 @@ --- title: Buttons -image: /images/user-guide/views/filter.png +icon: "hand-pointer" --- Header diff --git a/packages/twenty-docs/twenty-ui/input/checkbox.mdx b/packages/twenty-docs/twenty-ui/input/checkbox.mdx index ccbdf11020..dd017d3099 100644 --- a/packages/twenty-docs/twenty-ui/input/checkbox.mdx +++ b/packages/twenty-docs/twenty-ui/input/checkbox.mdx @@ -1,6 +1,6 @@ --- title: Checkbox -image: /images/user-guide/tasks/tasks_header.png +icon: "square-check" --- Header diff --git a/packages/twenty-docs/twenty-ui/input/color-scheme.mdx b/packages/twenty-docs/twenty-ui/input/color-scheme.mdx index f475dd1830..2aa90d498a 100644 --- a/packages/twenty-docs/twenty-ui/input/color-scheme.mdx +++ b/packages/twenty-docs/twenty-ui/input/color-scheme.mdx @@ -1,6 +1,6 @@ --- title: Color Scheme -image: /images/user-guide/fields/field.png +icon: "palette" --- Header diff --git a/packages/twenty-docs/twenty-ui/input/icon-picker.mdx b/packages/twenty-docs/twenty-ui/input/icon-picker.mdx index e40e5ea66b..8ac38f52a5 100644 --- a/packages/twenty-docs/twenty-ui/input/icon-picker.mdx +++ b/packages/twenty-docs/twenty-ui/input/icon-picker.mdx @@ -1,6 +1,5 @@ --- title: Icon Picker -image: /images/user-guide/github/github-header.png --- Header diff --git a/packages/twenty-docs/twenty-ui/input/image-input.mdx b/packages/twenty-docs/twenty-ui/input/image-input.mdx index 6fb732f349..b6a4ef2d3d 100644 --- a/packages/twenty-docs/twenty-ui/input/image-input.mdx +++ b/packages/twenty-docs/twenty-ui/input/image-input.mdx @@ -1,6 +1,5 @@ --- title: Image Input -image: /images/user-guide/objects/objects.png --- Header diff --git a/packages/twenty-docs/twenty-ui/input/radio.mdx b/packages/twenty-docs/twenty-ui/input/radio.mdx index 03b6a9a1a8..e0b425b7fa 100644 --- a/packages/twenty-docs/twenty-ui/input/radio.mdx +++ b/packages/twenty-docs/twenty-ui/input/radio.mdx @@ -1,6 +1,6 @@ --- title: Radio -image: /images/user-guide/create-workspace/workspace-cover.png +icon: "circle-dot" --- Header diff --git a/packages/twenty-docs/twenty-ui/input/select.mdx b/packages/twenty-docs/twenty-ui/input/select.mdx index 5a30bad3bc..df9cf9b34d 100644 --- a/packages/twenty-docs/twenty-ui/input/select.mdx +++ b/packages/twenty-docs/twenty-ui/input/select.mdx @@ -1,6 +1,5 @@ --- title: Select -image: /images/user-guide/what-is-twenty/20.png --- Header diff --git a/packages/twenty-docs/twenty-ui/input/text.mdx b/packages/twenty-docs/twenty-ui/input/text.mdx index e6ab0e79a3..e837318b79 100644 --- a/packages/twenty-docs/twenty-ui/input/text.mdx +++ b/packages/twenty-docs/twenty-ui/input/text.mdx @@ -1,6 +1,5 @@ --- title: Text -image: /images/user-guide/notes/notes_header.png --- Header diff --git a/packages/twenty-docs/twenty-ui/input/toggle.mdx b/packages/twenty-docs/twenty-ui/input/toggle.mdx index 4bd1c3d10b..abebef6b82 100644 --- a/packages/twenty-docs/twenty-ui/input/toggle.mdx +++ b/packages/twenty-docs/twenty-ui/input/toggle.mdx @@ -1,10 +1,7 @@ --- title: Toggle -image: /images/user-guide/table-views/table.png +icon: "toggle-on" --- - - Header - diff --git a/packages/twenty-docs/twenty-ui/introduction.mdx b/packages/twenty-docs/twenty-ui/introduction.mdx index c51fb0b77d..22623dbee0 100644 --- a/packages/twenty-docs/twenty-ui/introduction.mdx +++ b/packages/twenty-docs/twenty-ui/introduction.mdx @@ -1,5 +1,6 @@ --- title: Overview +icon: "palette" description: Component library for Twenty CRM --- diff --git a/packages/twenty-docs/twenty-ui/navigation.mdx b/packages/twenty-docs/twenty-ui/navigation.mdx index b17dad4220..8d4b406d85 100644 --- a/packages/twenty-docs/twenty-ui/navigation.mdx +++ b/packages/twenty-docs/twenty-ui/navigation.mdx @@ -1,6 +1,6 @@ --- title: Navigation -image: /images/user-guide/tasks/tasks_header.png +icon: "compass" --- diff --git a/packages/twenty-docs/twenty-ui/navigation/breadcrumb.mdx b/packages/twenty-docs/twenty-ui/navigation/breadcrumb.mdx index b6ac388b1a..066b8e9282 100644 --- a/packages/twenty-docs/twenty-ui/navigation/breadcrumb.mdx +++ b/packages/twenty-docs/twenty-ui/navigation/breadcrumb.mdx @@ -1,6 +1,5 @@ --- title: Breadcrumb -image: /images/user-guide/fields/field.png --- Header diff --git a/packages/twenty-docs/twenty-ui/navigation/links.mdx b/packages/twenty-docs/twenty-ui/navigation/links.mdx index a6159a6877..f0d921c6f1 100644 --- a/packages/twenty-docs/twenty-ui/navigation/links.mdx +++ b/packages/twenty-docs/twenty-ui/navigation/links.mdx @@ -1,6 +1,6 @@ --- title: Links -image: /images/user-guide/what-is-twenty/20.png +icon: "link" --- Header diff --git a/packages/twenty-docs/twenty-ui/navigation/menu-item.mdx b/packages/twenty-docs/twenty-ui/navigation/menu-item.mdx index 66ad0384f8..465030d1a1 100644 --- a/packages/twenty-docs/twenty-ui/navigation/menu-item.mdx +++ b/packages/twenty-docs/twenty-ui/navigation/menu-item.mdx @@ -1,10 +1,7 @@ --- title: Menu Item -image: /images/user-guide/kanban-views/kanban.png +icon: "bars" --- - - Header - A versatile menu item designed to be used in a menu or navigation list. diff --git a/packages/twenty-docs/twenty-ui/navigation/navigation-bar.mdx b/packages/twenty-docs/twenty-ui/navigation/navigation-bar.mdx index 2250063086..588a724083 100644 --- a/packages/twenty-docs/twenty-ui/navigation/navigation-bar.mdx +++ b/packages/twenty-docs/twenty-ui/navigation/navigation-bar.mdx @@ -1,10 +1,7 @@ --- title: Navigation Bar -image: /images/user-guide/table-views/table.png +icon: "bars" --- - - Header - Renders a navigation bar that contains multiple `NavigationBarItem` components. diff --git a/packages/twenty-docs/twenty-ui/navigation/step-bar.mdx b/packages/twenty-docs/twenty-ui/navigation/step-bar.mdx index 13bf20b29e..2410ccfc70 100644 --- a/packages/twenty-docs/twenty-ui/navigation/step-bar.mdx +++ b/packages/twenty-docs/twenty-ui/navigation/step-bar.mdx @@ -1,6 +1,5 @@ --- title: Step Bar -image: /images/user-guide/api/api.png --- Header diff --git a/packages/twenty-docs/twenty-ui/progress-bar.mdx b/packages/twenty-docs/twenty-ui/progress-bar.mdx index 3f29f12cb9..38e7e75a52 100644 --- a/packages/twenty-docs/twenty-ui/progress-bar.mdx +++ b/packages/twenty-docs/twenty-ui/progress-bar.mdx @@ -1,10 +1,6 @@ --- title: Feedback -image: /images/user-guide/emails/emails_header.png --- - - Header - Indicates progress or countdown and moves from right to left. diff --git a/packages/twenty-docs/user-guide/billing/overview.mdx b/packages/twenty-docs/user-guide/billing/overview.mdx index 902a88e89c..51db05aad0 100644 --- a/packages/twenty-docs/user-guide/billing/overview.mdx +++ b/packages/twenty-docs/user-guide/billing/overview.mdx @@ -1,13 +1,8 @@ --- title: Billing description: Understand Twenty pricing and manage your subscription. -image: /images/user-guide/setup/pricing.png --- - - Billing - - Twenty offers flexible pricing plans to fit your team's needs. Manage your subscription, track workflow credits, and access invoices all from **Settings → Billing**. ## What's in this section diff --git a/packages/twenty-docs/user-guide/calendar-emails/overview.mdx b/packages/twenty-docs/user-guide/calendar-emails/overview.mdx index c875364435..203c5d9763 100644 --- a/packages/twenty-docs/user-guide/calendar-emails/overview.mdx +++ b/packages/twenty-docs/user-guide/calendar-emails/overview.mdx @@ -1,13 +1,8 @@ --- title: Calendar & Emails description: Connect your email and calendar accounts to Twenty. -image: /images/user-guide/emails/emails_header.png --- - - Calendar & Emails - - ## Connection Options ### Google Account (Gmail & Google Calendar) diff --git a/packages/twenty-docs/user-guide/dashboards/overview.mdx b/packages/twenty-docs/user-guide/dashboards/overview.mdx index 69b12948d5..47d0b6f94c 100644 --- a/packages/twenty-docs/user-guide/dashboards/overview.mdx +++ b/packages/twenty-docs/user-guide/dashboards/overview.mdx @@ -1,13 +1,8 @@ --- title: Dashboards description: Learn the basics of reporting and dashboards in Twenty. -image: /images/user-guide/reporting/pie-chart.png --- - - Dashboards - - Dashboards are currently in beta. Activate them under **Settings → Updates → Early Access**. diff --git a/packages/twenty-docs/user-guide/data-migration/overview.mdx b/packages/twenty-docs/user-guide/data-migration/overview.mdx index e75d133428..14ed306bea 100644 --- a/packages/twenty-docs/user-guide/data-migration/overview.mdx +++ b/packages/twenty-docs/user-guide/data-migration/overview.mdx @@ -1,15 +1,10 @@ --- title: Data Migration description: Import and export your CRM data via CSV files or API. -image: /images/user-guide/import-export-data/cloud.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - Data Migration - - ## Import Methods Twenty supports two main methods for importing data: diff --git a/packages/twenty-docs/user-guide/data-model/overview.mdx b/packages/twenty-docs/user-guide/data-model/overview.mdx index 06910a9684..ad24b21066 100644 --- a/packages/twenty-docs/user-guide/data-model/overview.mdx +++ b/packages/twenty-docs/user-guide/data-model/overview.mdx @@ -1,13 +1,8 @@ --- title: Data Model description: Learn what a data model is and how to design one that fits your business. -image: /images/user-guide/fields/custom_data_model.png --- - - Data Model - - ## What is a Data Model? A data model is the structure that defines how information is organized in your CRM. Think of it as the **blueprint** of your customer data — you design it once, then fill it with your actual data. diff --git a/packages/twenty-docs/user-guide/introduction.mdx b/packages/twenty-docs/user-guide/introduction.mdx index 6ef19c29f9..2b0a954f71 100644 --- a/packages/twenty-docs/user-guide/introduction.mdx +++ b/packages/twenty-docs/user-guide/introduction.mdx @@ -1,62 +1,57 @@ --- -title: Discover Twenty +title: User Guide description: Welcome to Twenty User Guide, your resources for advanced configurations and best practices. --- import { CardTitle } from "/snippets/card-title.mdx" - - Discover Twenty - Learn what Twenty is and how it can help your business. - - - + Data Model Customize your data model to fit your business processes. - + Data Migration Import and export your data via CSV or API. - + Calendar & Emails Centralize your team's meetings and emails. - + Workflows Automate processes and integrate with external tools. - + AI Enhance your team with AI agents. - - Views & Pipelines - Organize your data with actionable views and pipelines. + + Layout + Navigation, views, and record page customization. - + Dashboards Real-time insights to track performance. - + Permissions & Access Manage roles and access to Twenty. - + Billing Understand how Twenty pricing and billing works. - + Settings Configure your workspace preferences. diff --git a/packages/twenty-docs/user-guide/layout/capabilities/navigation.mdx b/packages/twenty-docs/user-guide/layout/capabilities/navigation.mdx new file mode 100644 index 0000000000..e2853a81bb --- /dev/null +++ b/packages/twenty-docs/user-guide/layout/capabilities/navigation.mdx @@ -0,0 +1,32 @@ +--- +title: Navigation +description: Customize the left sidebar to match how your team works. +--- + +The left sidebar is your primary way to move around Twenty. It's fully customizable — you can reorganize it to match your workflow without touching any settings page. + +## Reordering items + +Drag and drop any item in the sidebar to change its position. The order is saved per user, so each team member can arrange their own sidebar. + +## Folders + +Group related items into folders. For example, you might create a "Sales" folder containing your pipeline views, a "Support" folder for tickets, or an "Operations" folder for internal objects. + +To create a folder, right-click in the sidebar or use the `+` button. + +## Hiding objects + +Objects you don't use can be hidden from the sidebar. They're not deleted — they're just out of the way. You can show them again anytime from Settings > Data Model. + +## Favorites + +Pin views, records, or searches to the Favorites section at the top of the sidebar for one-click access. Favorites are personal — each user manages their own. + +## Custom links + +Add links to external tools directly in the sidebar. Useful for linking to your wiki, dashboards in other tools, or any URL your team uses regularly. + +## Command menu + +Press `Cmd+K` (or `Ctrl+K`) to open the command menu — a quick-access search bar for jumping to any record, view, or action without navigating the sidebar. diff --git a/packages/twenty-docs/user-guide/layout/capabilities/record-pages.mdx b/packages/twenty-docs/user-guide/layout/capabilities/record-pages.mdx new file mode 100644 index 0000000000..6702616e42 --- /dev/null +++ b/packages/twenty-docs/user-guide/layout/capabilities/record-pages.mdx @@ -0,0 +1,50 @@ +--- +title: Record Pages +description: Customize the layout of individual record detail pages with tabs and widgets. +--- + +When you open a record in Twenty, the detail page is composed of **tabs** and **widgets**. Both are fully customizable per object type. + +## Tabs + +Each record page can have multiple tabs — similar to tabs in a browser. Use them to organize different aspects of a record. For example, a Company record might have tabs for Overview, Communication, Tasks, and Files. + +You can: +- Add and remove tabs +- Rename tabs +- Reorder tabs by dragging +- Set which tab shows by default + +## Widgets + +Widgets are the building blocks inside each tab. Available widget types include: + +| Widget | What it shows | +|--------|--------------| +| **Fields** | Record fields, grouped or individually | +| **Related records** | Table of records linked via a relation | +| **Emails** | Email history from connected accounts | +| **Calendar** | Calendar events associated with the record | +| **Timeline** | Activity and event history | +| **Tasks** | Associated tasks | +| **Notes** | Rich text notes | +| **Files** | File attachments | +| **Charts** | Visual data from related records | +| **iFrame** | Embedded external content | +| **Rich text** | Static content or descriptions | + +## Customizing a record page + +1. Open any record +2. Press `Cmd+K` and search for "Edit record page layout" +3. You're now in customization mode: + - **Add widgets** from the widget picker + - **Drag widgets** to reposition them on the grid + - **Resize widgets** by dragging their edges + - **Configure fields** shown within each widget + - **Manage tabs** — add, remove, rename, reorder +4. Save your changes — they apply to all records of that object type + +## Field visibility + +Within a Fields widget, you can control which fields are visible and in what order. This lets you create focused layouts — for example, showing only the most important fields on the Overview tab and putting detailed fields in a separate tab. diff --git a/packages/twenty-docs/user-guide/layout/overview.mdx b/packages/twenty-docs/user-guide/layout/overview.mdx new file mode 100644 index 0000000000..ba25c99b1f --- /dev/null +++ b/packages/twenty-docs/user-guide/layout/overview.mdx @@ -0,0 +1,44 @@ +--- +title: Layout +description: Customize how you navigate, browse, and view records in Twenty. +--- + +Twenty's layout is customizable at three levels: how you navigate the app, how you browse lists of records, and what you see when you open an individual record. + +## Navigation + +The left sidebar is fully customizable. You can: +- **Reorder items** by dragging and dropping +- **Create folders** to group related objects and views +- **Hide objects** you don't use +- **Add custom links** to external tools +- **Pin favorites** for quick access to views, records, or searches + +[Navigation reference →](/user-guide/layout/capabilities/navigation) + +## Views + +Views control how lists of records are displayed. Twenty supports three view types: + +| View | Best for | +|------|----------| +| **Table** | Working with many records at once — spreadsheet-style rows and columns | +| **Kanban** | Pipeline tracking — drag-and-drop cards organized by stage | +| **Calendar** | Time-based planning — records plotted by a date field | + +Each view saves its own filters, sorting, field visibility, and grouping configuration. Views can be shared with the workspace or kept private. + +[Table views →](/user-guide/views-pipelines/capabilities/table-views) · [Kanban views →](/user-guide/views-pipelines/capabilities/kanban-views) · [Calendar view →](/user-guide/views-pipelines/capabilities/calendar-view) + +## Record pages + +When you open a record, the detail page is built from configurable tabs and widgets. You can: + +- **Add, remove, and reorder tabs** on any record type +- **Configure widgets** — fields, related records, emails, timeline, calendar, tasks, notes, files, charts, iframes, and more +- **Drag and resize widgets** on a grid layout +- **Control field visibility** per widget + +Enter layout customization mode from the command menu (`Cmd+K` → "Edit record page layout"). + +[Record pages reference →](/user-guide/layout/capabilities/record-pages) diff --git a/packages/twenty-docs/user-guide/permissions-access/capabilities/permissions.mdx b/packages/twenty-docs/user-guide/permissions-access/capabilities/permissions.mdx index 000b837154..217453aee8 100644 --- a/packages/twenty-docs/user-guide/permissions-access/capabilities/permissions.mdx +++ b/packages/twenty-docs/user-guide/permissions-access/capabilities/permissions.mdx @@ -1,7 +1,6 @@ --- title: Permissions description: Control access to objects, fields, and settings with role-based permissions. -image: /images/user-guide/permissions/permissions.png --- diff --git a/packages/twenty-docs/user-guide/permissions-access/overview.mdx b/packages/twenty-docs/user-guide/permissions-access/overview.mdx index 9991aa0c75..009f140609 100644 --- a/packages/twenty-docs/user-guide/permissions-access/overview.mdx +++ b/packages/twenty-docs/user-guide/permissions-access/overview.mdx @@ -3,10 +3,6 @@ title: Permissions & Access description: Manage roles, permissions, and access control in your workspace. --- - - Permissions & Access - - Twenty's permission system lets you control who can access and modify data in your workspace. Create roles, assign permissions, and configure SSO for secure access. ## What's in this section diff --git a/packages/twenty-docs/user-guide/settings/how-tos/settings-faq.mdx b/packages/twenty-docs/user-guide/settings/how-tos/settings-faq.mdx index 755b83c176..c52ee3a131 100644 --- a/packages/twenty-docs/user-guide/settings/how-tos/settings-faq.mdx +++ b/packages/twenty-docs/user-guide/settings/how-tos/settings-faq.mdx @@ -1,7 +1,6 @@ --- title: Settings FAQ description: Frequently asked questions about Twenty settings. -image: /images/user-guide/setup/settings.png --- ## Workspace Settings diff --git a/packages/twenty-docs/user-guide/settings/overview.mdx b/packages/twenty-docs/user-guide/settings/overview.mdx index c2723af5b1..b9ad2faddd 100644 --- a/packages/twenty-docs/user-guide/settings/overview.mdx +++ b/packages/twenty-docs/user-guide/settings/overview.mdx @@ -1,13 +1,8 @@ --- title: Settings description: Set up your Twenty workspace with essential configurations. -image: /images/user-guide/setup/settings.png --- - - Settings - - ## Initial Setup When you first create your workspace, there are several key settings to configure. diff --git a/packages/twenty-docs/user-guide/views-pipelines/capabilities/kanban-views.mdx b/packages/twenty-docs/user-guide/views-pipelines/capabilities/kanban-views.mdx index ae93dbac73..ea7c5ecdad 100644 --- a/packages/twenty-docs/user-guide/views-pipelines/capabilities/kanban-views.mdx +++ b/packages/twenty-docs/user-guide/views-pipelines/capabilities/kanban-views.mdx @@ -1,7 +1,6 @@ --- title: Kanban Board Views description: Learn how to use Kanban views to visualize and manage your workflows. -image: /images/user-guide/kanban-views/kanban.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; diff --git a/packages/twenty-docs/user-guide/views-pipelines/overview.mdx b/packages/twenty-docs/user-guide/views-pipelines/overview.mdx index f58cf91cbf..c7eea1f16d 100644 --- a/packages/twenty-docs/user-guide/views-pipelines/overview.mdx +++ b/packages/twenty-docs/user-guide/views-pipelines/overview.mdx @@ -1,15 +1,10 @@ --- title: Views & Pipelines description: Learn how to create and manage views in Twenty. -image: /images/user-guide/table-views/table.png --- import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; - - Views & Pipelines - - ## Understanding Views Views are saved configurations that determine how your data is displayed. Each view can have its own: diff --git a/packages/twenty-docs/user-guide/workflows/capabilities/send-emails-from-workflows.mdx b/packages/twenty-docs/user-guide/workflows/capabilities/send-emails-from-workflows.mdx index a162bbc93a..be2868f6ba 100644 --- a/packages/twenty-docs/user-guide/workflows/capabilities/send-emails-from-workflows.mdx +++ b/packages/twenty-docs/user-guide/workflows/capabilities/send-emails-from-workflows.mdx @@ -1,7 +1,6 @@ --- title: Send Emails from Workflows description: Send personalized emails automatically using workflow actions. -image: /images/user-guide/workflows/workflow.png --- Automatically send emails when specific events occur in your CRM—welcome new contacts, follow up on opportunities, or notify team members. diff --git a/packages/twenty-docs/user-guide/workflows/capabilities/use-iterator.mdx b/packages/twenty-docs/user-guide/workflows/capabilities/use-iterator.mdx index f2d92d3106..8365b4a2fa 100644 --- a/packages/twenty-docs/user-guide/workflows/capabilities/use-iterator.mdx +++ b/packages/twenty-docs/user-guide/workflows/capabilities/use-iterator.mdx @@ -1,7 +1,6 @@ --- title: Use Iterator description: Loop through arrays of records to perform actions on each item. -image: /images/user-guide/workflows/workflow.png --- Iterator lets you loop through an array of records and perform actions on each one. It's essential for workflows that need to process multiple records returned by Search Records or received via webhooks. diff --git a/packages/twenty-docs/user-guide/workflows/capabilities/workflow-runs.mdx b/packages/twenty-docs/user-guide/workflows/capabilities/workflow-runs.mdx index 48f2b653c8..a6d2a4011f 100644 --- a/packages/twenty-docs/user-guide/workflows/capabilities/workflow-runs.mdx +++ b/packages/twenty-docs/user-guide/workflows/capabilities/workflow-runs.mdx @@ -1,7 +1,6 @@ --- title: Workflow Runs description: Monitor and manage workflow executions. -image: /images/user-guide/workflows/workflow.png --- ## About Runs diff --git a/packages/twenty-docs/user-guide/workflows/capabilities/workflow-versions.mdx b/packages/twenty-docs/user-guide/workflows/capabilities/workflow-versions.mdx index 274debfe0d..104c002fda 100644 --- a/packages/twenty-docs/user-guide/workflows/capabilities/workflow-versions.mdx +++ b/packages/twenty-docs/user-guide/workflows/capabilities/workflow-versions.mdx @@ -1,7 +1,6 @@ --- title: Workflow Versions description: Manage workflow versions and drafts. -image: /images/user-guide/workflows/workflow.png --- ## About Versions diff --git a/packages/twenty-docs/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx b/packages/twenty-docs/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx index 3e80a76488..5746ea09dd 100644 --- a/packages/twenty-docs/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx +++ b/packages/twenty-docs/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger.mdx @@ -1,7 +1,6 @@ --- title: Set Up a Webhook Trigger description: Receive data from external services to trigger workflows. -image: /images/user-guide/workflows/workflow.png --- Webhook triggers allow external services to start your workflows by sending data to a unique URL. Use them to connect forms, third-party apps, and custom integrations. diff --git a/packages/twenty-docs/user-guide/workflows/overview.mdx b/packages/twenty-docs/user-guide/workflows/overview.mdx index 77f88c5d2c..1d83776245 100644 --- a/packages/twenty-docs/user-guide/workflows/overview.mdx +++ b/packages/twenty-docs/user-guide/workflows/overview.mdx @@ -1,13 +1,8 @@ --- title: Workflows description: Learn how to build automations in Twenty. -image: /images/user-guide/workflows/workflow.png --- - - Workflows - - ## Why Workflows Matter Twenty was built to bring maximum flexibility to its users. Rather than forcing you to adapt your business processes to rigid, pre-built features, workflows enable you to build automations that create the CRM that best supports your unique business use cases. diff --git a/packages/twenty-emails/src/components/Footer.tsx b/packages/twenty-emails/src/components/Footer.tsx index 710df38b8c..b96b5bf641 100644 --- a/packages/twenty-emails/src/components/Footer.tsx +++ b/packages/twenty-emails/src/components/Footer.tsx @@ -36,7 +36,7 @@ export const Footer = ({ i18n }: FooterProps) => { diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/page-layout-widget/compute-my-first-dashboard-widgets.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/page-layout-widget/compute-my-first-dashboard-widgets.util.ts index 811c5b1c1b..e421da9d30 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/page-layout-widget/compute-my-first-dashboard-widgets.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/page-layout-widget/compute-my-first-dashboard-widgets.util.ts @@ -188,7 +188,7 @@ const createWelcomeRichText = ({ }, { type: 'link', - href: 'https://docs.twenty.com/user-guide/introduction', + href: 'https://docs.twenty.com/getting-started/introduction', content: [ { type: 'text', diff --git a/packages/twenty-shared/src/constants/DocumentationDefaultPath.ts b/packages/twenty-shared/src/constants/DocumentationDefaultPath.ts index 35e467b5f7..23640eb82d 100644 --- a/packages/twenty-shared/src/constants/DocumentationDefaultPath.ts +++ b/packages/twenty-shared/src/constants/DocumentationDefaultPath.ts @@ -1,4 +1,4 @@ import { DOCUMENTATION_PATHS } from './DocumentationPaths'; export const DOCUMENTATION_DEFAULT_PATH = - DOCUMENTATION_PATHS.USER_GUIDE_INTRODUCTION; + DOCUMENTATION_PATHS.GETTING_STARTED_INTRODUCTION; diff --git a/packages/twenty-shared/src/constants/DocumentationPaths.ts b/packages/twenty-shared/src/constants/DocumentationPaths.ts index aae63efd59..dee97af37b 100644 --- a/packages/twenty-shared/src/constants/DocumentationPaths.ts +++ b/packages/twenty-shared/src/constants/DocumentationPaths.ts @@ -12,44 +12,26 @@ */ export const DOCUMENTATION_PATHS = { - DEVELOPERS_CONTRIBUTE_CAPABILITIES_BACKEND_DEVELOPMENT_BEST_PRACTICES_SERVER: - '/developers/contribute/capabilities/backend-development/best-practices-server', - DEVELOPERS_CONTRIBUTE_CAPABILITIES_BACKEND_DEVELOPMENT_CUSTOM_OBJECTS: - '/developers/contribute/capabilities/backend-development/custom-objects', - DEVELOPERS_CONTRIBUTE_CAPABILITIES_BACKEND_DEVELOPMENT_FEATURE_FLAGS: - '/developers/contribute/capabilities/backend-development/feature-flags', - DEVELOPERS_CONTRIBUTE_CAPABILITIES_BACKEND_DEVELOPMENT_FOLDER_ARCHITECTURE_SERVER: - '/developers/contribute/capabilities/backend-development/folder-architecture-server', - DEVELOPERS_CONTRIBUTE_CAPABILITIES_BACKEND_DEVELOPMENT_QUEUE: - '/developers/contribute/capabilities/backend-development/queue', - DEVELOPERS_CONTRIBUTE_CAPABILITIES_BACKEND_DEVELOPMENT_SERVER_COMMANDS: - '/developers/contribute/capabilities/backend-development/server-commands', - DEVELOPERS_CONTRIBUTE_CAPABILITIES_BACKEND_DEVELOPMENT_ZAPIER: - '/developers/contribute/capabilities/backend-development/zapier', - DEVELOPERS_CONTRIBUTE_CAPABILITIES_BUG_AND_REQUESTS: - '/developers/contribute/capabilities/bug-and-requests', - DEVELOPERS_CONTRIBUTE_CAPABILITIES_FRONTEND_DEVELOPMENT_BEST_PRACTICES_FRONT: - '/developers/contribute/capabilities/frontend-development/best-practices-front', - DEVELOPERS_CONTRIBUTE_CAPABILITIES_FRONTEND_DEVELOPMENT_FOLDER_ARCHITECTURE_FRONT: - '/developers/contribute/capabilities/frontend-development/folder-architecture-front', - DEVELOPERS_CONTRIBUTE_CAPABILITIES_FRONTEND_DEVELOPMENT_FRONTEND_COMMANDS: - '/developers/contribute/capabilities/frontend-development/frontend-commands', - DEVELOPERS_CONTRIBUTE_CAPABILITIES_FRONTEND_DEVELOPMENT_HOTKEYS: - '/developers/contribute/capabilities/frontend-development/hotkeys', - DEVELOPERS_CONTRIBUTE_CAPABILITIES_FRONTEND_DEVELOPMENT_STORYBOOK: - '/developers/contribute/capabilities/frontend-development/storybook', - DEVELOPERS_CONTRIBUTE_CAPABILITIES_FRONTEND_DEVELOPMENT_STYLE_GUIDE: - '/developers/contribute/capabilities/frontend-development/style-guide', - DEVELOPERS_CONTRIBUTE_CAPABILITIES_FRONTEND_DEVELOPMENT_WORK_WITH_FIGMA: - '/developers/contribute/capabilities/frontend-development/work-with-figma', DEVELOPERS_CONTRIBUTE_CAPABILITIES_LOCAL_SETUP: '/developers/contribute/capabilities/local-setup', - DEVELOPERS_CONTRIBUTE_CONTRIBUTE: '/developers/contribute/contribute', + DEVELOPERS_CONTRIBUTE_COMMANDS: '/developers/contribute/commands', + DEVELOPERS_CONTRIBUTE_STYLE_GUIDE: '/developers/contribute/style-guide', DEVELOPERS_EXTEND_API: '/developers/extend/api', DEVELOPERS_EXTEND_APPS_BUILDING: '/developers/extend/apps/building', + DEVELOPERS_EXTEND_APPS_CLI_AND_TESTING: + '/developers/extend/apps/cli-and-testing', + DEVELOPERS_EXTEND_APPS_DATA_MODEL: '/developers/extend/apps/data-model', + DEVELOPERS_EXTEND_APPS_FRONT_COMPONENTS: + '/developers/extend/apps/front-components', DEVELOPERS_EXTEND_APPS_GETTING_STARTED: '/developers/extend/apps/getting-started', + DEVELOPERS_EXTEND_APPS_LAYOUT: '/developers/extend/apps/layout', + DEVELOPERS_EXTEND_APPS_LOGIC_FUNCTIONS: + '/developers/extend/apps/logic-functions', DEVELOPERS_EXTEND_APPS_PUBLISHING: '/developers/extend/apps/publishing', + DEVELOPERS_EXTEND_APPS_SKILLS_AND_AGENTS: + '/developers/extend/apps/skills-and-agents', + DEVELOPERS_EXTEND_OAUTH: '/developers/extend/oauth', DEVELOPERS_EXTEND_WEBHOOKS: '/developers/extend/webhooks', DEVELOPERS_INTRODUCTION: '/developers/introduction', DEVELOPERS_SELF_HOST_CAPABILITIES_CLOUD_PROVIDERS: @@ -62,31 +44,22 @@ export const DOCUMENTATION_PATHS = { '/developers/self-host/capabilities/troubleshooting', DEVELOPERS_SELF_HOST_CAPABILITIES_UPGRADE_GUIDE: '/developers/self-host/capabilities/upgrade-guide', - DEVELOPERS_SELF_HOST_SELF_HOST: '/developers/self-host/self-host', - TWENTY_UI_DISPLAY_APP_TOOLTIP: '/twenty-ui/display/app-tooltip', - TWENTY_UI_DISPLAY_CHECKMARK: '/twenty-ui/display/checkmark', - TWENTY_UI_DISPLAY_CHIP: '/twenty-ui/display/chip', - TWENTY_UI_DISPLAY_ICONS: '/twenty-ui/display/icons', - TWENTY_UI_DISPLAY_SOON_PILL: '/twenty-ui/display/soon-pill', - TWENTY_UI_DISPLAY_TAG: '/twenty-ui/display/tag', - TWENTY_UI_INPUT_BLOCK_EDITOR: '/twenty-ui/input/block-editor', - TWENTY_UI_INPUT_BUTTONS: '/twenty-ui/input/buttons', - TWENTY_UI_INPUT_CHECKBOX: '/twenty-ui/input/checkbox', - TWENTY_UI_INPUT_COLOR_SCHEME: '/twenty-ui/input/color-scheme', - TWENTY_UI_INPUT_ICON_PICKER: '/twenty-ui/input/icon-picker', - TWENTY_UI_INPUT_IMAGE_INPUT: '/twenty-ui/input/image-input', - TWENTY_UI_INPUT_RADIO: '/twenty-ui/input/radio', - TWENTY_UI_INPUT_SELECT: '/twenty-ui/input/select', - TWENTY_UI_INPUT_TEXT: '/twenty-ui/input/text', - TWENTY_UI_INPUT_TOGGLE: '/twenty-ui/input/toggle', - TWENTY_UI_INTRODUCTION: '/twenty-ui/introduction', - TWENTY_UI_NAVIGATION: '/twenty-ui/navigation', - TWENTY_UI_NAVIGATION_BREADCRUMB: '/twenty-ui/navigation/breadcrumb', - TWENTY_UI_NAVIGATION_LINKS: '/twenty-ui/navigation/links', - TWENTY_UI_NAVIGATION_MENU_ITEM: '/twenty-ui/navigation/menu-item', - TWENTY_UI_NAVIGATION_NAVIGATION_BAR: '/twenty-ui/navigation/navigation-bar', - TWENTY_UI_NAVIGATION_STEP_BAR: '/twenty-ui/navigation/step-bar', - TWENTY_UI_PROGRESS_BAR: '/twenty-ui/progress-bar', + GETTING_STARTED_CORE_CONCEPTS_AI: '/getting-started/core-concepts/ai', + GETTING_STARTED_CORE_CONCEPTS_APPS: '/getting-started/core-concepts/apps', + GETTING_STARTED_CORE_CONCEPTS_CALENDAR_AND_EMAIL: + '/getting-started/core-concepts/calendar-and-email', + GETTING_STARTED_CORE_CONCEPTS_DASHBOARDS: + '/getting-started/core-concepts/dashboards', + GETTING_STARTED_CORE_CONCEPTS_DATA_MODEL: + '/getting-started/core-concepts/data-model', + GETTING_STARTED_CORE_CONCEPTS_GLOSSARY: + '/getting-started/core-concepts/glossary', + GETTING_STARTED_CORE_CONCEPTS_LAYOUT: '/getting-started/core-concepts/layout', + GETTING_STARTED_CORE_CONCEPTS_WORKFLOWS: + '/getting-started/core-concepts/workflows', + GETTING_STARTED_INTRODUCTION: '/getting-started/introduction', + GETTING_STARTED_KEY_FEATURES: '/getting-started/key-features', + GETTING_STARTED_QUICKSTART: '/getting-started/quickstart', USER_GUIDE_AI_CAPABILITIES_AI_AGENTS: '/user-guide/ai/capabilities/ai-agents', USER_GUIDE_AI_CAPABILITIES_AI_CHATBOT: '/user-guide/ai/capabilities/ai-chatbot', @@ -179,19 +152,12 @@ export const DOCUMENTATION_PATHS = { USER_GUIDE_DATA_MODEL_HOW_TOS_DATA_MODEL_FAQ: '/user-guide/data-model/how-tos/data-model-faq', USER_GUIDE_DATA_MODEL_OVERVIEW: '/user-guide/data-model/overview', - USER_GUIDE_GETTING_STARTED_CAPABILITIES_GLOSSARY: - '/user-guide/getting-started/capabilities/glossary', - USER_GUIDE_GETTING_STARTED_CAPABILITIES_IMPLEMENTATION_SERVICES: - '/user-guide/getting-started/capabilities/implementation-services', - USER_GUIDE_GETTING_STARTED_CAPABILITIES_WHAT_IS_TWENTY: - '/user-guide/getting-started/capabilities/what-is-twenty', - USER_GUIDE_GETTING_STARTED_HOW_TOS_CONFIGURE_YOUR_WORKSPACE: - '/user-guide/getting-started/how-tos/configure-your-workspace', - USER_GUIDE_GETTING_STARTED_HOW_TOS_CREATE_WORKSPACE: - '/user-guide/getting-started/how-tos/create-workspace', - USER_GUIDE_GETTING_STARTED_HOW_TOS_NAVIGATE_AROUND_TWENTY: - '/user-guide/getting-started/how-tos/navigate-around-twenty', USER_GUIDE_INTRODUCTION: '/user-guide/introduction', + USER_GUIDE_LAYOUT_CAPABILITIES_NAVIGATION: + '/user-guide/layout/capabilities/navigation', + USER_GUIDE_LAYOUT_CAPABILITIES_RECORD_PAGES: + '/user-guide/layout/capabilities/record-pages', + USER_GUIDE_LAYOUT_OVERVIEW: '/user-guide/layout/overview', USER_GUIDE_PERMISSIONS_ACCESS_CAPABILITIES_PERMISSIONS: '/user-guide/permissions-access/capabilities/permissions', USER_GUIDE_PERMISSIONS_ACCESS_CAPABILITIES_SSO_CONFIGURATION: @@ -241,7 +207,6 @@ export const DOCUMENTATION_PATHS = { '/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline', USER_GUIDE_VIEWS_PIPELINES_HOW_TOS_TRACK_TIME_IN_STAGE: '/user-guide/views-pipelines/how-tos/track-time-in-stage', - USER_GUIDE_VIEWS_PIPELINES_OVERVIEW: '/user-guide/views-pipelines/overview', USER_GUIDE_WORKFLOWS_CAPABILITIES_SEND_EMAILS_FROM_WORKFLOWS: '/user-guide/workflows/capabilities/send-emails-from-workflows', USER_GUIDE_WORKFLOWS_CAPABILITIES_USE_BRANCHES_IN_WORKFLOWS: diff --git a/packages/twenty-website-new/src/app/_constants/footer.ts b/packages/twenty-website-new/src/app/_constants/footer.ts index b5e675086c..e108656354 100644 --- a/packages/twenty-website-new/src/app/_constants/footer.ts +++ b/packages/twenty-website-new/src/app/_constants/footer.ts @@ -29,7 +29,7 @@ export const FOOTER_DATA: FooterDataType = { }, { label: 'User Guide', - href: 'https://docs.twenty.com/user-guide/introduction', + href: 'https://docs.twenty.com/getting-started/introduction', external: true, }, { label: 'Release Notes', href: '/release-notes', external: false },