Seed CHANGELOG.md and SETUP.md in create-twenty-app scaffold (#22769)

Projects scaffolded with `create-twenty-app` now include two additional
seed files:

- `CHANGELOG.md` with an initial `0.1.0` entry matching the template's
package version
- `SETUP.md` with step-by-step local setup instructions (prerequisites,
install, local server, dev sync, verification commands)

Both files live in `src/constants/template/`, so they flow through the
existing `fs.copy` scaffolding and the vite `copy-assets` build step
with no code changes. Verified `dist/constants/template/` contains both
files after `nx build create-twenty-app`.

The scaffolded `README.md` was also simplified into a marketable front
page for the app being built: a pitch placeholder, a features section,
and links to `SETUP.md` for setup instructions and `CHANGELOG.md` for
history, instead of duplicating dev commands.

Also:

- Adds a regression test asserting the template directory contains both
seed files
- Updates `project-structure.mdx` docs to list the new files in the
scaffold directory tree

---------

Co-authored-by: Martin <martin@twenty.com>
This commit is contained in:
martmull
2026-07-10 10:02:43 +02:00
committed by GitHub
parent 1fe6156cf5
commit 0786f9e793
5 changed files with 84 additions and 15 deletions
@@ -212,6 +212,23 @@ describe('copyBaseApplicationProject', () => {
expect(content).toContain("APP_DESCRIPTION = ''");
});
it.each(['CHANGELOG.md', 'SETUP.md'])(
'should seed %s in the base template',
async (seedFileName) => {
const templateDirectory = join(
__dirname,
'..',
'..',
'constants',
'template',
);
expect(await fs.pathExists(join(templateDirectory, seedFileName))).toBe(
true,
);
},
);
it('should generate unique UUIDs across different scaffolds', async () => {
const firstAppDir = join(testAppDirectory, 'app1');
await fs.ensureDir(join(firstAppDir, 'src', 'constants'));