Production
Production showcase
Live deployments, repos, and how they connect
Curated production details for projects I've shipped — URLs, architecture, clone steps, and API endpoints. Expand a section during screen-share; add live URLs in this file as you deploy more.
3 live · 3 repo-only — click a project to expand details
LungLens
LiveFrontend: github.com/Charleschtsoi/LungLens → live at lunglenshk.vercel.app · Backend: lunglens-backend → charleschtsoi-lunglens-backend.hf.space

LungLens
LiveFrontend: github.com/Charleschtsoi/LungLens → live at lunglenshk.vercel.app · Backend: lunglens-backend → charleschtsoi-lunglens-backend.hf.space

Full-stack AI product in production: Next.js on Vercel, BFF routes for async jobs, inference on Hugging Face — same PoC-to-production shape as enterprise work.
frontend
Frontend (Next.js app)
| GitHub | Charleschtsoi/LungLens |
|---|---|
| Branch | main |
| Live app (Vercel) | https://lunglenshk.vercel.app |
| Upload flow | https://lunglenshk.vercel.app/upload |
| Pitch / demo page | https://lunglenshk.vercel.app/pitch |
Contains
- UI, upload flow, results
- Next.js BFF routes (/api/analyze/jobs, /api/health, etc.)
Does not contain
- Full ML weights or production inference (see backend repo)
Clone frontend
git clone https://github.com/Charleschtsoi/LungLens.git cd LungLens npm install cp .env.example .env.local npm run dev # http://localhost:3000
backend
Backend (production ML API)
| GitHub | Charleschtsoi/lunglens-backend |
|---|---|
| Branch | main |
| Hugging Face Space (live API) | https://charleschtsoi-lunglens-backend.hf.space |
| HF Space settings / deploy | https://huggingface.co/spaces/Charleschtsoi/lunglens-backend |
Contains
- FastAPI server, model loaders
- POST /api/v1/analyze
- Async jobs: POST/GET /api/v1/analyze/jobs
- Health endpoints
Clone backend
git clone https://github.com/Charleschtsoi/lunglens-backend.git cd lunglens-backend python3 -m venv .venv && source .venv/bin/activate pip install -r requirements.txt uvicorn main:app --host 127.0.0.1 --port 7861
How they connect (production)
Browser talks to Vercel; BFF proxies and polls the Hugging Face inference API.
Browser → https://lunglenshk.vercel.app Vercel BFF (/api/analyze/jobs + polling) → https://charleschtsoi-lunglens-backend.hf.space
Environment variables
| Name | Value / notes |
|---|---|
| BACKEND_API_BASE_URL | https://charleschtsoi-lunglens-backend.hf.space (Vercel env) |
| BACKEND_API_KEY | Same as HF Space API_KEY — share privately, not in GitHubsecret |
API / health URLs
| Endpoint | URL |
|---|---|
| Health (quick) | https://charleschtsoi-lunglens-backend.hf.space/healthz |
| Health (models) | https://charleschtsoi-lunglens-backend.hf.space/health |
| POSTAsync analyze (submit) | https://charleschtsoi-lunglens-backend.hf.space/api/v1/analyze/jobs |
| GETAsync analyze (poll) | https://charleschtsoi-lunglens-backend.hf.space/api/v1/analyze/jobs/{job_id} |
| POSTSync analyze (legacy/local) | https://charleschtsoi-lunglens-backend.hf.space/api/v1/analyze |
Sample backend inside frontend repo
LungLens/backend/main.py in the frontend repo is a lightweight sample only (Gemini health-check + generate-questions). It is not production inference — no full /api/v1/analyze ensemble. Teammates doing real uploads should use lunglens-backend, not only the monorepo backend/ folder.
Art Globe
LiveInteractive global art discovery experience with map-based exploration — live on Vercel with source available on GitHub.

Art Globe
LiveInteractive global art discovery experience with map-based exploration — live on Vercel with source available on GitHub.

