# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Project Structure - **Backend**: `worker/` — Cloudflare Workers API using Hono framework. Entry: `worker/src/worker.ts`, APIs under `worker/src/*_api/`. - **Frontend**: `frontend/` — Vue 3 + Naive UI app deployed to Cloudflare Pages. Routes in `frontend/src/router/`. - **Pages middleware**: `pages/functions/_middleware.js` — Routes API calls to Worker backend. - **Mail parser**: `mail-parser-wasm/` — Rust WASM email parser. - **SMTP/IMAP proxy**: `smtp_proxy_server/` — Python proxy server. - **DB schema/migrations**: `db/` — SQLite via Cloudflare D1, dated migration patches. - **Docs**: `vitepress-docs/` — VitePress documentation site (zh + en). - **Changelogs**: `CHANGELOG.md` (中文) + `CHANGELOG_EN.md` (English). ## Build & Dev Commands Run inside each subfolder with `pnpm`: | Folder | Dev | Build | Lint | Deploy | |--------|-----|-------|------|--------| | `worker/` | `pnpm dev` | `pnpm build` | `pnpm lint` | `pnpm deploy` | | `frontend/` | `pnpm dev` | `pnpm build` | — | `pnpm deploy` | | `vitepress-docs/` | `pnpm dev` | `pnpm build` | — | — | | `mail-parser-wasm/` | — | `wasm-pack build --release` | — | — | SMTP proxy: `pip install -r smtp_proxy_server/requirements.txt` then `python smtp_proxy_server/main.py`. ## Coding Style - `worker/` uses TypeScript + ESLint; `frontend/` uses Vue SFCs. - Keep existing naming patterns: `*_api/` folders, `utils/`, `models/`. - ESM imports only (`type: module`). ## Auth Headers - Address JWT: `x-user-token` - User JWT: `x-user-access-token` - Admin: `x-admin-auth` - Language: `x-lang` ## Commits & PRs - Use Conventional Commits: `feat:`, `fix:`, `docs:`, `style:`, `refactor:`, `perf:`. - PRs should explain scope; add screenshots for UI changes. - Use squash merge for PRs. ## Post-Task Checklist (IMPORTANT) After completing any feature, bug fix, or improvement, **always check**: 1. **CHANGELOG.md** (中文) and **CHANGELOG_EN.md** (English) — both must be updated under the current `(main)` version section with the change entry. Follow the existing format: `- feat/fix/docs: |模块| 描述`. 2. **Documentation** — if the change involves new environment variables, new API endpoints, or configuration changes, update the corresponding docs in `vitepress-docs/docs/zh/` and `vitepress-docs/docs/en/`. Key files: - `guide/worker-vars.md` — Worker environment variables - `guide/ui/` — Frontend deployment docs - `guide/feature/` — Feature-specific docs - `api/` — API reference docs 3. **Both languages** — docs and changelogs exist in Chinese and English; always update both. ## Testing No formal test runner. Validate with local dev servers and key flows (login, inbox, send/receive). ## Config - Worker settings in `worker/wrangler.toml` (see `wrangler.toml.template` for bindings). - Frontend uses `VITE_*` env vars. Don't commit secrets.