A collection of privacy-first web tools sharing one Turborepo + pnpm workspace —
Next.js, Nuxt, and Hono/Cloudflare Workers side by side. Local dev is proxied by
@dotns/nsl: every app gets a stable URL at
http://<name>.localhost:3355, no port hunting.
Important
Most apps run entirely in the browser with zero server uploads — your data never leaves your device. Privacy-first · Local-first · Performance-first.
This README is the entry point; each sub-project has its own docs — start there for depth.
| App | What it is | Live |
|---|---|---|
| baccarat | Telegram baccarat game bot (Hono + Durable Objects) | — |
| bycut | Browser video editor — timeline-based, zero uploads | ↗ |
| byplay | Online HLS / MP4 player | ↗ |
| byplay-log | ByPlay playback-log ingest service | — |
| byshot | Cloudinary-backed photography gallery | ↗ |
| bytts | Text-to-speech via Azure Speech (+ custom providers) | ↗ |
| clearify | Image / video toolbox (bg removal · compress · transcode) | ↗ |
| dropply-api | End-to-end encrypted file-sharing API | — |
| dropply-web | E2E encrypted file sharing — key lives in the URL fragment | ↗ |
| flnk | Privacy-first link shortener with geo / device routing | ↗ |
| flox | Multi-source video aggregation & playback (SSE) | ↗ |
| live-user | Real-time online-user counter (WebSocket Hibernation DO) | ↗ |
| repo-changelog | GitHub release / changelog dashboard (Nuxt) | ↗ |
| text2img | Browser AI text-to-image (Workers AI) | ↗ |
| values | Crypto / fiat / commodity value comparison | ↗ |
| vidl | Browser video downloader (M3U8 / HLS → MP4) | ↗ |
| wepush | Multi-tenant WeChat template-message push console | ↗ |
| Package | What it is |
|---|---|
| @cdlab/ui | Shared React + Tailwind v4 component library (no build step) |
| @cdlab/utils | Generic utilities — clipboard, download, format, idb-store, … |
| @cdlab/cipher | Stream cipher — XChaCha20-Poly1305 + Argon2id + ECIES |
| @cdlab/db | Dual-driver Drizzle factory (Cloudflare D1 / libSQL) |
| @cdlab/uncrypto | Cross-runtime WebCrypto shim (Node / browser / Workers) |
| @cdlab/tsconfig | Shared TypeScript config presets |
Every app and package ships three docs — open the sub-project directory and start
with its README.md:
README.md— what it is, why, quick start, and reference tables.DESIGN.md— the authoritative, section-numbered architecture spec.llms.txt— an agent-oriented guide (key files, gotchas, commands).
Prerequisites: Node.js ≥ 20, pnpm ≥ 11.
git clone https://github.com/WuChenDi/projects.git
cd projects
pnpm install # also builds workspace packagesDev servers are proxied by @dotns/nsl — each app is
reachable at http://<name>.localhost:3355 (<name> = package name, scope
stripped).
# Workspace-wide
pnpm dev # dev all apps (parallel)
pnpm build # build all
pnpm lint # Biome lint
pnpm format # Biome format --write
pnpm clean # wipe node_modules / caches / build output
# A single project — <name> is the package name (e.g. values, flnk)
pnpm --filter @cdlab/<name> dev # → http://<name>.localhost:3355
pnpm --filter @cdlab/<name> buildThe dev name is the package name with the scope stripped — the directory name
(e.g. values, flnk). See each sub-project's README for its exact scripts,
dev URL, and deploy command.
apps/ 18 deployable products (Next.js · Nuxt · Hono/Workers)
packages/ 6 shared libraries (ui · utils · cipher · uncrypto · db · tsconfig)
| Layer | Technology |
|---|---|
| Frontend | React + Next.js 16 (App Router) · Vue 3 + Nuxt 4 |
| Language | TypeScript 6 |
| UI | shadcn/ui · Tailwind CSS v4 · Nuxt UI |
| Browser APIs | WebAssembly (FFmpeg.wasm) · WebGPU · Web Workers · Streams API |
| Backend | Cloudflare Workers · Hono + Zod · Durable Objects |
| Database | Drizzle ORM + Cloudflare D1 / libSQL |
| Engineering | Turborepo · pnpm workspaces · Biome · @dotns/nsl |