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.