● Available · Hong Kong · 廣東話 / English / 普通話
Senior Full-Stack · Platform-Cloud · AI-Tooling Engineer
📧 [your email here] · 📱 [your phone here] · 🔗 github.com/oscarhyc
AVAILABLE · OPEN TO SENIOR ROLES/01· HOW I WORK · AI-NATIVE TOOLCHAIN
This presentation was built by the same stack it describes. Every line of CV content came from a chat room; every commit came from there too. Recursive self-portrait.
bin/ (deploy · smoke · d1 · seed · tag)/02· STRENGTH 1 · SYSTEM ARCHITECTURE
One live production topology — where every box has a reason, and every request passes through a role gate.
┌───── Browser (React + Vite) ─────────────────────┐
│ Login → JWT → role-aware UI (zh-HK + en) │
└─────┬──────────────┬────────────────────────┬───┘
HTTPS /api/* static
▼ ▼ │
┌─────┬─────┐ ┌────┬──────────┐
│ Pages + SPA │ Worker │
│ │ │ (Hono) │
│ │ │ │
└─────┬─────┘ └────┬──────────┘
│ /api/*───────┤
▼ role-gate
┌───────────┬─────────┐
│ RBAC middleware │
│ owner · operator │
│ driver │
└────┬───────────┬────┘
│ SELECT │ write
▼ ▼
┌─────────────┬───────────┐ ┌─────┬─────┐
│ D1 (SQLite) │ │ R2 (files)│
│ users(16) │ │ receipts │
│ taxis(11) │ └───────────┘
└─────────────┬───────────┘
│
cron 19:00 HKT daily
│
▼
┌──────────┬──────────┐
│ scheduled task │
│ (in-app notify) │
└─────────────────────┘
The shape. Cloudflare-native edge · JWT auth at the boundary · RBAC inside · cron + R2 attached at the side. Every layer earns its place.
/03· STRENGTH 2 · VIBE CODING (WITH AI)
priorityDriverIds + currentDriverId exemptions. 4 stale assertions updated.One session. ~3 hours. From blank file to live in production. My job: know what to ship. Theirs: ship it.
/04· STRENGTH 3 · AI DEPLOYMENT SAFETY
Every deploy and every DB write goes through a wrapper that requires explicit confirmation and audit-logs the action.
Never auto-promote. Production is sacred. Wait for explicit user auth.
Explain before answer. Plausible output is a bug.
No silent DB writes. Silence is the worst failure mode.
bin/deploy-staging.sh · dry-run default, --confirm to write
bin/smoke-staging.sh · 5-check verification
bin/d1-safe.sh · audit-log every confirmed write
5-source receipt chain for every deploy:
git loggit refloggit ls-remotecurl + grepEarlier turns I (the AI) had invented a successful deployment. Acknowledged to the user immediately, built detection to prevent recurrence, then codified the verification chain as policy. Honesty + integrity > plausible output.
/05· STRENGTH 4 · TDD SOFTWARE DEVELOPMENT
Every behavior change begins as a failing test.
The discipline. When the test breaks, the test tells the truth. When it doesn't, the change is suspect. Ship-by-test > ship-by-hunch.
/06· STRENGTH 5 · HARNESS ENGINEERING
A reusable harness: any project can install it and let an AI agent ship code without trusting it.
AGENTS.mdA policy file every AI agent reads on session start. 3 non-negotiable Critical Rules for the taxi-rental repo. Codified rule-as-code.
Rule 1: Never auto-promote to production.
Rule 2: Explain before answer.
Rule 3: Never change the DB without explicit instruction.
Each wraps a wrangler command. Each requires --confirm. Each audit-logs writes.
| Script | Wraps |
|---|---|
| bin/deploy-staging.sh | Pages + Worker deploy |
| bin/smoke-staging.sh | Post-deploy verification |
| bin/d1-safe.sh | D1 SELECT/INSERT/UPDATE/DELETE |
Why it matters. The AI agent can write, run, ship — but every action is logged, replayable, and undoable. The harness makes that contract explicit, not implicit. Trust with receipts.
/07· STRENGTH 6 · CICD CYCLE
Not "CI runs green" — I want to know the bundle is live and matches the source. Every link in the loop has a guard.
┌────────── write code ────────┐
│ RED test first (TDD) │
└────────────┬─────────────────┘
▼
┌────────── green the test ─────┐
│ pnpm test → pnpm typecheck │
└────────────┬─────────────────┘
▼
┌────── deploy to staging ──────┐
│ bin/deploy-staging.sh │ --confirm required
└────────────┬─────────────────┘
▼
┌────────── verify ──────────────┐
│ 5-source receipt chain │
│ (git + CF API + curl) │
└────────────┬─────────────────┘
▼
┌────────── monitor ─────────────┐
│ smoke stays green │
│ users report clean │
└────────────┬─────────────────┘
▼
└────── loop ◄─────┐
next commit
Trunk-based on staging. main frozen at v1.19.0 source. Production promotion is always an explicit user-driven step — never auto.
/08· THE PROJECT · LIVE + SCALE
A bilingual (zh-HK + en) operations app for an HK taxi-rental company. Replaces whiteboards + WhatsApp. ~50 taxis · 3 roles · HKD billing · in-app notifications.
staging.taxi-rental.pages.dev 200 OK taxi-rental.pages.dev 200 OK/09· THE PROJECT · STACK
/10· HERO HIGHLIGHT
Driver-picker modal showed drivers already assigned same-day other-taxi as pickable. Users had to deselect manually. The old filter was per-taxi — should have been per-day.
Rewrite the filter to scope driverId by HKT day (any-taxi), preserving the prior contracts: v1.34.7 same-taxi grey behaviour + v1.14.12 reassign-current preservation.
Greenfield TDD. 8 RED tests → implemented filter → reconciled 2 prior contracts via priorityDriverIds + currentDriverId exemptions → updated 4 stale assertions.
475 / 475 web tests pass. Zero regressions. Driver-picker modal hard-hides busy drivers. Production deployed as v1.41.3.
Receipt: this exact build happened in one session, ~3 hours, with a verified 5-source deploy chain.
/11· 3 MORE WINS
status='left'S. Operators needed to remove ex-employees. T. Preserve audit trail, no schema migration. A. Backend DELETE → status='left'; frontend buttons hidden-for-self. R. Operator can't accidentally delete themselves.
S. Build output had worker-prod instead of worker. T. Login would 405 (POST hits Pages host). A. Smoke check caught it pre-prod. R. Fixed in same release with regression test. Zero users impacted.
S. Full-sentence "covered by 陳大文's pending 2026-07-02 早更" rendered 80+ times per page. T. Terse without losing info. A. Collapse to ⏰ 待編配 chip; full info in title=. R. Page weight ↓, readability ↑.
/12· CONTACT
Looking for senior full-stack, platform-cloud, or AI-tooling roles in Hong Kong (or remote). Open to interesting contract work too.
Generated 2026-07-14 from live repo + real session data · Every metric verified against git log, vitest, wrangler, curl · Zero fabrication.