DeepSeek Harness Remote
DeepSeek Harness Remote 可將手機或另一台電腦與你運行 DeepSeek Harness 的電腦安全連接,隨時隨地繼續你的工作,方便隨時查看進度並繼續工作。
AI 翻譯
尚未收集儲存庫資訊。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Next.js 16 static-export notes app for GitHub Pages, with its own Node.js + MariaDB API (server/) for accounts, private notes and image storage.
Use Node.js 24. Run npm ci, configure .env.local from .env.example, then npm run dev.
npm run build produces out/, the installable manifest, PNG icons and a versioned offline service worker.
Preview using npm start. The development server intentionally does not register a service worker.
Checks:
npm test: Node regression tests for notes, conflicts, backup validation, safe Markdown and images.cd server && npm test: API integration tests against a real MariaDB test database (TEST_DB_NAME, TEST_DB_USER, TEST_DB_PASSWORD, plus TEST_DB_HOST or TEST_DB_SOCKET).npm run typecheck: Next.js/client TypeScript.npx playwright install chromium, then npm run test:e2e after a build: isolated browser flows against the actual static export.GITHUB_ACTIONS=true npm run build && GITHUB_ACTIONS=true npm run test:e2e: GitHub Pages /editor paths, including offline reload.Browser tests use disposable profiles, not the user's browser data. The sync test doubles only the API HTTP boundary; authentication UI, IndexedDB, guest transfer, conflict handling and the save queue remain real.
/api/socket.io), other tabs of the same browser are told through a BroadcastChannel (works even if WebSocket is blocked), and a tab also synchronizes when it regains focus. A guest notebook (no account) keeps a browser-wide Web Lock: one writing tab, the others read-only. Offline, tabs of one account share the local cache with last-write-wins.Shortcuts: Ctrl/Cmd+K searches notes, Ctrl/Cmd+F searches the open note, Ctrl/Cmd+Alt+N creates a note, Escape exits focus/search. Formatting uses the browser's native commands.
The browser never talks to the database: it calls the API in server/ (Node.js 24, no framework) which stores everything in MariaDB.
server/schema.sql, applied automatically on API start (idempotent). Tables: users, sessions, email_tokens, notes, note_images, note_shares.user_id. Notes use a server-side revision for optimistic concurrency: a stale write gets 409 and the client keeps both versions.SMTP_HOST configured. Links carry a single-use token (1 hour) in the URL fragment.notes ping to the account's other connections; data still flows through the authenticated REST API. The reverse proxy must forward WebSocket upgrades on /api/socket.io (Caddy does by default).ALLOWED_ORIGINS.server/.env.example to server/.env. Deploy on the VPS with cd server && docker compose up -d --build; The container serves the static site at https://papertrail.clubika.com and the API under /api (behind Caddy); the site is built inside the Docker image.The Pages workflow runs unit tests, static build, typecheck and Playwright before deployment. The build targets https://papertrail.clubika.com/api by default; set NEXT_PUBLIC_API_URL (.env.local or a repository variable) to use another API. Never commit .env files or database credentials.
Implementation lives in app/components (UI), app/hooks (Auth/autosave), app/lib (note transformations, IndexedDB, attachments, safe rendering), and server (API and MariaDB schema). No new editor, persistence or UI library was added; Playwright is a development-only browser-test dependency.
Every commit pushed to main updates the app:
papertrail.clubika.com) checks every minute whether main changed (app-deploy.timer, script ~/deploy/auto-deploy.sh): it pulls the commit, rebuilds the Docker image (docker compose up -d --build in server/), probes /api/health, and automatically rolls back to the previous version if the new build fails or does not answer.~/deploy/deploy.log on the server; a rejected commit is not retried until a new commit arrives.It usually goes live 1 to 3 minutes after the push.