Setup
Run Elastic Projects on your laptop, or use the live host at elasticprojects.com.
Requirements
- Node.js 22 or newer
- npm
Optional for live Spaces sign-in:
- An account on a Spaces-capable PDS
- Docker if you run an Organization Data Server yourself
Local app
git clone <your-origin-url>
cd elasticprojects
npm install
npm run dev
Open http://127.0.0.1:43147.
Local preview (no PDS)
On the homepage, choose Open local preview. That seeds demo organizations and projects in SQLite.
| Handle | Org | Example projects |
|---|---|---|
labs.elasticprojects.test |
Elastic Labs | foundations, kitchen, elastic |
design.elasticprojects.test |
Elastic Design (division) | brand |
loaf.elasticprojects.test |
Loaf Media (acquired) | studio |
Pull and publish in the UI use elasticprojects.db. There are no network calls.
Environment variables
| Variable | Default | Purpose |
|---|---|---|
UI_PUBLIC_URL |
http://127.0.0.1:43147 |
Public origin for OAuth metadata |
DATABASE_PATH |
elasticprojects.db |
Local SQLite |
DATABASE_URL |
unset | Neon Postgres in production |
PLC_URL |
https://plc.directory |
DID directory |
BSKY_URL |
https://public.api.bsky.app |
Handle search |
ep CLI
The CLI reads and writes the same SQLite file as the web UI.
npm run ep demo seed
npm run ep -- pull labs/elastic --dir ./product-tree
npm run ep -- push labs/elastic --dir ./product-tree -m "Update notes"
npm run ep -- status labs/elastic
Do not run ep pull into the repository root. Use a subdirectory such as
./product-tree.
For a remote host, pass --remote and --token. See
source control.
Organization Data Server
Open Organizations (/orgs):
- Create an organization.
- Choose Host here, Local pack, or an external PDS URL.
- Create projects under that organization.
Local pack needs about 2 vCPU, 4 GiB of memory, and 20 GiB of disk. See hosted ODS.
Live Spaces
- Sign in with a Spaces handle on the homepage.
- Open or create a project.
- Pull and publish in the working tree.
Deploy
Production for this product is elasticprojects.com on Vercel with Neon Postgres.
npx vercel link
npx vercel env add UI_PUBLIC_URL production
npx vercel --prod
Set UI_PUBLIC_URL to the production URL. OAuth metadata uses that origin.
Checks
npm run check
See limits for alpha boundaries.