17d01aff21
- Build frontend assets natively with Bun to dist/public/ via `src/index.html` entrypoint - Serve static assets in production with `Cache-Control: public, max-age=31536000, immutable` caching headers - Preserve native `bun run dev` routing for seamless HMR by retaining development mode conditions in the server router - Exclude `index.html` from long-term cache headers to allow for production updates
excali-box
Private self-hosted Excalidraw with Bun and SQLite.
This is bare wrapper around the excalidraw packages that adds autosave and disk-persistence. No auth to keep things simple - you either run in a private network or put it behind a Caddy auth or similar solutions.
GPT 5.5 generated
Pull from GHCR and run
Images are published to:
ghcr.io/ruinivist/excalidraw-box:<version>
docker pull ghcr.io/ruinivist/excalidraw-box:latest
docker run --rm -p 127.0.0.1:3000:3000 -v "$PWD/excali-box-data:/data" ghcr.io/ruinivist/excalidraw-box:latest
Run locally
bun install
bun run dev
Open http://localhost:3000.
Test
bun run test
bun run typecheck
Build the image
docker build -t excali .
docker run --rm -p 127.0.0.1:3000:3000 -v "$PWD/excali-box-data:/data" excali
This will make the data persistent in the excali-box-data folder in the current directory, the site will be available at localhost:3000.