Quickstart
Prerequisites
- Docker
- Node 20+
Run
In one terminal, install and start the database:
git clone https://github.com/rocicorp/hello-zero.git
cd hello-zero
npm install
npm run dev:db-up
Not using npm?
Zero (the server part) depends on @rocicorp/zero-sqlite3
which is a binary.
Non npm package managers do not run postinstall
scripts by default. To allow the binary to be correctly installed you can enable
the install scripts by modifying your package.json
.
pnpm
To allow SQLite to be installed correctly for pnpm, you need
to add the
pnpm.onlyBuiltDependencies
field to your package.json
:
"pnpm": {
"onlyBuiltDependencies": [
"@rocicorp/zero-sqlite3"
]
}
Bun
To allow SQLite to be installed correctly for Bun, you need
to add the
trustedDependencies
field to your package.json
:
"trustedDependencies": [
"@rocicorp/zero-sqlite3"
],
In a second terminal, start zero-cache
:
cd hello-zero
npm run dev:zero-cache
In a final terminal, start the UI:
cd hello-zero
npm run dev:ui
Quick Overview
hello-zero
is a demo app that allows querying over a small dataset of fake messages between early Zero users.
Here are some things to try:
- Press the Add Messages button to add messages to the UI. Any logged-in or anonymous users are allowed to add messages.
- Press the Remove Messages button to remove messages. Only logged-in users are allowed to remove messages. You can hold shift to bypass the UI warning and see that write access control is being enforced server-side – the UI flickers as the optimistic write happens instantly and is then reverted by the server. Press login to login as a random user, then the remove button will work.
- Open two different browsers and see how fast sync propagates changes.
- Add a filter using the From and Contains controls. Notice that filters are fully dynamic and synced.
- Edit a message by pressing the pencil icon. You can only edit messages from the user you’re logged in as. As before you can attempt to bypass by holding shift.
- Check out the SQL schema for this database in
seed.sql
. - Login to the database with
psql postgresql://user:password@127.0.0.1:5430/zstart
(or any other pg viewer) and delete or alter a row. Observe that it deletes from UI automatically.
Detailed Walkthrough
Deployment
You can deploy Zero apps to most cloud providers that support Docker and Postgres. See Deployment for more information.