|
| 1 | +# Dev Toolbox |
| 2 | + |
| 3 | +A privacy-first, offline-friendly toolbox of developer utilities that runs entirely in the browser. No backend, no tracking by default. |
| 4 | + |
| 5 | +## Features |
| 6 | +- Angular + TypeScript, static build output |
| 7 | +- TailwindCSS + Angular Material UI with glassmorphism styling |
| 8 | +- CodeMirror 6 editor for rich inputs |
| 9 | +- Web Workers for heavy JSON/Text operations |
| 10 | +- Offline-ready PWA (service worker) |
| 11 | +- Modular, lazy-loaded routes per tool category |
| 12 | + |
| 13 | +## Local Development |
| 14 | +1. Install dependencies: |
| 15 | + |
| 16 | +```bash |
| 17 | +npm install |
| 18 | +``` |
| 19 | + |
| 20 | +2. Run the dev server: |
| 21 | + |
| 22 | +```bash |
| 23 | +npm start |
| 24 | +``` |
| 25 | + |
| 26 | +Open `http://localhost:4200/`. |
| 27 | + |
| 28 | +## Build |
| 29 | + |
| 30 | +```bash |
| 31 | +npm run build |
| 32 | +``` |
| 33 | + |
| 34 | +Static assets are emitted to `dist/dev-toolbox`. |
| 35 | + |
| 36 | +## Tests |
| 37 | + |
| 38 | +```bash |
| 39 | +npm test |
| 40 | +``` |
| 41 | + |
| 42 | +## Static Hosting (S3 + CloudFront) |
| 43 | +1. Build the app and upload the contents of `dist/dev-toolbox` to your S3 bucket. |
| 44 | +2. Configure S3 for static website hosting. |
| 45 | +3. CloudFront: |
| 46 | + - Set default root object to `index.html`. |
| 47 | + - Add custom error responses for 403/404 to serve `/index.html` with HTTP 200 (SPA routing). |
| 48 | +4. Cache headers (recommended): |
| 49 | + - `index.html`: `Cache-Control: no-cache` |
| 50 | + - `/*.js`, `/*.css`, assets: `Cache-Control: public, max-age=31536000, immutable` |
| 51 | + |
| 52 | +## Ads / Monetization |
| 53 | +Ad placeholder lives here: |
| 54 | +- `src/app/shared/components/ad-slot/ad-slot.component.html` |
| 55 | + |
| 56 | +Paste your Carbon Ads / EthicalAds / AdSense snippet in the commented section within that file. |
| 57 | + |
| 58 | +## Privacy & Security Notes |
| 59 | +- All processing happens locally in the browser. |
| 60 | +- No user input is sent to any server. |
| 61 | +- Analytics are off by default and optional. |
| 62 | +- JWT decoder is **decode-only** and does not verify signatures. |
| 63 | +- “Remember my inputs” is off by default; enabling it stores inputs locally on this device. |
0 commit comments