Bygga
Type the product name from the box. Bygga shows every assembly step in 3D, with the parts, screws and tools for each one, and reads it out loud.
Check any spot in BC before you shoot: parks, closed areas, bylaws, private land, roads and the fall zone, each with its source.
LifestyleHTML · TypeScriptGitHub @arshmalkanaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗slotscout.ca · Check any spot in British Columbia, rule by rule, before you shoot.
Drop a pin or paste coordinates anywhere in BC and SlotScout shows whether recreational target shooting is restricted there, with the law, the source and the date behind every answer. It never shows green unless every check passed on current data.
This repository builds the site described in BC Shoot Check: Product Requirements (October 18, 2026) and Addendum A, Text-to-Map and Browser Capture, branded as SlotScout. Claude Code sessions start from CLAUDE.md (hard rules); the monthly steps are in RUNBOOK.md.
packages/engine Shared evaluation engine: rule catalogue, coordinate parser, fall-zone compass,
seasonal periods, road notice parser and verdict precedence. Used by the API, app and pipeline.
packages/pipeline Text-to-map pipeline CLI (Addendum A): pull, split, queue, extract, build, validate,
review-packet, test, report, monthly, release. approve and signoff are for people only.
apps/api Check API (Fastify). Reads live official data and runs the engine. Also serves the web app.
apps/web The website (React + MapLibre): map, spot report, spot finder, rule and source pages.
sources/ registry.yaml: every source with owner, URL, method, cadence and freshness limit.
config.toml Pipeline settings (model, thresholds, validation limits). Secrets live only in .env.
inbox/ Files a person drops in by hand (BC Laws copies until API permission arrives).
raw/<YYYY-MM>/ Every pulled file with its SHA-256; GIS layers keep counts and content hashes in manifest.json.
queue/ One task per text unit; answers/run1 and run2 hold the two independent extractions.
prompts/, schema/ Versioned extraction prompts and JSON schemas.
rules/ Built rule features (one file per rule ID), the road notice store and bylaw rule lists.
review/<YYYY-MM>/ Review packets for a person (index.html), decisions and sign-off.
releases/<YYYY-MM>/ Release packages; publishable only after approvals and legal sign-off.
reports/ Change reports, test reports, monthly reports, run logs, status.json.
data/ Release pointer, Wildlife Act coverage, bylaw register, bylaw sites, aliases, regression set.
scripts/ Regression gate, bylaw register and sitemap builders.
docs/ Digitising guide.
The engine is the same code for a single pin, the spot finder and (later) the colour map, so they can never disagree (PRD 8).
Requires Node 22.
npm install
npm run dev # API on :8787 and the web app on :5173 (proxying /v1 to the API)
Open http://localhost:5173. Other commands:
npm test # engine and API tests, including the no-false-green suite
npm run typecheck
npm run build # apps/api/dist/server.mjs and apps/web/dist
npm start # production server on :8787, serving the API and the built site
npm run validate:data # schema checks for registers and rules (make validate)
npm run regression # release gate against live data: fails on any false green
npm run pipeline -- status # the pipeline CLI (see RUNBOOK.md)
npm run register:bylaws # refresh the bylaw register from official boundaries
npm run sitemap # regenerate apps/web/public/sitemap.xml
docker compose up -d web # site and API on http://localhost:8787
docker compose run --rm ingest make monthly # the monthly pipeline (Playwright + Chromium)
docker compose run --rm ingest make status
Both services bind-mount this repository: the site reads rules/, sources/, data/ and reports/ as the pipeline writes them (it reloads within a minute), and everything the pipeline produces lands in the repository so it can be committed and traced. Settings are in .env.example; behind a TLS-inspecting proxy set HTTPS_PROXY and EXTRA_CA_CERTS (a CA bundle mounted into the container), and build with --build-arg HTTPS_PROXY=... --secret id=extra_ca,src=<ca.crt>.
make pull split queue extract build validate review-packet test report # or: make monthly
make release # candidate until signed off
config.toml extractor): api when ANTHROPIC_API_KEY is in .env (Claude API, structured JSON output, server-side refusal fallbacks), agent (Claude Code reads the queue and a fresh subagent does the second run), manual (a person fills the same answer files).bclaws.api_confirmed); until then a person saves copies into inbox/bclaws/.RUNBOOK.md).GET /v1/check?lat=49.41474&lon=-121.7547&type=shotgun_shot&fz=250 gathers, in parallel:
The engine then evaluates every rule in the catalogue (F1 to F6, W1 to W13, P1 to P9, L1 to L4, I1 to I3, O1 to O4, S1 to S7), applies freshness limits from the source register, finds the safe throw directions, and returns the verdict, the 12 green lights and the full checklist. Responses are cached per layer (15 minutes for wildfire layers, hours for the rest), and coordinates are never logged.
Other endpoints: POST /v1/check/batch (up to 100 points), GET /v1/finder, /v1/rules, /v1/rules/{id}, /v1/releases, /v1/sources, /v1/coverage, /v1/pipeline-status, /v1/search, /v1/map-layers, /v1/tiles/{layer}/{z}/{x}/{y}.png, POST /v1/reports. Public and rate-limited to 60 requests per minute per IP.
Working now, against live data:
Still to do before a region can turn green (PRD 13):
reports/ for the latest hand-off report.data/bylaws.json); each bylaw must be found, digitised and reviewed. The register is built from the official boundary layers, which currently hold 160 municipalities and 159 electoral areas; make validate reports the difference until a person identifies the jurisdiction concerned.Contains information licensed under the Open Government Licence – British Columbia and the Open Government Licence – Canada. BC Laws text is never crawled automatically (BC Laws' robots.txt disallows it); a person saves the monthly consolidation into inbox/ until the King's Printer confirms API use in writing. The language model receives public legal text only, never user data. Base maps and imagery are provided by their owners under their own terms.