Shared plans without the project-management overhead.
Tasks, notes, polls, and reminders in one simple Space.
Try Plainspace → · Self-host · Contribute
One shared page for a weekend trip, household, club, or small team.
- Share one link — people can participate in any browser, without an app or account.
- Keep everything together — tasks, notes, checklists, polls, and availability.
- Stay in sync — live updates and optional push reminders keep the plan moving.
- Choose how to run it — use the hosted version or self-host with Docker.
- Use the hosted app: create a Space on plainspace.org →
- Run it yourself: read the complete self-hosting guide →
git clone https://github.com/super-productivity/plainspace.git
cd plainspace
cp .env.production.example .env # fill in the required values
docker compose pull && docker compose up -d --no-buildThen put a reverse proxy in front for TLS. The full guide — env values, nginx/Caddy configs, email, backups, upgrades — is in docs/self-hosting.md. If you host for anyone beyond yourself, replace the legal pages with your own (see the guide's §9).
Plainspace is an npm-workspaces TypeScript application with a SolidJS PWA, a Hono API, and PostgreSQL via Drizzle ORM.
- Install Node.js 22 and Docker.
- Install dependencies with
npm ci. - Copy
.env.exampleto.envand adjust the local database settings. - Start PostgreSQL and apply migrations with
npm run db:up. - Start the API and web app with
npm run dev.
| Command | Purpose |
|---|---|
npm run dev |
Start the Hono API and Vite development server |
npm run check |
Run type checking, ESLint, and formatting checks |
npm test |
Run web and server tests |
npm run test:e2e |
Run the Playwright browser suite |
npm run build |
Build the production PWA |
npm run db:generate |
Generate migration metadata (see warning below) |
npm run db:migrate |
Apply pending database migrations |
Migration warning: do not run
db:generatefor a new schema change yet. Drizzle snapshots stop at migration 0012, so post-0012 migrations are hand-reviewed SQL plus_journal.json. Reconcile the snapshot chain before generating new migrations from the schema.
packages/shared— shared schemas, types, and constantspackages/server— Hono routes, Postgres schema, migrations, and servicespackages/web— SolidJS application and service workerpackages/e2e— Playwright browser testsdocs— self-hosting guide, architecture decisions, and design plans
Production intentionally runs one API process because SSE presence, rate limiting, and reminder recovery are in memory. See Self-hosting and Scaling decision before changing that topology.
See CONTRIBUTING.md. Security reports: SECURITY.md.
