From 888fa271f0d038114e6f83bb4d8d65eba82dfd17 Mon Sep 17 00:00:00 2001 From: Marie <51697796+ijreilly@users.noreply.github.com> Date: Tue, 31 Mar 2026 15:35:57 +0200 Subject: [PATCH] [Apps SDK] Fix rich app link in documentation (#19007) - Fix link to rich app for LLMS - Add example of extension of existing object in rich app (post card app) --- .../src/constants/base-application/LLMS.md | 2 +- .../community/apollo-enrich/LLMS.md | 2 +- .../company-can-receive-postcards.field.ts | 18 ++++++++++++++++++ ...oryField.ts => post-card-category.field.ts} | 0 ...mber.field.ts => post-card-number.field.ts} | 0 .../src/objects/recipient.object.ts | 5 ++++- .../src/views/all-post-card-recipients.view.ts | 10 +++++++--- .../src/views/all-recipients.view.ts | 13 +++++++++++-- packages/twenty-apps/hello-world/LLMS.md | 2 +- .../hello-world/src/objects/example-object.ts | 3 ++- .../internal/call-recording/LLMS.md | 2 +- 11 files changed, 46 insertions(+), 11 deletions(-) create mode 100644 packages/twenty-apps/fixtures/postcard-app/src/fields/company-can-receive-postcards.field.ts rename packages/twenty-apps/fixtures/postcard-app/src/fields/{postCardCategoryField.ts => post-card-category.field.ts} (100%) rename packages/twenty-apps/fixtures/postcard-app/src/fields/{postCardNumber.field.ts => post-card-number.field.ts} (100%) diff --git a/packages/create-twenty-app/src/constants/base-application/LLMS.md b/packages/create-twenty-app/src/constants/base-application/LLMS.md index b165db0d14..4227b88d35 100644 --- a/packages/create-twenty-app/src/constants/base-application/LLMS.md +++ b/packages/create-twenty-app/src/constants/base-application/LLMS.md @@ -1,7 +1,7 @@ ## Base documentation - Documentation: https://docs.twenty.com/developers/extend/capabilities/apps -- Rich app example: https://github.com/twentyhq/twenty/tree/main/packages/twenty-sdk/src/app-seeds/rich-app +- Rich app example: https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/fixtures/postcard-app ## UUID requirement diff --git a/packages/twenty-apps/community/apollo-enrich/LLMS.md b/packages/twenty-apps/community/apollo-enrich/LLMS.md index c08c2475f1..dcd0011a9e 100644 --- a/packages/twenty-apps/community/apollo-enrich/LLMS.md +++ b/packages/twenty-apps/community/apollo-enrich/LLMS.md @@ -1,7 +1,7 @@ ## Base documentation - Documentation: https://docs.twenty.com/developers/extend/capabilities/apps -- Rich app example: https://github.com/twentyhq/twenty/tree/main/packages/twenty-sdk/src/app-seeds/rich-app +- Rich app example: https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/fixtures/postcard-app ## UUID requirement - All generated UUIDs must be valid UUID v4. diff --git a/packages/twenty-apps/fixtures/postcard-app/src/fields/company-can-receive-postcards.field.ts b/packages/twenty-apps/fixtures/postcard-app/src/fields/company-can-receive-postcards.field.ts new file mode 100644 index 0000000000..39040de323 --- /dev/null +++ b/packages/twenty-apps/fixtures/postcard-app/src/fields/company-can-receive-postcards.field.ts @@ -0,0 +1,18 @@ +import { + defineField, + FieldType, + STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS, +} from 'twenty-sdk'; + +// Field on existing company object +export default defineField({ + universalIdentifier: 'f922fdb8-10a9-4f11-a1d0-992a779f6dff', + objectUniversalIdentifier: + STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.company.universalIdentifier, + type: FieldType.BOOLEAN, + name: 'canReceivePostcards', + label: 'Can Receive Postcards', + description: 'Whether the company can receive postcards', + icon: 'IconMailbox', + defaultValue: false, +}); diff --git a/packages/twenty-apps/fixtures/postcard-app/src/fields/postCardCategoryField.ts b/packages/twenty-apps/fixtures/postcard-app/src/fields/post-card-category.field.ts similarity index 100% rename from packages/twenty-apps/fixtures/postcard-app/src/fields/postCardCategoryField.ts rename to packages/twenty-apps/fixtures/postcard-app/src/fields/post-card-category.field.ts diff --git a/packages/twenty-apps/fixtures/postcard-app/src/fields/postCardNumber.field.ts b/packages/twenty-apps/fixtures/postcard-app/src/fields/post-card-number.field.ts similarity index 100% rename from packages/twenty-apps/fixtures/postcard-app/src/fields/postCardNumber.field.ts rename to packages/twenty-apps/fixtures/postcard-app/src/fields/post-card-number.field.ts diff --git a/packages/twenty-apps/fixtures/postcard-app/src/objects/recipient.object.ts b/packages/twenty-apps/fixtures/postcard-app/src/objects/recipient.object.ts index 5febca5faa..27ca823522 100644 --- a/packages/twenty-apps/fixtures/postcard-app/src/objects/recipient.object.ts +++ b/packages/twenty-apps/fixtures/postcard-app/src/objects/recipient.object.ts @@ -6,6 +6,9 @@ export const RECIPIENT_UNIVERSAL_IDENTIFIER = export const RECIPIENT_EMAIL_FIELD_UNIVERSAL_IDENTIFIER = 'd2a2b3c4-5e6f-4a7b-8c9d-0e1f2a3b4c5d'; +export const RECIPIENT_ADDRESS_FIELD_UNIVERSAL_IDENTIFIER = + 'd3a2b3c4-5e6f-4a7b-8c9d-0e1f2a3b4c5d'; + export default defineObject({ universalIdentifier: RECIPIENT_UNIVERSAL_IDENTIFIER, nameSingular: 'recipient', @@ -23,7 +26,7 @@ export default defineObject({ icon: 'IconMail', }, { - universalIdentifier: 'd3a2b3c4-5e6f-4a7b-8c9d-0e1f2a3b4c5d', + universalIdentifier: RECIPIENT_ADDRESS_FIELD_UNIVERSAL_IDENTIFIER, type: FieldType.ADDRESS, label: 'Mailing Address', name: 'mailingAddress', diff --git a/packages/twenty-apps/fixtures/postcard-app/src/views/all-post-card-recipients.view.ts b/packages/twenty-apps/fixtures/postcard-app/src/views/all-post-card-recipients.view.ts index 944789b9fb..c534dc7854 100644 --- a/packages/twenty-apps/fixtures/postcard-app/src/views/all-post-card-recipients.view.ts +++ b/packages/twenty-apps/fixtures/postcard-app/src/views/all-post-card-recipients.view.ts @@ -1,13 +1,16 @@ +import { defineView } from 'twenty-sdk'; +import { ViewType } from 'twenty-shared/types'; import { POST_CARD_RECIPIENT_UNIVERSAL_IDENTIFIER, SENT_AT_FIELD_UNIVERSAL_IDENTIFIER, } from '../objects/post-card-recipient.object'; -import { defineView } from 'twenty-sdk'; -import { ViewType } from 'twenty-shared/types'; export const ALL_POST_CARD_RECIPIENTS_VIEW_ID = 'b1a2b3c4-0003-4a7b-8c9d-0e1f2a3b4c5d'; +export const POST_CARD_RECIPIENT_SENT_AT_FIELD_UNIVERSAL_IDENTIFIER = + 'fd959c6f-3465-4a3a-b7ad-3f4004fffc9a'; + export default defineView({ universalIdentifier: ALL_POST_CARD_RECIPIENTS_VIEW_ID, name: 'All Post Card Recipients', @@ -17,7 +20,8 @@ export default defineView({ position: 2, fields: [ { - universalIdentifier: 'bf1a2b3c-0004-4a7b-8c9d-0e1f2a3b4c5d', + universalIdentifier: + POST_CARD_RECIPIENT_SENT_AT_FIELD_UNIVERSAL_IDENTIFIER, fieldMetadataUniversalIdentifier: SENT_AT_FIELD_UNIVERSAL_IDENTIFIER, position: 0, isVisible: true, diff --git a/packages/twenty-apps/fixtures/postcard-app/src/views/all-recipients.view.ts b/packages/twenty-apps/fixtures/postcard-app/src/views/all-recipients.view.ts index 1d8a7f8816..df739224e3 100644 --- a/packages/twenty-apps/fixtures/postcard-app/src/views/all-recipients.view.ts +++ b/packages/twenty-apps/fixtures/postcard-app/src/views/all-recipients.view.ts @@ -1,9 +1,10 @@ +import { defineView } from 'twenty-sdk'; +import { ViewType } from 'twenty-shared/types'; import { + RECIPIENT_ADDRESS_FIELD_UNIVERSAL_IDENTIFIER, RECIPIENT_EMAIL_FIELD_UNIVERSAL_IDENTIFIER, RECIPIENT_UNIVERSAL_IDENTIFIER, } from '../objects/recipient.object'; -import { defineView } from 'twenty-sdk'; -import { ViewType } from 'twenty-shared/types'; export const ALL_RECIPIENTS_VIEW_ID = 'b1a2b3c4-0002-4a7b-8c9d-0e1f2a3b4c5d'; @@ -23,5 +24,13 @@ export default defineView({ isVisible: true, size: 200, }, + { + universalIdentifier: 'bf1a2b3c-0004-4a7b-8c9d-0e1f2a3b4c5d', + fieldMetadataUniversalIdentifier: + RECIPIENT_ADDRESS_FIELD_UNIVERSAL_IDENTIFIER, + position: 1, + isVisible: true, + size: 150, + }, ], }); diff --git a/packages/twenty-apps/hello-world/LLMS.md b/packages/twenty-apps/hello-world/LLMS.md index b165db0d14..4227b88d35 100644 --- a/packages/twenty-apps/hello-world/LLMS.md +++ b/packages/twenty-apps/hello-world/LLMS.md @@ -1,7 +1,7 @@ ## Base documentation - Documentation: https://docs.twenty.com/developers/extend/capabilities/apps -- Rich app example: https://github.com/twentyhq/twenty/tree/main/packages/twenty-sdk/src/app-seeds/rich-app +- Rich app example: https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/fixtures/postcard-app ## UUID requirement diff --git a/packages/twenty-apps/hello-world/src/objects/example-object.ts b/packages/twenty-apps/hello-world/src/objects/example-object.ts index 1284bb2a35..5820034c1f 100644 --- a/packages/twenty-apps/hello-world/src/objects/example-object.ts +++ b/packages/twenty-apps/hello-world/src/objects/example-object.ts @@ -14,7 +14,8 @@ export default defineObject({ labelPlural: 'Example items', description: 'A sample custom object', icon: 'IconBox', - labelIdentifierFieldMetadataUniversalIdentifier: NAME_FIELD_UNIVERSAL_IDENTIFIER, + labelIdentifierFieldMetadataUniversalIdentifier: + NAME_FIELD_UNIVERSAL_IDENTIFIER, fields: [ { universalIdentifier: NAME_FIELD_UNIVERSAL_IDENTIFIER, diff --git a/packages/twenty-apps/internal/call-recording/LLMS.md b/packages/twenty-apps/internal/call-recording/LLMS.md index fb6e419876..f8d437390b 100644 --- a/packages/twenty-apps/internal/call-recording/LLMS.md +++ b/packages/twenty-apps/internal/call-recording/LLMS.md @@ -1,7 +1,7 @@ ## Base documentation - Documentation: https://docs.twenty.com/developers/extend/capabilities/apps -- Rich app example: https://github.com/twentyhq/twenty/tree/main/packages/twenty-sdk/src/app-seeds/rich-app +- Rich app example: https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/fixtures/postcard-app ## Common Pitfalls