Easy-to-manage touch screens
무료 오픈소스 터치스크린으로 USB 설정 가이드, 드래그‑드롭 편집기, 로컬 제어를 제공하며 Home Assistant용으로 제작되었습니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A personalised relocation roadmap for people, families and Hub71 founders moving to Abu Dhabi.
Requires Node.js 20.9 or newer.
The intake is at /. Choose chips, use a demo or describe your move in one sentence. Set OPENAI_API_KEY and OPENAI_MODEL on Vercel to enable sentence parsing with the Responses API and Zod structured outputs. If either setting is missing or parsing fails, the intake falls back to chips. Unmentioned details retain the visible chip values, which you can review before building the map.README 전문 보기 ↗A personalised relocation roadmap for people, families and Hub71 founders moving to Abu Dhabi.
Requires Node.js 20.9 or newer.
npm install
cp .env.example .env.local
npm run dev
The intake is at /. Choose chips, use a demo or describe your move in one sentence. Set OPENAI_API_KEY and OPENAI_MODEL on Vercel to enable sentence parsing with the Responses API and Zod structured outputs. If either setting is missing or parsing fails, the intake falls back to chips. Unmentioned details retain the visible chip values, which you can review before building the map.
npm run build
npm start
lib/schema.ts: strict Zod schemas and exported Profile, Step, Community and School types. ISO2 nationalities use uppercase codes; step household conditions are arrays. Source metadata follows AGENTS.md.lib/data.ts: loads JSON, validates schemas, unique IDs, prerequisite references, cycles, the settled milestone and school/community references. Invalid data fails the build when /map is generated.data/steps.json: the requested dependency graph. All unverified costs, durations, lead times, URLs and verification dates are null. Documents and tips are empty until sourced. This graph is a planning model and has not been verified as immigration guidance.data/communities.json and data/schools.json: supplied records, with the requested ID, array and unknown commute fixes. No other data values were changed. Hyphenated IDs are accepted. Missing lastVerified is accepted without inserting a date into the supplied data.import { personalise, getState, downstreamUnlockCounts, criticalPath, doByDates,
loadCompletedIds, saveCompletedIds } from "@/lib/engine";
import type { Profile } from "@/lib/schema";
const profile: Profile = {
nationality: "GB", household: "solo", kids: 0, reason: "job",
moveMonth: "2027-03", budgetBand: "mid", hasPets: false, drives: false,
};
const roadmap = personalise(profile);
const completed = loadCompletedIds();
const state = getState(roadmap[0], completed);
const counts = downstreamUnlockCounts(roadmap, completed);
const path = criticalPath(roadmap, completed);
const deadlines = doByDates(profile, roadmap);
completed.add(roadmap[0].id);
saveCompletedIds(completed);
Personalisation removes non-applicable steps and their prerequisite edges, including school enrolment from the settled milestone where it does not apply. Dependant ID shares the family-visa household condition. General entry permits remain for every reason; the founder prerequisite only remains for Hub71 founders.
getState uses explicitly completed IDs. Descendant counts include all unique unfinished downstream steps, including the milestone; they do not imply that one completion satisfies other prerequisites. criticalPath returns the longest remaining chain by number of steps, including the settled milestone, with ties resolved in JSON prerequisite order. It is a structural path rather than a time estimate because durations are unverified. Parallel branches are still required.
Before-fly deadlines use the first day of moveMonth in UTC minus leadTimeDays, with a 30-day planning default for null lead times. They are planning reminders, not verified legal deadlines.
The fullscreen /map?p=<base64url profile> is an SVG force graph using d3-force and framer-motion. Drag to pan, scroll or pinch to zoom, or use the zoom and fit buttons. On the map canvas, arrow keys pan, +/- zoom and 0 fits the visible steps; each bubble is keyboard accessible. Phase filters focus their steps. Hover highlights descendants; the drawer shows prerequisite and downstream steps, provider details and source links. Housing and school steps expose the supplied records; all rent displays use only min, as from AED X/yr.
The Critical path toggle shows the longest remaining dependency chain. Progress to Settled counts all required ancestors, including parallel branches; completing the final required ancestor automatically completes the milestone.
Progress is stored under ezmove.completed.v1. Storage helpers are safe during server rendering, discard unknown IDs and malformed storage, and accept an optional storage adapter. Saving returns false if storage is unavailable. The map loads and saves through these helpers; if browser storage is unavailable, progress remains in memory for the visit.
npm run build uses Next.js’s supported webpack builder for compatibility with environments that block Turbopack local ports. Tests remain omitted as requested.