A visual web experience that maps artworks and artists geographically for exploratory storytelling — useful proof of product thinking plus frontend execution.
frontend
Frontend (interactive web app)
| GitHub | Charleschtsoi/Art_Globe |
|---|---|
| Branch | main |
| Live app (Vercel) | https://art-globe.vercel.app/ |
| GitHub repository | https://github.com/Charleschtsoi/Art_Globe |
Contains
- Interactive globe-based exploration UI
- Artwork and artist discovery by geography
- Production deployment for live demo access
How they connect (production)
Browser-only interactive frontend deployed on Vercel.
Browser → https://art-globe.vercel.app/ (Vercel deployment)
Hermes (ExpiryScanner)
Repo onlygithub.com/Charleschtsoi/Hermes — React Native + Expo mobile app with barcode scanning, GPT-4o-mini product analysis, and Supabase backend.
Hermes (ExpiryScanner)
Repo onlygithub.com/Charleschtsoi/Hermes — React Native + Expo mobile app with barcode scanning, GPT-4o-mini product analysis, and Supabase backend.
Full mobile product loop: camera scan → AI identification → shelf-life estimation → push notifications. Same product discipline as enterprise, at app scale.
frontend
React Native / Expo app
| GitHub | Charleschtsoi/Hermes |
|---|---|
| Branch | main |
Contains
- Barcode scanning (EAN13, UPC, QR)
- AI product analysis via OpenAI GPT-4o-mini
- Supabase auth, inventory, and push notifications
Clone
git clone https://github.com/Charleschtsoi/Hermes.git cd Hermes npm install npx expo start
AI Agent X-Ray
Repo onlygithub.com/Charleschtsoi/ai-agent-xray — Interactive visualization of LLM tool-calling flow with guardrail toggles.
AI Agent X-Ray
Repo onlygithub.com/Charleschtsoi/ai-agent-xray — Interactive visualization of LLM tool-calling flow with guardrail toggles.
Side-by-side chat and x-ray panel showing agent steps — tool routing, token usage, guardrails. Built to explain agent architecture to non-engineering stakeholders.
frontend
Single-file interactive demo
| GitHub | Charleschtsoi/ai-agent-xray |
|---|---|
| Branch | main |
Contains
- Chat + tool-calling flow visualization
- Guardrail toggle demo
- Token and step-by-step x-ray panel
Open locally
git clone https://github.com/Charleschtsoi/ai-agent-xray.git cd ai-agent-xray open ai-agent-xray.html # or serve with any static server
Product Tax Deduction Log
LiveReact Native + Expo mobile app for tracking tax-deductible expenses — now live on the Hong Kong Apple App Store.

Product Tax Deduction Log
LiveReact Native + Expo mobile app for tracking tax-deductible expenses — now live on the Hong Kong Apple App Store.

A production mobile app now live in the Hong Kong App Store. It helps users capture and organize deductible expenses throughout the tax year.
frontend
React Native / Expo app
Contains
- Product purchase logging
- Tax deduction tracking and categorisation
- Live in Hong Kong Apple App Store
Region
Published on the Hong Kong Apple App Store.
Motion Resume (this site)
Repo onlygithub.com/Charleschtsoi/resume — Apple-style narrative resume with presenter mode. Add Vercel live URL when deployed.
Motion Resume (this site)
Repo onlygithub.com/Charleschtsoi/resume — Apple-style narrative resume with presenter mode. Add Vercel live URL when deployed.
This site — scroll narrative, presenter mode, curated work and production showcase. Meta proof of presentation-first product thinking.
frontend
Next.js resume site
| GitHub | Charleschtsoi/resume |
|---|---|
| Branch | main |
Contains
- Homepage narrative, presenter mode
- /work curated GitHub
- /showcase production deployments
Clone
git clone https://github.com/Charleschtsoi/resume.git cd resume npm install npm run dev # http://localhost:3000
Deploy
Import repo at vercel.com/new or run npx vercel --prod. Add live URL to liveLinks when ready.