Easy-to-manage touch screens
무료 오픈소스 터치스크린으로 USB 설정 가이드, 드래그‑드롭 편집기, 로컬 제어를 제공하며 Home Assistant용으로 제작되었습니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Got books? Got stacks! — a local-first reading tracker that turns your Obsidian vault into a 3D bookshelf.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A reading tracker where your Obsidian vault is the database — and your library
is a bookcase you can walk up to.
stacks add writes a book note with structured frontmatter into your vault,
fetching the metadata and the cover for you. stacks build reads the vault back
and renders it as a 3D bookshelf you can publish as a plain static site.
There is no account, no server, no sync, and no second database. The notes are
the data. Delete this tool and you still have your library.README 전문 보기 ↗A reading tracker where your Obsidian vault is the database — and your library is a bookcase you can walk up to.
stacks add writes a book note with structured frontmatter into your vault,
fetching the metadata and the cover for you. stacks build reads the vault back
and renders it as a 3D bookshelf you can publish as a plain static site.
There is no account, no server, no sync, and no second database. The notes are the data. Delete this tool and you still have your library.
## Thoughts section you choose to write, as
plain text. That rule is enforced by a gate that greps the built output for a
phrase planted in a fixture note, rather than trusted.stacks rewrites
individual frontmatter lines rather than re-serialising your YAML, so your
comments and formatting survive byte for byte.You'll need Node 24+ and pnpm. For your own library you'll also need an Obsidian vault (or any folder of Markdown — nothing here requires Obsidian itself); to just look at a shelf, you won't.
git clone https://github.com/mephistopheles4/stacks.git
cd stacks
pnpm install
This repo ships a small vault of invented books, so you can walk up to a bookcase before you own one. Stage it:
pnpm stacks build --public --vault fixtures/vault
Then serve it:
pnpm dev
The shelf is at http://localhost:4321. Nothing above needs a vault, a .env
or an API key — the books are made up, the covers are generated, and none of it
is yours. For that, carry on below.
cp .env.example .env
Set STACKS_VAULT in .env to your vault's path, then add a book:
pnpm stacks add "the left hand of darkness"
That looks the book up, downloads a cover into your vault, samples a spine
colour from the cover's binding edge, and writes Library/The Left Hand of Darkness.md. Now look at your shelf:
pnpm dev:watch
Edit a note in Obsidian and the shelf follows about a second later.
A Google Books key is close to essential. Open Library is the primary source and is thin on anything published in the last year or two. Without a key the fallback shares one global quota that is permanently exhausted, so it answers
429every time..env.exampleexplains where to get one; it's free.
pnpm stacks build --public --vault /path/to/your/vault
pnpm --filter @stacks/site build
The result is packages/site/dist/ — a static folder with no server behind it,
so it deploys as-is to Cloudflare Pages, GitHub Pages, Netlify, or anything that
serves files.
Worth deciding on purpose, because this is the part that leaves your machine:
| Published | Never published |
|---|---|
| Title, author, ISBN | Note bodies outside ## Thoughts — the rest of what you wrote |
| Reading status, start and finish dates | Vault paths and filenames |
| Rating, tags, page count | Books marked private: true |
| Cover images, re-hosted at 512px | Wishlist books — you don't own them |
Your ## Thoughts section, as plain text | The Thoughts of a private or wishlist book |
private: true fails closed: anything that isn't clearly a "no" keeps the
book unpublished, because private: yes is a string in YAML and a strict
boolean check would have published it. Wrongly private is a missing spine you
fix in a second; wrongly public may already have been crawled.
Covers are re-hosted from the provider that supplied them. That's a deliberate choice with its reasoning written down — see ADR-0013 — and takedown requests are honoured.
pnpm stacks … | What it does |
|---|---|
add | fetch metadata and a cover, then write a note into the vault |
build | parse the vault into library.json (--public, --watch) |
status | books this year, in progress, covers still missing |
covers | report where each cover came from, or record it (--backfill) |
enrich | fill missing metadata on existing notes, never overwriting |
order | show the shelf order, or renumber it (--renumber) |
import | import a library export into the vault (audible) |
| Script | What it does |
|---|---|
pnpm dev | site dev server |
pnpm dev:watch | vault watcher + dev server, live-reloading |
pnpm test | vitest, all workspaces and the gates |
pnpm typecheck | tsc --noEmit across every .ts in the repo |
pnpm build | typecheck + static site build |
pnpm worktree <branch> | a second checkout, cut from origin/main and installed |
pnpm fixtures:50 | regenerate the 50-book fixture vault |
pnpm smoke:render | headless shelf screenshot gate |
pnpm gate:public | proves the public build leaks no note text |
pnpm deploy:site | gates, then build from the real vault, then publish |
Both lists are documented in full in AGENTS.md, and
gates/commands.test.ts holds that file to reality in both directions — adding
a command without documenting it there is a red build.
Developer-friendly personal software, not a packaged application. There is
no npm release and no installer: the CLI runs from TypeScript source through
tsx, so using it means cloning this repo. If you're comfortable with a
terminal and Node, you'll be fine. If you're looking for an Obsidian plugin to
install, this isn't that yet.
All five phases are green and tagged (phase-0 … phase-4) and it runs against
a real library daily. The invariants in AGENTS.md are the project's
constitution, and every article of it has a named gate that can go red —
scored in docs/gates.md, which a gate holds to the constitution
in both directions so that coverage is a checked fact rather than a claim.
Contributions welcome — see CONTRIBUTING.md. The short
version: pnpm test && pnpm build && pnpm gate:public && pnpm smoke:render is
the contract, and a defect worth fixing is usually worth a gate that goes red.
Participation is covered by the Code of Conduct.
The repo also carries optional configuration for a set of
engineering skills under
docs/agents/. They are entirely optional — nothing in the
workflow requires them, and every gate passes without a single one installed.
| docs/progress.md | where the project actually is — start here |
| AGENTS.md | the invariants and contracts that must not break |
| docs/adr/ | every choice made, and why |
| docs/gates.md | which rule each gate protects — and which are protected by nothing |
| SECURITY.md | the threat model, stated plainly |
| CODE_OF_CONDUCT.md | Contributor Covenant 2.1, and what one maintainer can escalate |
| docs/library-brief.md | the original product spec (historical) |
library.json is a build artifact: always regenerable from the vault, never
hand-edited, gitignored.
MIT. The cover images a build downloads are not covered by it — they belong to their publishers, and what you may do with them depends on which provider supplied them.