尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Web UI for smokemap-django-backend
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗This is a Next.js project bootstrapped with create-next-app.
The server-side authentication and future identity-provider boundary is
documented in docs/AUTHENTICATION.md.
The non-root staging image, build/runtime configuration boundary, and immutable
provenance requirements are documented in
docs/PRODUCTION_IMAGE.md.
The supported frontend toolchain is Node 22.23.4 (pinned in .nvmrc) with
Yarn 1.22.22. Next.js and eslint-config-next are deliberately aligned at
15.5.28, the maintained Next.js 15 line selected as the bounded upgrade from
the legacy Next.js 13 baseline. Install exactly what yarn.lock records:
nvm use
yarn install --frozen-lockfile
Run the canonical local checks from this repository:
yarn typecheck
yarn lint
yarn test:ci
yarn build
yarn codegen:check
The workspace-level make check and make test commands run the corresponding
checks in the existing Compose container.
For a focused frontend test run in that container:
docker compose exec -T frontend yarn test:ci
test:ci exits after one deterministic run and fails when tests fail or when
Jest discovers no tests. codegen:check regenerates the checked-in GraphQL
types from src/graphql/schema.graphql and fails if they drift. Pull requests
and pushes to development install the frozen lockfile with the .nvmrc
runtime, then run typecheck, lint, unit tests, a production build, and the
codegen drift check. CI also builds the real production Docker target,
verifies its fixed non-root identity and source label, proves missing
configuration fails, starts it against a mock backend:8000, and probes the
home page plus same-origin API proxy. The separate secrets job scans the full
Git history with Gitleaks and redacts any detected values.
The map requests the backend's bounded GeoJSON contract through the same-origin
/api/smokemap/locations browser route. Initial load and settled pan or zoom
changes send the visible bbox and integer zoom. Requests are debounced;
superseded requests are aborted and sequence-guarded so stale responses cannot
replace the current viewport. Loading, refreshing, empty, and error overlays
leave the MapLibre instance mounted, and request failures provide a retry
action.
The map search box calls the backend's bounded GET /api/v1/places/search/
contract through the same-origin /api/smokemap/places/search browser route.
Queries are normalized like the backend (NFKC, collapsed whitespace, lower
case); fewer than 2 or more than 100 characters never send a request. Settled
input is debounced, each request asks for at most 10 results (the backend caps
limit at 20), and superseded requests are aborted and cannot replace newer
results. The combobox shows explicit idle, too-short, loading, empty, error
(with retry) and result states, supports ArrowUp/ArrowDown, Enter and Escape,
and selecting a result flies the map to it and opens its details. No search
path downloads the full place-name collection.
For installing any packages inside the docker container use the following,
docker compose exec webapp yarn install maplibre-gl [<package-name>]
Also, if u get any ModuleNotFoundError use the same command in order to install the missing one inside container.
$ yarn dev --hostname 0.0.0.0 --port 3000
yarn run v1.22.21
$ graphql-codegen --config codegen.ts
✔ Parse Configuration
✔ Generate outputs
$ next dev --hostname 0.0.0.0 --port 3000
▲ Next.js 15.5.28
- Local: http://localhost:3000
- Network: http://0.0.0.0:3000
- Environments: .env.local, .env.development
- Experiments (use at your own risk):
· serverActions
✓ Ready in 2.1s