Skip to content

docs(vercel): lead with the four-step deploy, and fix the install e2e - #245

Merged
jouwdan merged 1 commit into
mainfrom
claude/mei-135-vercel-docs-and-install-e2e
Aug 26, 2026
Merged

docs(vercel): lead with the four-step deploy, and fix the install e2e#245
jouwdan merged 1 commit into
mainfrom
claude/mei-135-vercel-docs-and-install-e2e

Conversation

@jouwdan

@jouwdan jouwdan commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

Two things, bundled because the second is fallout from #244 and blocking CI.

The Vercel page predated the Deploy Button

It was not merely badly ordered — it was wrong. It told the reader to import their own repository and set a build command of:

community migrate && forum-web build

with no --at-root, so the artefact lands two directories from where Vercel reads it. And its "What you need" table asked for a managed PostgreSQL, a managed Redis, a mail provider and a domain. All four now arrive with the deploy.

The new shape

  • ## Deploy it — four steps at the top. Press the button, connect the four products (Neon, Upstash, Blob, Resend), generate the two 32-character secrets, deploy, open /install. Plus the one value worth checking afterwards, APP_URL.
  • ## Before you commit to this route — who it suits, what it costs, the limits no configuration moves.
  • ## Things to know — the tick and its cadence, maxDuration, build-time migration, the installer, mail, blob vs bucket, both database strings, the derivation order.
  • ## Configuring a project by hand — the manual route kept whole, with the build command corrected and the requirements table that used to sit at the top.
  • ## Leaving Vercel — unchanged, and still the section that makes the rest of the page acceptable.

Nothing was deleted; the page went from 845 to ~920 lines. The reorganisation was done by parsing the file into sections and reassembling them, rather than retyping, so moved prose is byte-identical.

The two anchors other documents link into are preserved verbatim#how-the-blob-store-authenticates (from disaster-recovery.md and scaling.md) and #when-a-derivation-cannot-resolve (from internationalisation.md). Self-links to the three renamed headings were rewritten; docs:links:check passes across 31 documents and 659 headings.

The install e2e assumed the installer migrates

install-no-js.spec.ts starts from what it called an empty database and expects to reach a validation error at "Create the administrator". #244 stopped the installer applying migrations, so it now fails at step 1 instead:

"Check the schema" did not finish. The database does not have every table this board needs…

The fixture had conflated two things under one seeded flag: applying the schema, and inserting fixture rows. They are separate now. The install database is { seeded: false, migrated: true } — schema, no rows — which is the state a board is genuinely in when someone opens /install: migrations run before the board serves anything, from the container entrypoint or the deploy build command.

A genuinely empty database would now fail that first step, and correctly so. That is the behaviour, not a gap in the test.

The board project's database is untouched: migrated defaults to seeded, so its code path is identical to before.

Verification

  • pnpm verify green — 7,876 tests, 449 files
  • the install project passes locally, watched go green after the fixture change
  • the full suite was re-run locally with output captured; this box's pre-installed Chromium is older than the pinned Playwright, so it needs the config's existing PLAYWRIGHT_CHROMIUM_PATH hatch — CI has the matching browser and needs nothing
  • docs:links:check, docs:index:check and site:docs:check all pass

Fixes MEI-135.


Generated by Claude Code

The page predated the Deploy Button. It told the reader to import their
own repository, set a build command of `community migrate && forum-web
build` — without `--at-root`, so the artefact lands where Vercel does not
read it — and to bring their own managed Postgres, Redis, mail provider
and domain. All four now arrive with the deploy.

It opens with the route: press the button, connect the four products,
generate two secrets, deploy, open /install. Everything that is not a step
moved behind it, split into what decides whether the route suits you at
all and what to come back to when the platform behaves unlike a server.
The manual route is kept whole under its own heading, with the build
command corrected and the requirements table that used to be at the top.

The two anchors other documents link to are preserved verbatim.

The install e2e started from a genuinely empty database and relied on the
installer to migrate it, so it failed on its first step rather than
reaching the validation error it was written to test. The fixture had
conflated applying the schema with inserting fixture rows under one flag;
they are separate now, and the install database carries the schema with no
rows — the state a board is genuinely in when someone opens /install. A
genuinely empty one would fail that step, and correctly so.
@jouwdan
jouwdan merged commit 846474b into main Aug 26, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants