Install Atelier and run the local demo
On this page
Start the supplied application, Atelier, on your machine, create a fictional account, and save your first project. Email stays in a local mailbox and subscription billing is simulated: you do not need a mail provider, a Stripe account or a payment card.
Before you start
- Use Linux or macOS 13.5 or later.
- Accept the invitation to the private GitHub repository using the GitHub account designated for your purchase.
- Install Node.js 24.22.1 or later within version 24 and npm 11. Check with
node --versionandnpm --version. - Have a running PostgreSQL 18 server on your machine, an empty database dedicated to this demo, and a database user with a password and permission to create tables in that database. The kit does not install or start PostgreSQL.
- Have a browser and an internet connection for downloading dependencies.
If you already have PostgreSQL 18, use its host port, database name and credentials
in step 2. Use 127.0.0.1 or localhost as the database host.
If you prefer Docker and have it installed and running, this example creates a
dedicated PostgreSQL server and database. Replace YOUR_LOCAL_DB_PASSWORD before
running it, and keep that password for step 2. A password made of letters and digits
avoids URL-encoding issues in the connection string.
docker run --name atelier-demo-db \
-e POSTGRES_USER=atelier \
-e POSTGRES_PASSWORD=YOUR_LOCAL_DB_PASSWORD \
-e POSTGRES_DB=atelier \
-p 127.0.0.1:55439:5432 \
-d postgres:18.6-bookworm
docker exec atelier-demo-db pg_isready -U atelier -d atelier
Wait until the second command reports accepting connections; run it again if the
server is still starting. This example stores the database in Docker-managed
storage. Keep the container to resume the demo later.
Get the sources
If you already have the acquired sources, confirm that they match the source commit in your offer, then continue with Install dependencies. If you cannot establish which revision you have, retrieve it below or contact Alto Brio for your delivery reference.
Copy the source commit shown in your offer after the repository name. Replace
RECEIVED_SOURCE_COMMIT with that commit. If you no longer have the offer,
contact Alto Brio for your delivery reference.
ATELIER_COMMIT='RECEIVED_SOURCE_COMMIT'
printf '%s\n' "$ATELIER_COMMIT" | grep -Eq '^[0-9a-f]{40}$' &&
git clone --origin atelier https://github.com/altobrio/atelier.git my-saas &&
cd my-saas &&
test "$(git rev-parse --verify "${ATELIER_COMMIT}^{commit}")" = "$ATELIER_COMMIT" &&
git switch -C main "$ATELIER_COMMIT" &&
git branch --unset-upstream &&
test "$(git rev-parse HEAD)" = "$ATELIER_COMMIT"
Run the commands as one block. If a command fails, stop and check the commit and
the error before retrying. The clone needs an unused my-saas directory. If a
later step fails after entering the new clone, return to its parent directory.
Choose another unused directory or remove only the new, incomplete clone before
retrying.
On success, main in this fresh clone starts at the exact source commit in your offer.
The atelier remote retrieves kit updates; main holds your application changes.
Before customizing or deploying, set up your own private repository.
Alternatively, while signed in to the designated GitHub account, replace
RECEIVED_SOURCE_COMMIT in the following address with the full commit from your
offer and open it in your browser to download that revision:
https://github.com/altobrio/atelier/archive/RECEIVED_SOURCE_COMMIT.zip
Extract the archive into a writable folder. Run the following commands from the
source folder, alongside package.json.
1. Install dependencies
npm ci
Wait for the command to finish successfully before continuing.
2. Configure the local demo
If .env.local already exists, edit it instead of overwriting it: skip the cp
command below. For a fresh installation, copy .env.example
to .env.local, then generate a secret:
cp .env.example .env.local
node -e "console.log(require('node:crypto').randomBytes(32).toString('hex'))"
Open .env.local in your editor and set these two values:
DATABASE_URL=postgres://atelier:YOUR_LOCAL_DB_PASSWORD@127.0.0.1:55439/atelier
BILLING_WEBHOOK_SECRET=PASTE_THE_GENERATED_HEX_VALUE_HERE
The database URL must contain your actual username, password, port and database
name. The example matches the Docker command above; other installations may use
port 5432. URL-encode special characters in credentials, such as @ as %40.
Paste the full generated value for BILLING_WEBHOOK_SECRET and keep it private.
.env.local is ignored by Git.
Use the default demo mode. Leave APP_MODE and BILLING_MODE unset in your terminal
and configuration; do not use the public hosting template runtime.env.example
for this walkthrough. Existing environment variables can override .env.local.
3. Check the connection and prepare the database
npm run doctor -- --connection-only
npm run db:migrate
npm run doctor -- --database
The first check should report configurationValid: true, mode: 'demo' and
databaseReachable: true. Migration creates the application tables in the database
you selected and reports Applied migrations. The final check verifies the
installed migrations. clientTlsVerified: false is expected for this local demo.
On a later run, db:migrate reports Database is up to date; no changes. when
nothing needs applying. There are no preloaded demo accounts: you create one next.
4. Start the application
npm run dev
Keep this terminal running. Once it reports ready, open
http://127.0.0.1:3000. The application is named Atelier.
Use this same hostname throughout the walkthrough, including mailbox links.
If port 3000 is occupied, stop this command and choose another port:
npm run dev -- --port 3001
Then open http://127.0.0.1:3001. Use the actual port for all subsequent links.
5. Create and verify a fictional account
- In Create account, enter
alex@demo.testin Fictional email (.test), a demo-only password of 12–128 characters in Local password, andDemo studioin Team name. Use fictional data throughout this demo. - Click Create account. The confirmation asks you to open the local mailbox.
- Follow the local mailbox link, which opens a new tab. Under Demo emails,
find the Verify email message addressed to
alex@demo.testand click its Verify email link. - On the page that opens, click Verify email to confirm. Wait for Email verified.
- Select Sign in and enter the same email and password. Click Sign in.
You should now see your team's workspace. No message is delivered to an external
email inbox. You can also open the local mailbox at /mailbox on the same server.
6. Save your first project
- In Subscription, click Activate subscription. Its status becomes Active. This is a local simulation and does not charge anything.
- Open Create a project. Enter
My first projectin Name and, optionally, a description. Click Create project. - Confirm that Project created. appears and your project is listed. Reload the page: the project should still be there.
Your account owns the new team. An active subscription is required to create or archive projects; the workspace shows the team's project quota.
Stop and return later
Press Ctrl+C in the terminal running npm run dev. Your account and project
remain in PostgreSQL. To return, start your database if necessary, run npm run dev
from the same folder and sign in with the account you created. If you chose port
3001, reuse npm run dev -- --port 3001 and http://127.0.0.1:3001.
For the Docker example, use docker stop atelier-demo-db to stop that demo database
and docker start atelier-demo-db to start it again. Keep .env.local and the
container to reuse the same configuration and data.
If a step fails
| Symptom | What to check |
|---|---|
| Node version rejected or dependency installation fails | Check the Node and npm versions above, then rerun npm ci in the source folder. |
| Doctor cannot connect | Start PostgreSQL, confirm it is version 18, and check the host port, database name, user and password in .env.local. The database must already exist. |
| Invalid local secret | Replace BILLING_WEBHOOK_SECRET with the full generated value from step 2. |
| Missing tables or pending migrations | Stop this copy's development server, run npm run db:migrate, then npm run doctor -- --database before restarting it. |
| No verification message visible | Check /mailbox on the same host and port, click Refresh mailbox, and look for your exact fictional address. |
| Account already exists | Sign in with the account you created earlier, or use a different fictional .test address for a new account. |
| Project creation unavailable | Confirm you are in your new team's workspace and have activated its simulated subscription. Check the displayed quota. |
Restart npm run dev after changing configuration.
Continue with your application
Explore teams, permissions and subscriptions, then customize the application for your product. To try real email and Stripe test billing, prepare a public configuration and follow the staging deployment.