# Single-user deployment One person, one machine, all your data stays with you. No login, no server process. ## Data layout All data lives under your instance root in a per-user subdirectory: ``` ~/bincio_data/ ← instance root (output.dir in config) index.json ← shard manifest (generated by bincio render/dev) yourname/ index.json ← your BAS feed _merged/ ← sidecar-merged output (served to browser) activities/ edits/ athlete.json ``` `bincio extract` writes into `yourname/` automatically — pass the instance root to `--output`, not the user directory. ## Local development ```bash uv run bincio dev --data-dir ~/bincio_data # → http://localhost:4321/u/yourname/ ``` `bincio dev` without an `instance.db` runs in single-user mode: no login, no API server, just `astro dev`. ## GitHub Pages (free, automated) ```bash uv run bincio render --data-dir ~/bincio_data --deploy github ``` Builds `site/dist/` and pushes it to the `gh-pages` branch. Requires `npx gh-pages` (`npm install -g gh-pages`). Set the repository to serve from the `gh-pages` branch in GitHub → Settings → Pages. ## Static hosting (Netlify, Vercel, Cloudflare Pages, etc.) Build locally and deploy `site/dist/`: ```bash uv run bincio render --data-dir ~/bincio_data # upload site/dist/ to your host ``` Or set up CI: ```yaml # .github/workflows/deploy.yml (example) - run: uv run bincio render --data-dir ~/bincio_data - uses: actions/upload-pages-artifact@v3 with: path: site/dist ``` ## VPS with nginx (read-only) Serve `site/dist/` as a static directory: ```nginx server { listen 80; server_name example.com; root /var/www/bincio/dist; index index.html; location / { try_files $uri $uri/ $uri.html =404; } } ``` ### Enable the edit UI on a VPS To edit activities from the browser on your VPS, run `bincio edit` and proxy `/api/*` to it: ```nginx server { listen 443 ssl; server_name example.com; root /var/www/bincio/dist; location / { try_files $uri $uri/ $uri.html =404; } location /api/ { proxy_pass http://127.0.0.1:4041; proxy_set_header Host $host; } } ``` ```bash uv sync --extra edit uv run bincio edit --data-dir ~/bincio_data ``` Set `PUBLIC_EDIT_URL=` (empty — the proxy makes `/api/` same-origin) in your environment before building. ## Keeping the site up to date After extracting new activities or editing sidecars: ```bash uv run bincio extract --data-dir ~/bincio_data # process new files uv run bincio render --data-dir ~/bincio_data # rebuild site/dist/ rsync -av site/dist/ user@server:/var/www/bincio/dist/ ``` Or automate with a cron job or GitHub Action. ## Privacy note Single-user mode has no authentication. The site is public to anyone with the URL. Use `privacy: private` in sidecar files to hide specific activities, or restrict access at the nginx level (HTTP basic auth, IP allowlist, etc.).