Easy-to-manage touch screens
Free, open-source touch screens. Guided USB setup, a drag-and-drop editor and local control. Made for Home Assistant.
The places we want to eat at, and the ones we have.
LifestyleTypeScript · JavaScriptGitHub @JoaoSouzaeSilvaOnlineOwner 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 ↗This is a Next.js project bootstrapped with create-next-app.
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
Open http://localhost:3000 with your browser to see the result.
This repo includes a GitHub Actions workflow at .github/workflows/supabase-keepalive.yml that records a heartbeat in the app_keepalive_heartbeats table every Monday and Thursday.
To enable it:
supabase/migrations/20260405000001_add_app_keepalive_heartbeats.sql has been applied (it is part of the normal migration chain).SUPABASE_URLSUPABASE_SERVICE_ROLE_KEYworkflow_dispatch to verify it works before relying on the schedule.The schema lives in supabase/migrations/ and is the single source of truth.
20260401000000_initial_schema.sql is the baseline; everything after it is an
incremental change. Supabase tracks what has run in
supabase_migrations.schema_migrations, so production and this folder stay in sync.
To change the schema:
supabase/migrations/<YYYYMMDDHHMMSS>_<what_it_does>.sql
(for example via supabase migration new <name>). Never edit or rename a file that
has already been applied — write a new one instead.if not exists, drop policy if exists before create policy).supabase db push, or ask Claude to apply it through the Supabase
connector (apply_migration), using the same version and name as the file.Do not run schema changes by hand in the SQL editor — they won't be recorded and the history drifts.
New places get their cover photo copied into Supabase Storage
(restaurant-review-photos/covers/) by /api/place-lookup. Older rows stored the
googleusercontent URL that Google's photo endpoint redirects to, and those expire.
To move existing covers into Storage (dry run first, then --apply):
node --env-file=.env.local scripts/backfill-cover-photos.mjs
node --env-file=.env.local scripts/backfill-cover-photos.mjs --apply
Needs SUPABASE_SERVICE_ROLE_KEY and GOOGLE_MAPS_API_KEY in .env.local. It skips
rows already in Storage, so it is safe to re-run. Until it has run, cards with an
expired photo fall back to a visit photo, then to a tile in the category colour.
Tastebook is a standard Next.js app with server routes and a proxy (middleware), so
it needs a host that runs a Node.js server — any of Vercel, Netlify, Cloudflare
Workers (via OpenNext), or a plain container running npm run build && npm run start.
Static hosting (GitHub Pages, S3) will not work.
| Name | Where it is used |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | Browser and server — Supabase project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Browser and server — Supabase anon (publishable) key |
GOOGLE_MAPS_API_KEY | Server only — /api/place-lookup (Places API) |
SUPABASE_SERVICE_ROLE_KEY is not needed by the app. It is only used by the
keepalive GitHub Action, as a repository secret.
https://<new-domain>/auth/callback to Redirect URLs.
Sign-in is email + password, so this only affects the confirmation link sent on
sign-up.