| --- |
| 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 |
| ``` |
|
|