twenty/packages/twenty-apps/examples/postcard
Charles Bochet 15eb3e7edc
feat(sdk): use config file as single source of truth, remove env var fallbacks (#19409)
## Summary

- **Config as source of truth**: `~/.twenty/config.json` is now the
single source of truth for SDK authentication — env var fallbacks have
been removed from the config resolution chain.
- **Test instance support**: `twenty server start --test` spins up a
dedicated Docker instance on port 2021 with its own config
(`config.test.json`), so integration tests don't interfere with the dev
environment.
- **API key auth for marketplace**: Removed `UserAuthGuard` from
`MarketplaceResolver` so API key tokens (workspace-scoped) can call
`installMarketplaceApp`.
- **CI for example apps**: Added monorepo CI workflows for `hello-world`
and `postcard` example apps to catch regressions.
- **Simplified CI**: All `ci-create-app-e2e` and example app workflows
now use a shared `spawn-twenty-app-dev-test` action (Docker-based)
instead of building the server from source. Consolidated auth env vars
to `TWENTY_API_URL` + `TWENTY_API_KEY`.
- **Template publishing fix**: `create-twenty-app` template now
correctly preserves `.github/` and `.gitignore` through npm publish
(stored without leading dot, renamed after copy).

## Test plan

- [x] CI SDK (lint, typecheck, unit, integration, e2e) — all green
- [x] CI Example App Hello World — green
- [x] CI Example App Postcard — green
- [x] CI Create App E2E minimal — green
- [x] CI Front, CI Server, CI Shared — green
2026-04-08 06:49:10 +02:00
..
.github/workflows feat(sdk): use config file as single source of truth, remove env var fallbacks (#19409) 2026-04-08 06:49:10 +02:00
public Improve apps (#19256) 2026-04-03 12:44:03 +00:00
src feat(sdk): use config file as single source of truth, remove env var fallbacks (#19409) 2026-04-08 06:49:10 +02:00
.gitignore Improve apps (#19256) 2026-04-03 12:44:03 +00:00
.nvmrc Improve apps (#19256) 2026-04-03 12:44:03 +00:00
.oxlintrc.json Improve apps (#19256) 2026-04-03 12:44:03 +00:00
.yarnrc.yml Improve apps (#19256) 2026-04-03 12:44:03 +00:00
AGENT.md Improve apps (#19256) 2026-04-03 12:44:03 +00:00
CLAUDE.md Improve apps (#19256) 2026-04-03 12:44:03 +00:00
LLMS.md Improve apps (#19256) 2026-04-03 12:44:03 +00:00
package.json Improve apps (#19256) 2026-04-03 12:44:03 +00:00
README.md Improve apps (#19256) 2026-04-03 12:44:03 +00:00
tsconfig.json Improve apps (#19256) 2026-04-03 12:44:03 +00:00
tsconfig.spec.json Improve apps (#19256) 2026-04-03 12:44:03 +00:00
vitest.config.ts feat(sdk): use config file as single source of truth, remove env var fallbacks (#19409) 2026-04-08 06:49:10 +02:00
yarn.lock Improve apps (#19256) 2026-04-03 12:44:03 +00:00

Postcard App — Twenty App Example

A rich example app showcasing all Twenty app entity types. Use this as a reference when building your own apps.

What's included

This app demonstrates every entity type available in the Twenty SDK:

Entity Files What it shows
Application src/application.config.ts App metadata, application variables, server variables
Objects src/objects/ Custom objects with inline fields, junction tables
Fields src/fields/ Standalone fields, relations (ONE_TO_MANY, MANY_TO_ONE), extending standard objects
Logic Functions src/logic-functions/ HTTP routes, database event triggers, cron schedules, tool functions, install hooks
Front Components src/components/ React components rendered inside Twenty's UI
Roles src/roles/ Permission roles with object and field-level access control
Views src/views/ Saved table views with column configuration
Navigation src/navigation-menu-items/ Sidebar links targeting views
Skills src/skills/ AI skill providing context to agents
Agents src/agents/ AI agent with a system prompt
Page Layouts src/page-layouts/ Custom record page with a front component widget

Getting started

# From this directory
yarn install
yarn twenty dev

Or use it as a template via create-twenty-app:

npx create-twenty-app@latest my-app --example postcard

Learn more