Taking one over
For the developer who has just been handed an application built here.
You can take the whole thing and run it anywhere. That escape hatch is what makes the platform's constraints safe for a business to accept.
Getting the source#
Download source in the application menu. Workspace owners only.
You get the repository, with its git history. Each build is a commit, named
after what was asked for, so the history reads as a record of decisions rather
than as wip forty times.
Running it#
pnpm install
pnpm dev
You will need the environment variables the platform was providing: a database address, storage credentials, and anything in Configuration. Secrets are write-only on the platform, so you will need those from wherever they came from originally.
Reading it#
Start with STACK.md. It is the set of rules the builder was following, which
means it is also an accurate description of the conventions you are looking at —
where things live, what is allowed, what is forbidden.
Then app/pages/ for the screens and server/api/ for the routes. There is no
clever indirection to find; the constraint against inventing architecture
applies to the builder too.
Working on it alongside the platform#
Two things that will bite you otherwise.
A build is not aware of your commits. The workspace is the platform's, and the builder commits into it after every run. If you have been editing the same files somewhere else, you are merging by hand.
Some things belong in Settings, not in code. The page title, the icon, the
link preview, redirects, the robots rules and configuration values are applied
from outside the application. Writing a competing useHead({ title }) gives you
two of them taking turns, which looks like a bug nobody can reproduce.
Taking it over permanently#
A reasonable path when an application outgrows the platform:
- Download the source and put it in your own repository.
- Replace the platform calls — email, SMS, Google, sign-in — with your own, or with a small shim over your provider of choice.
- Stand up your own database, cache and object storage.
- Move DNS when the new copy is answering.
- Stop the application on the platform. Keep it until you are sure.
Nothing in the repository is obfuscated, minified or generated in a form you cannot read. A developer you hire tomorrow will recognise all of it.