openjutsu
영상에서 원클릭으로 인물 교체, ComfyUI·MiniMax H3 기반 오픈소스 로컬 힉스필드 겐주츠 대안, FLUX.3 Klein 재조명 지원
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A small, shared inventory for books and movies. The catalog is public: anyone can browse it without an account. Sign-in is required only to add or edit catalog items, manage shared lists, use collection lookup, or access Settings and user management.
pnpm install
cp .env.example .env
# Set ADMIN_PASSWORD in .env for the first-admin bootstrap
pnpm db:migrate
pnpm db:seed
pnpm dev
Working with an agent? Read AGENTS.md for commands, conventions and the agent JSON API.
Visit http://localhost:3000. Browse the catalog without signing in. Before the first stored admin account exists, use /admin/login with ADMIN_PASSWORD, then finish that admin's profile at /settings. Afterward, everyone signs in using their email and password.
The seed command adds sample classics to make a first run feel complete. They are example content only, not Ryan Leichty’s actual collection. Reading and watching are tracked per member, so two people can be reading different books at once (or the same one) — the seed no longer ships a "reading" example, since in-progress state belongs to an account rather than to the item. To start over locally:
pnpm db:reset
Or remove the individual examples from /admin and add the real collection.
Shelf uses Drizzle ORM with libSQL. When TURSO_DATABASE_URL is present, Shelf uses Turso-compatible libSQL. Without it, Shelf boots from an ephemeral local database at /tmp/shelf.db and seeds its sample content automatically on the first request. Schema migrations are hand-written in src/server/migrate.ts (runMigrations). They run automatically on the first query of a process when the stored version in the schema_meta table differs from SCHEMA_VERSION, which is derived from the migration source, and pnpm db:migrate applies them ahead of time.
| Variable | Purpose |
|---|---|
ADMIN_PASSWORD | Temporary first-admin bootstrap password; no longer used once an admin account has been configured |
TMDB_API_KEY | Free TMDB API key for signed-in movie lookup and for storing taglines, logos and trailer keys on save |
UPCMDB_API_KEY | Optional UPCitemdb key for disc barcode lookup in the barcode check and item form |
BLOB_READ_WRITE_TOKEN | Optional Vercel Blob token for storing uploaded cover images |
SHELF_AGENT_TOKEN | Bearer token required by the private agent JSON API |
TURSO_DATABASE_URL | Turso/libSQL database URL |
TURSO_AUTH_TOKEN | Token for the production database |
To change the schema, add an idempotent statement to runMigrations (CREATE TABLE IF NOT EXISTS, or a PRAGMA table_info guarded ALTER TABLE) and update src/server/schema.ts to match. The version updates itself.
The admin’s book search uses Open Library and requires no key. Movie and TV search use TMDB and need TMDB_API_KEY; the key is only used by authenticated server functions and never reaches the browser.
When BLOB_READ_WRITE_TOKEN is configured, a remote cover URL saved through the admin is fetched server-side and persisted to Vercel Blob. Without it, Shelf keeps the original remote URL for local development.
A full JSON export of the catalog — items with their joins, lists, and list order — is available at /api/export and linked from Settings. It is the backup path when running on the ephemeral /tmp database. Wishlist items are included in the export with status: "wanted", and the export version is unchanged.
Lending is recorded in a loans table with full history and optional due dates, rather than as fields on the item itself. A loan links to a user account when the borrower is a shelf member, and still works when they are not.
The Wishlist holds things you don't own yet — it lives at /wishlist and is kept out of every other browse surface. Add an entry from the Wishlist page's header button, or from a barcode check at /check that comes back "Not on the shelf." "Mark as owned" on a wishlist item's page moves it to the shelf in one click.
TURSO_DATABASE_URL and TURSO_AUTH_TOKEN with pnpm db:migrate.TURSO_DATABASE_URL and TURSO_AUTH_TOKEN in Vercel’s project settings for durable collection data. Without them, Vercel uses an ephemeral /tmp database: the catalog still boots with sample content, but additions disappear when the serverless instance is replaced. Set ADMIN_PASSWORD to bootstrap the first admin account, plus optionally TMDB_API_KEY and BLOB_READ_WRITE_TOKEN.nitro is pinned to an exact prerelease build; the CI SSR smoke test guards the upgrade.
pnpm lint
pnpm check
pnpm typecheck
pnpm test
pnpm build
pnpm typecheck generates src/routeTree.gen.ts if it is missing; the file is
gitignored, and pnpm dev/pnpm build keep it current.