--- title: Build Small emoji: 🛠️ colorFrom: green colorTo: gray sdk: docker app_port: 7860 pinned: false --- # Build Small · Hackathon Field Guide The field guide and partner directory for the Build Small hackathon — a SvelteKit site listing each sponsor's models, capabilities, prizes, starter Spaces and support channels. > Configuration reference for the Spaces metadata above: > https://huggingface.co/docs/hub/spaces-config-reference ## Deployment (Hugging Face Spaces · Docker) This Space runs as a **Docker SDK** Space. On every push, Hugging Face builds the [`Dockerfile`](./Dockerfile) and runs the resulting container, which serves the app on the port declared by `app_port` (`7860`). The image is a multi-stage build: 1. **build stage** — installs dependencies with `pnpm` and runs `pnpm run build`. The app uses [`@sveltejs/adapter-node`](https://svelte.dev/docs/kit/adapter-node), which emits a standalone Node server at `build/index.js`. 2. **run stage** — installs production dependencies only, copies the built server, and launches it as a non-root user (UID 1000, as Spaces requires). The server reads `PORT` and `HOST` from the environment; the Dockerfile sets `PORT=7860` and `HOST=0.0.0.0` so it binds correctly inside the Space. Note: the site is fully prerendered (`prerender = true`), so the Node server is mostly serving static HTML today. Docker + adapter-node leaves room to add server-side routes or SSR later without changing the deploy path. ## Local development ```sh pnpm install pnpm run dev ``` ## Production build ```sh pnpm run build # outputs build/ via adapter-node node build/index.js # runs the server (defaults to PORT=3000) ``` ## Build the container locally ```sh docker build -t build-small . docker run --rm -p 7860:7860 build-small # open http://localhost:7860 ```