No description
  • JavaScript 99%
  • Dockerfile 1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-23 20:21:02 +07:00
.dockerignore initial import 2026-09-23 15:43:12 +07:00
.gitignore initial import 2026-09-23 15:43:12 +07:00
compose.yaml Add auto-deploy polling for experiment repositories 2026-09-23 20:05:17 +07:00
Dockerfile initial import 2026-09-23 15:43:12 +07:00
package-lock.json initial import 2026-09-23 15:43:12 +07:00
package.json initial import 2026-09-23 15:43:12 +07:00
README.md Add auto-deploy polling for experiment repositories 2026-09-23 20:05:17 +07:00
server.mjs Add drag-and-drop reordering for experiments in admin panel 2026-09-23 20:21:02 +07:00

Creatures

Tiny Git-to-static-site deployer for creatures.mdynx.com.

Each experiment is:

  1. added in /admin
  2. cloned from Git
  3. built with npm ci
  4. built with npm run build -- --base=/<slug>/
  5. published from its dist/ directory
  6. listed on /
  7. served at /<slug>/

Auto-deploy

Every POLL_INTERVAL seconds (default 60, 0 disables), Creatures runs git ls-remote against each experiment's repo and redeploys when its branch (or the default branch, if none is set) points at a new commit. A commit that fails to build is not retried; the next push triggers another attempt, or use Deploy in /admin.

Run

cp compose.yaml compose.local.yaml   # optional
docker compose up -d --build

Then reverse proxy:

https://creatures.mdynx.com -> http://127.0.0.1:8080

Change ADMIN_PASSWORD before exposing it publicly.

Caddy example

creatures.mdynx.com {
    reverse_proxy 127.0.0.1:8080
}

Notes

This intentionally assumes npm/Vite-style projects with a dist/ output.

For Vite, Creatures passes:

npm run build -- --base=/<slug>/

so generated assets work under a subpath like /physics-toy/.

A deployed repository's build scripts are executable code. Only deploy repositories you trust.

For private Git repositories, the simplest setup is an SSH clone URL and a read-only SSH key mounted into the container.