One application, five browser tools. Shared dependencies, development server, build, and deployment, with each tool's original interface and interactions preserved.
| Page | URL | Source |
|---|---|---|
| Tool directory | / |
src |
| MFA / 2FA code generator | /2fa/ |
2fa |
| Shared link ID extractor | /link-id/ |
link-id |
| Image annotator | /annotate/ |
annotate |
| Image to WebP converter | /webp/ |
webp |
| MP3 compressor | /mp3/ |
mp3 |
Use Bun 1.3.14 or later. Tests require Node.js 22.12 or later. Run all commands from the repository root.
bun install --frozen-lockfile
bun run dev
bun run test
bun run build
bun run previewAll tools use React 19, TypeScript 6, and Vite 8. A single root package.json and bun.lock manage dependencies. Tool directories are page modules rather than independent packages.
Vite's multi-page build gives each tool its own HTML document, React mount point, and stylesheet entry. Standard links navigate between documents, allowing browsers to reuse cached React assets while keeping each tool's CSS isolated.
The home page does not load FFmpeg. Its wrapper library and remote engine load only when opening the MP3 page. Existing language settings, themes, and storage keys are preserved. 2FA secrets are processed only in page memory and are never written to browser storage.
All pages are built into the root dist/ directory and deployed together using Cloudflare Workers Static Assets through wrangler.jsonc. Page URLs use trailing slashes; unknown paths return 404.
bun run deployThis command publishes a site named tools. The consolidation has not modified the existing standalone sites or migrated their domains. Configure any existing domains separately after verifying the new site.
For Cloudflare Workers Builds, use these settings:
| Setting | Value |
|---|---|
| Root directory | Repository root (/) |
| Build command | bun run build |
| Deploy command | npx wrangler deploy |
Wrangler automatically reads the root configuration, where assets.directory points to ./dist. Keep this as the only Wrangler configuration. To validate locally without publishing, run bun run build && bunx wrangler deploy --dry-run.
Original code is licensed under the MIT License. Third-party components retain their respective licenses. See the third-party notices for the GPL build of the FFmpeg core.
bun run audit
# Requires Gitleaks 8.25 or later
bun run scanSecret scanning allows only exact matches for public examples in designated test files. Never use the sample TOTP secrets for real accounts.
Build output, dependencies, environment files, and caches are excluded from Git. Use a GitHub noreply email address for commits.