GlowFace AI is a browser-based real-time beauty filter app built with React + Vite. It applies face glow effects from your webcam stream and can optionally render MediaPipe hand landmarks.
- Fast, local-first webcam processing in the browser
- Lightweight codebase with a single main feature module
- Practical baseline for AR filter experiments with MediaPipe
- Real-time glow face filter on live camera feed
- Preset-based style switching + per-preset fine tuning
- Stage-based startup loader with progress percentage
- Optional hand landmark overlay (up to 2 hands)
- Capture and download processed snapshots
- JSON export/import for filter config sharing
- React 18
- TypeScript
- Vite
- MediaPipe FaceMesh + Hands (loaded from CDN)
- Node.js 18+
- pnpm
pnpm installpnpm devOpen the URL printed in terminal (usually http://localhost:5173) and allow camera access.
pnpm build
pnpm previewMesh: show/hide face oval guideFilter: enable/disable glow filterH: enable/disable hand landmark overlay- Shutter button: capture current frame
- Sliders panel: tune filter parameters
The app includes a dev-only benchmark panel to measure runtime camera performance.
- Run
pnpm dev - Open
Perf Benchmark (DEV)panel - Click
Start, run your scenario for 20-60 seconds, then clickStop - Use
Copy JSONto export metrics
Reported metrics:
- Current FPS and average FPS
- P95 frame time
- Average FaceMesh and Hands processing latency
- Dropped frame ratio
- Pass/fail status against desktop target (30 FPS)
src/features/glow-face/GlowFaceApp.tsx: main camera/model/render/UI logicsrc/App.tsx: app wrappersrc/main.tsx: application entrypoint
Primary target is desktop Chrome. Also test at least one additional browser for camera + model loading behavior.
tsc: command not foundduring build:- Run
pnpm installto install local dependencies.
- Run
- MediaPipe wasm/data load errors or 404s:
- Hard refresh and retry.
- Confirm network access to
cdn.jsdelivr.net.
Hand overlay ไม่พร้อมใช้งานในอุปกรณ์นี้:- Hands model failed to initialize; face filter still works.
Contributions are welcome.
- Open an issue for major changes.
- Create a feature branch.
- Keep commits focused and descriptive.
- Submit a PR with manual test steps and UI screenshots/recording when relevant.
- Better gesture interactions (hands-free capture/toggle)
- More filter packs and export presets
- Performance tuning for low-power devices
No license file is currently included.
Add a LICENSE file (for example MIT) before publishing publicly.