Easy-to-manage touch screens
무료 오픈소스 터치스크린으로 USB 설정 가이드, 드래그‑드롭 편집기, 로컬 제어를 제공하며 Home Assistant용으로 제작되었습니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A neighbourhood decision engine for people moving to London. CommuteTimeMap shows where you can get to in N minutes — this app tells you which neighbourhoods inside that area you should consider living in.
Read STRATEGY.md first — it explains the product framing, architecture, and staged roadmap. This README only covers running the code.README 전문 보기 ↗A neighbourhood decision engine for people moving to London. CommuteTimeMap shows where you can get to in N minutes — this app tells you which neighbourhoods inside that area you should consider living in.
Read
STRATEGY.mdfirst — it explains the product framing, architecture, and staged roadmap. This README only covers running the code.
A working Next.js + TypeScript + MapLibre app with:
The default commute provider uses a reviewed static matrix plus clearly labelled distance estimates, so the public site stays fast and does not overwhelm TfL's Journey Planner. TfL routing remains an opt-in deployment setting. Rent values are static neighbourhood-level estimates reviewed for discovery use, with room values derived from listing-sample regional averages and the same base rent model.
# 1. Install dependencies
npm install
# 2. (Optional) Get a MapTiler API key for nicer map tiles
# Sign up free at https://www.maptiler.com/cloud/
# Then:
cp .env.local.example .env.local
# Edit .env.local and paste your key into NEXT_PUBLIC_MAPTILER_KEY.
# You CAN skip this — the app falls back to a no-key demo style.
# 3. Run the dev server
npm run dev
# 4. Open http://localhost:3000
[User inputs] ─┐
▼
lib/store.ts (Zustand)
│
├──▶ ControlPanel (left)
├──▶ NeighbourhoodList (left)
├──▶ Map (right)
└──▶ DetailDrawer (bottom)
lib/data/neighbourhoods.ts ──┐
lib/data/destinations.ts ────┤
▼
lib/scoring.ts
lib/commute.ts (RoutingProvider)
lib/affordability.ts
For the full architecture rationale, see STRATEGY.md §3.
This app is public-transport-first. Driving estimates are intentionally not supported.
By default, /api/commute uses the reviewed static matrix and a distance-based estimate so every neighbourhood receives a fast result with a visible source. Set ROUTING_PROVIDER=tfl to opt into live Journey Planner calls; individual failures still fall back to the same estimate model. Route summaries distinguish access, public transport, interchange and final walk, and do not invent exact line-by-line instructions where the system lacks reliable route legs. The sampled isochrone combines neighbourhood results with a network-free grid, which keeps the visual shape aligned with the ranking without creating hundreds of public API requests per visit.
For an isolated local preview, npm run dev:static starts Next on port 3001 with the same network-free routing provider.
The map renders official London borough boundaries from ONS Local Authority Districts May 2024 ultra-generalised clipped boundaries. Borough search highlights the selected borough boundary on the satellite map.
Neighbourhoods use launch footprints from lib/data/polygons.ts. If a neighbourhood later gets a hand-drawn or LSOA-derived Neighbourhood.polygon, the map will use that explicit geometry first.
Rent assumptions are centralised in lib/data/rent-market.ts, with the review workflow in docs/rent-data-maintenance.md.
The optional GA4 product funnel and the human-reviewed shortlist request flow
are both disabled by default. Their environment variables, privacy constraints,
event names, test procedure, launch gate, and weekly checks are documented in
docs/measurement-and-shortlist-experiment.md.
The shortlist flow intentionally has no checkout or payment collection. Do not
enable it until a private receiver is configured and the production hosting
plan permits commercial use. Referral providers in lib/monetisation.ts also
remain inactive until a provider and disclosure have been approved.
npm install convexnpx convex dev — it prints a deployment URL.NEXT_PUBLIC_CONVEX_URL in .env.local.convex/schema.ts. See convex/README.md for next steps.app/ Next.js App Router pages and API routes
components/ React components (Map, ControlPanel, etc.)
lib/ Domain logic — types, data, scoring, commute, affordability
lib/data/ Source-backed launch data (neighbourhoods, destinations)
convex/ Inactive until Stage 4
STRATEGY.md Product spec, architecture, roadmap. READ FIRST.
The cleanest path is Vercel:
AdSense has rejected this site three times for "Low value content", each time because of pages generated from one template. Before ticking "I confirm I have fixed the issues":
npm run build, then npx next start -p 3210), and run npm run audit:content -- http://localhost:3210. It must exit cleanly: no sitemap cluster over 60% shared text, no page under 200 words of its own, no internal link that redirects or 404s.lib/published-city-sections.json until their pages carry writing of their own.This project is structured to be readable end-to-end. If a file is confusing, search for it in STRATEGY.md — most architectural choices are explained there with their rationale. When in doubt, start at app/page.tsx and follow the imports.