DeepSeek Harness Remote
DeepSeek Harness Remote 可將手機或另一台電腦與你運行 DeepSeek Harness 的電腦安全連接,隨時隨地繼續你的工作,方便隨時查看進度並繼續工作。
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗A work-hours log for remote workers and students, played like a Pokémon battle.
Live: https://dbs-p4.vercel.app · Course: Design, Build, Ship (MPCS 51238), Assignment 4
| Part | What |
|---|---|
| App | Next.js 16 (App Router, Cache Components) and Tailwind CSS 4 |
| Sign-in | Clerk (development keys) |
| Database | Supabase Postgres with row-level security, connected to Clerk through Supabase third-party auth |
| External API | PokéAPI (no key) |
| Tests | Vitest (unit) and Playwright with @clerk/testing (end-to-end) |
| Hosting | Vercel (Hobby) |
Two tables, and every row belongs to one Clerk user (user_id = the sub claim of the Clerk token).
profiles work_sessions
user_id PK (Clerk sub) id uuid PK
trainer_name user_id (Clerk sub)
avatar jsonb source 'clock' | 'manual'
timezone (null = browser's) clock_in / clock_out what the timesheet shows
created_at recorded_in / recorded_out set only by the database clock
xp_minutes generated: overlap of the two windows
note optional, ≤ 500 chars
(select auth.jwt()) ->> 'sub' = user_id. Signed-out visitors (the anon role) have no access at all. The user_id is filled in by the database from the token, never sent by the browser.now(), ignoring any time the browser sends. Editing a session can only lower its XP, never raise it.supabase/migrations/.On the server (src/lib/pokeapi.ts, marked server-only):
"use cache" and cacheLife("max"), one fetch serves every user./pokemon response is about 300 KB. The server keeps only the few fields the UI needs.The designed states are:
No Pokémon named "pikahcu", with "Did you mean Pikachu?".Clocking in never depends on PokéAPI.
npm install
Create .env.local with these variables (names only; get the values from each dashboard):
| Variable | From | Public? |
|---|---|---|
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY | Clerk → API keys | yes |
CLERK_SECRET_KEY | Clerk → API keys | no |
NEXT_PUBLIC_SUPABASE_URL | Supabase → Project Settings → API | yes |
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY | Supabase → API Keys (sb_publishable_…) | yes |
E2E_USER1_EMAIL, E2E_USER2_EMAIL | two Clerk test users (end-to-end test only) | no |
Never use the Supabase secret or service-role key: it bypasses RLS. .env* files are gitignored, and .claude/settings.json denies the coding agent from reading them.
npm run dev, then open http://localhost:3000.
npm run test:unit: 93 Vitest tests covering time zones and DST, ranges, the timesheet and CSV, XP, the daily coach, coach lines, the PokéAPI helper and the Pokédex search.npm run test:e2e (or PLAYWRIGHT_BASE_URL=https://dbs-p4.vercel.app npm run test:e2e to test the live site): one Playwright test, two users can't see each other's sessions (e2e/rls.spec.ts). Users A and B each add a session with a secret note on the same day; each must see their own note and not the other's.
using (true), user B's save was refused with "That overlaps your manual entry … 10:00", which was user A's session: B's queries could read A's rows (docs/test-runs/rls-broken-FAILED.txt).docs/test-runs/rls-fixed-PASSED.txt)./security-review was run on the feature/clerk-auth branch before merging.
= + - @ are now prefixed with ' so spreadsheets don't run them.createRouteMatcher in src/proxy.ts is deprecated. That's not a vulnerability: every page and server action also checks auth() itself, and RLS enforces ownership in the database. The proxy is an extra layer.The theme is "Dusk", a spinoff of my Neon Arcade design system, in Pokémon Diamond/Pearl colours, with dark tall grass and neon glow. Watch red is the only accent, and only the Poké Ball uses it. The process pages are still in the app:
/design/mood-board/design/system/design/fonts and /design/clock-fonts (font comparisons)/design/landing (three front-page options)/design/dashboard (dashboard preview with sample data)Pokémon data and sprites come from PokéAPI. Pokémon and Pokémon character names are trademarks of Nintendo. This is a fan project for a class, not affiliated with Nintendo.