ci/woodpecker/pr/calendar Pipeline was successful
ci/woodpecker/pr/cli Pipeline was successful
ci/woodpecker/pr/config Pipeline was successful
ci/woodpecker/pr/db Pipeline was successful
ci/woodpecker/pr/jobs Pipeline was successful
ci/woodpecker/pr/video-chat Pipeline was successful
ci/woodpecker/pr/web Pipeline was successful
ci/woodpecker/pr/worker Pipeline was successful
ci/woodpecker/push/calendar Pipeline was successful
ci/woodpecker/push/cli Pipeline was successful
ci/woodpecker/push/config Pipeline was successful
ci/woodpecker/push/db Pipeline was successful
ci/woodpecker/push/jobs Pipeline was successful
ci/woodpecker/push/video-chat Pipeline was successful
ci/woodpecker/push/web Pipeline was successful
ci/woodpecker/push/worker Pipeline was successful
1.0 KiB
1.0 KiB
Development
Read the philosophy. Then resist the urge to add a plugin system.
run it
you can use Node 26 and pnpm (versions in mise.toml) directly. or you can use
docker. one is documented-ish. the other is not.
docker development
With Docker installed, start from apps/web:
mkdir -p config data public
cp -n ../../docs/when.example.yaml config/when.yaml
chmod 600 config/when.yaml
Fill in config/when.yaml and set YAML url.app to http://localhost:5173.
No .env file or session key is required. If you want interpolation, create an
optional .env beside the development Compose file. To keep sessions across
restarts, set auth.secret in YAML or supply a stable AUTH_SECRET.
Then run:
docker compose -f docker-compose.dev.yml up --build
Web is on 5173, Mailpit on 8025. The sample Compose file is for deployment, not hot reload.
Testing
write more than zero but not so many they aren't worth their costs. Use the cheapest test that proves the behavior.