Easy-to-manage touch screens
무료 오픈소스 터치스크린으로 USB 설정 가이드, 드래그‑드롭 편집기, 로컬 제어를 제공하며 Home Assistant용으로 제작되었습니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A personal Disney Parks planning tool that combines custom itineraries with live attraction wait times to suggest smarter day-of decisions.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A mobile-first Disney park planning app focused on fast decisions, low cognitive load, and clean UX. Disney Wait Planner pairs live attraction wait times with a local-first, multi-day trip planner — and Tom, a built-in assistant that can answer Disney questions and read-only questions about what you've planned.README 전문 보기 ↗A mobile-first Disney park planning app focused on fast decisions, low cognitive load, and clean UX. Disney Wait Planner pairs live attraction wait times with a local-first, multi-day trip planner — and Tom, a built-in assistant that can answer Disney questions and read-only questions about what you've planned.
Disney Wait Planner supports Disneyland Resort (DLR) and Walt Disney World (WDW). It combines live attraction wait times, a multi-day trip planner (attractions, dining, entertainment, and custom entries), Lightning Lane tracking, and a built-in assistant (Ask Tom) into a single mobile-first interface.
The system enforces a strict boundary between live data and local planner state, and all attraction/plan matching is canonical and deterministic — there is no fuzzy logic.
Tom is Disney Wait Planner's built-in assistant. Tom can:
GET /api/tom/showtimes, authenticated with DWP_CATALOG_API_KEY) that Tom calls with a structured park (and optionally a show name). Like all showtimes in the app, this is today-only and covers only curated, ThemeParks-mapped EntertainmentWhen an answer uses ThemeParks.wiki schedule data, the Tom page shows a linked "Powered by ThemeParks.wiki" attribution; planner-only answers show none.
Tom does not edit your plans, generate or optimize itineraries, reason about transportation or travel time, or make predictions/recommendations it isn't designed to support. Planner data shared with Tom is a compact, read-only summary — Tom cannot write back to your planner. See the in-app Tom Help Guide (/tom/help, linked from the Ask Tom Help modal) for the full, current list of what Tom can do.
Live attraction wait times are powered by the Queue-Times API, accessed through a server-side proxy rather than called directly from the browser. All wait data flows through a single unified path (liveWaitApi.ts), which returns the same shape regardless of source and falls back to a mock dataset if live data is disabled or unavailable — so the UI never breaks on a live-data outage.
Park hours and Entertainment showtimes come from the ThemeParks.wiki (Free API), accessed only server-side (themeParksApi.ts; the browser never calls the provider) and normalized before use (parkHours.ts, parkHoursService.ts, entertainmentShowtimes.ts). It is used for:
/api/park-hours)/api/entertainment/showtimes)ThemeParks.wiki does not replace Queue-Times for attraction waits, and it does not decide which attractions or Entertainment exist: the curated DWP catalog stays the canonical identity authority, and Entertainment is matched to the provider only through an explicit mapping. It needs no environment variables. Surfaces that display ThemeParks.wiki data show the linked attribution via components/ThemeParksAttribution.tsx ("Powered by ThemeParks.wiki").
apps/*, packages/*)localStorage is the source of truth, and cloud sync mirrors it when signed in/api/tom/ask) to the Tom Railway API — Tom credentials are never exposed to the browserFor implementation-level invariants, data flow details, and correctness constraints, see AGENTS.md.
This is a pnpm workspace:
apps/web — the Next.js frontend apppackages/shared — shared types and mock dataThe Next.js App Router lives at apps/web/src/app (not apps/web/app).
Development happens on feature branches; main is the production branch, and Vercel builds a preview deployment for every branch.
# Install dependencies
pnpm install
# Run the web app locally (http://localhost:3000)
pnpm --filter web dev
# Production build
pnpm --filter web build
# Run a production build
pnpm --filter web start
# Type-check the shared package
pnpm --filter @disney-wait-planner/shared typecheck
# Apply/migrate the Postgres schema (see apps/web/src/lib/db-schema.sql)
DATABASE_URL=... pnpm --filter web run db:migrate
Never run dev/build at the repo root without --filter web — the monorepo root has no app of its own to run.
db:migrate is safe to run repeatedly against a fresh or already-migrated
database (it's a no-op the second time) — see AGENTS.md's Deployment
section for the required production ordering (migrate schema, then deploy
app code) whenever db-schema.sql changes.
Live wait data
NEXT_PUBLIC_WAIT_API_ENABLED — true to enable live wait data; unset or false runs the app mock-onlyNEXT_PUBLIC_WAIT_API_BASE_URL — optional override for the wait API base URL; defaults to the same-origin proxyAuthentication & sync (optional; required for sign-in and cloud sync)
NEXTAUTH_URL — canonical app URL (e.g. https://your-app.vercel.app)NEXTAUTH_SECRET — random secret (openssl rand -base64 32)DATABASE_URL — Postgres connection string used by the auth adapter and syncEMAIL_SERVER, EMAIL_FROM — email provider settings for magic-link sign-inDaily park-hours refresh (server-only)
CRON_SECRET — required by /api/cron/park-hours (Vercel Cron, 02:00 UTC daily via apps/web/vercel.json); the route fails closed (500) when unset. Vercel sends it as Authorization: Bearer.Ask Tom (server-only — never expose these as NEXT_PUBLIC_*)
TOM_API_URL — Tom Railway API base URLTOM_API_KEY — Tom Railway API keyDWP_TOM_PROXY_KEY — shared secret used by the server-side Tom proxyDWP_CATALOG_API_KEY — shared secret Tom presents (via the
x-dwp-catalog-api-key header) to call the read-only
GET /api/catalog/query catalog lookup endpointSee AGENTS.md for repository conventions, scope discipline, and the correctness invariants (local-first/profile safety, canonical attraction identity, planned-closure enforcement, and Tom's read-only planner integration) that must be preserved when touching those areas.