Run your own copy of Seed on your machine in four commands, and open the product at http://app.localhost.
- Deno 2.
- Docker, installed and running. Podman works too: see When a step fails.
- The GitHub CLI, optional. Without it, press "Use this template" on Seed's GitHub page and clone your new repository instead of step 1.
Create your product's repository from the template, and clone it:
gh repo create my-product --template spy4x/seed --private --cloneOpen its folder:
cd my-productPrepare it:
deno task initIt checks that Docker runs and asks for the project name. It writes
infra/envs/.envwith fresh secrets, the web push keys, and the Seed commit your copy came from. Running it again changes nothing it already set.Start everything:
deno task devThe first start builds the images and takes a few minutes. Later starts take seconds.
| Address | What |
|---|---|
| http://app.localhost | The product. Sign up with any address. |
| http://localhost:3000 | Grafana, the metrics and logs. User admin, password GRAFANA_PASS. |
| http://admin.localhost | The admin app, once you turn it on (below). |
| The website's own host | The public website, once you turn it on (below). |
In development no mail leaves your machine. The worker prints each mail, with its sign-up code, in its log:
deno task compose logs worker
To open the admin app, add admin to COMPOSE_PROFILES in infra/envs/.env and run
deno task dev again. Then make yourself its administrator, with a password you type:
deno task compose exec worker deno task operator:create you@example.com
To run the public website, add mpa to COMPOSE_PROFILES, set MPA_DOMAIN=site.localhost, run
deno task dev again, and open http://site.localhost.
- Docker is not running.
deno task initstops and says what to install or start. Start Docker Desktop, or on Linux runsudo systemctl start docker, then run the step again. - A port is taken.
deno task devrefuses to start and names the port and the setting that moves it, such asDB_HOST_PORT. Change that setting ininfra/envs/.env, or stop what uses the port. - Traefik does not start. Traefik answers on port 80 for every
*.localhostaddress. When another program holds port 80, stop it. When another project already runs a container namedtraefik, Seed uses that one. - You use Podman. When Docker is not running and Podman is,
deno task initpicks Podman and writesCONTAINER_PROVIDER=podmantoinfra/envs/.env. Start Traefik once withdeno task proxy:start, which calls Docker.
Development has the rest of the local stack: every task, the tests and the database.
- Add a feature: copy the notes feature, file by file.
- Deploy to a server.
- Take Seed's updates in your product.