From 2d4af97f6785237a8ed292b00f030a57f02d71ce Mon Sep 17 00:00:00 2001 From: ScreenTinker Date: Tue, 21 Jul 2026 22:46:16 -0500 Subject: [PATCH] docs: fix double-escaped < in API reference, add README hero image - openapi.yaml: use the numeric entity < so Redoc renders 'read < write < full' in the scope-ladder nav + section header, instead of the double-escaped 'read < write < full' - README: add a centered dashboard hero image + quick-links row (Live demo / API reference / Self-hosting guide / Discord) at the top, and refresh the Support section Co-Authored-By: Claude Opus 4.8 (1M context) --- README.md | 21 +++++++++++++++------ docs/openapi.yaml | 2 +- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 98f6847..519bf7c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,16 @@ # ScreenTinker — Open-Source, Self-Hosted Digital Signage Software +

+ ScreenTinker dashboard showing online displays with playlist assignments +

+ +

+ Live demo · + API reference · + Self-hosting guide · + Discord +

+ ScreenTinker is a free, open-source **digital signage CMS** you can self-host on your own server — or run in our managed cloud. Manage TVs, video walls, and kiosks across multiple locations from one dashboard, with remote control, scheduling, playlists, and analytics. Built for retail, QSR menu boards, offices, lobbies, education, and any environment where you need centralized control over remote screens. Multi-tenant, MIT-licensed, single-developer maintained with direct contact access. **Runs on any screen** — Android TV, Fire TV, Samsung Tizen, LG webOS, Amazon Vega OS, Raspberry Pi, Windows, ChromeOS, or any web browser. No per-device player licence, no hardware lock-in. @@ -546,13 +557,11 @@ scripts/ Device setup scripts + admin recovery ## Support -ScreenTinker is built and maintained by one developer. If the project is useful to you and you want to support continued development: +ScreenTinker is free and MIT licensed, and it stays that way. If it's useful to you and you want to help keep development going, you can chip in: -- **[Donate via Wise](https://wise.com/pay/business/bytetinkerllc?utm_source=quick_pay)** — directly help fund continued development (ByteTinker LLC) -- Star the repo on GitHub -- Open [issues](https://github.com/screentinker/screentinker/issues) with feedback or bug reports -- Drop into the [Discord](https://discord.gg/utTdsrqq4Z) and say hi -- Contribute back if you've extended something useful +- ⭐ Star the repo, honestly this helps more than you'd think +- 💬 Report bugs or ideas in [Discord](https://discord.gg/utTdsrqq4Z) or [issues](https://github.com/screentinker/screentinker/issues) +- ☕ [Donate via Wise](https://wise.com/pay/business/bytetinkerllc?utm_source=quick_pay) (ByteTinker LLC) GitHub Sponsors integration is also planned. Direct contact: [dan@bytetinker.net](mailto:dan@bytetinker.net) or via Discord. diff --git a/docs/openapi.yaml b/docs/openapi.yaml index 43d5045..d91ec8b 100644 --- a/docs/openapi.yaml +++ b/docs/openapi.yaml @@ -10,7 +10,7 @@ info: **scoped personal access token** presented as `Authorization: Bearer st_...`. The dashboard's session JWT is also accepted, but this contract targets token consumers. - ## Scope ladder (read < write < full) + ## Scope ladder (read < write < full) Tokens carry one of three scopes; higher scopes subsume lower ones: - `read` — all `GET` endpoints. - `write` — all resource mutations (`POST` / `PUT` / `PATCH` / `DELETE`).