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.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
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 ↗A private score-keeping app for two people. Log the small things you do for each other — cooking, chores, a letter, a photo — and watch them add up: into points, into a shared goal, into a pet that grows, into a room you decorate together.
Built as vanilla JS + HTML + CSS against a ServiceNow Scripted REST API.
No framework, no bundler, no build step. index.html is the app.
📖 用户使用指南 (User Guide) · 🐣 小窝设计文档 · 🛠 Engineering rules
📋 Changelog · 🏗 System design · 🗂 Migration record
Scoring
Together
恋爱小窝 (the pet game)
The whole app follows your phone
iPhone / laptop browser
├── index.html all markup + CSS (4.7k lines)
└── app.js all logic — state, render, API, SVG art (6.1k lines)
│
│ HTTPS · apikey + Authorization: Bearer <access token>
▼
Supabase yvllstktmjoedfsgojgs.supabase.co
├── /functions/v1/* 27 Edge Functions — every business rule
├── Postgres 12 tables, row-level security on all of them
├── Auth hashed passwords, JWT + refresh
└── Storage private "photos" bucket, served as signed URLs
Only a function may write. RLS is SELECT-only for clients, so a session token
alone cannot change a row; functions hold the service-role key and bypass RLS. The
upside is that every rule lives in one place. The cost is that there is no second
line of defence behind it — a missing check in a function is simply missing.
No build step: node --check app.js is the whole toolchain. The frontend
auto-deploys from main via GitHub Pages; functions deploy with
npx supabase functions deploy <slug>. Deploy the function first when a change
spans both, or the pushed app calls an endpoint that doesn't answer yet.
Ran on a free ServiceNow PDI until 2026-09-11.
servicenow/is kept as history — those scripts are the source this was ported from and are no longer deployed. See the changelog.
Everything shared is scoped by match_id (the couple). bag is also scoped by
char, because an unredeemed reward belongs to one partner. Row-level security
enforces both in the database: a cross-couple read returns empty, a cross-couple
write 404s.
This is the beginning of the README. Read the rest at the original. Read the full README ↗