FivoTools Master Plan 2026Root-level AI-readable execution guide
Canonical root reference · static-first · 35 tools · no paid processing API

FivoTools
Development Master Plan

এই file FivoTools-এর long-term technical source of truth। Public tools fast, accessible, SEO-visible এবং browser-local থাকবে; dynamic blog/guides/CMS আলাদা SSR boundary-তে চলবে; আর AI বা human developer প্রতিটি change একই architecture, UI/UX system, validation, testing এবং release contract অনুসরণ করবে। Current progress এই file-এ নয়—plan.md-এ track হবে।

35Detailed tool blueprints
7Planned pillar categories
Static-firstPublic pages & tools
SSR onlyCMS, content, forms
100+Scale target without rewrite
00 · AI Execution Contract

AI coding agent এই file কীভাবে ব্যবহার করবে

Mandatory read order

  1. AGENTS.md — operating rules and prohibited behavior.
  2. plan.md — actual current phase, completed work, active next task.
  3. FivoTools_Development_Master_Plan_2026.html — architecture, UI/UX and relevant tool blueprint.
  4. Marketing plan only when route, pillar, static content, SEO or AdSense layout is involved.
  5. Inspect the current repository before deciding what is missing.

Task protocol

  1. Identify the smallest complete scope.
  2. List affected files and existing patterns before editing.
  3. Implement engine/tests before UI for logic-heavy tools.
  4. Preserve routes, registries, privacy and architecture.
  5. Run relevant checks plus build.
  6. Report changed files, checks run and anything unverified.

AI must never

  • Rewrite the stack, URLs, pillar IDs, tool order or privacy model without explicit owner instruction.
  • Create TypeScript source files; tsconfig.json exists only for Astro/editor/checkJs tooling.
  • Make a public tool depend on Supabase or a paid API.
  • Put formulas inside JSX handlers or duplicate them in UI code.
  • Add random libraries, global CSS frameworks or a second UI framework.
  • Invent current rates, legal eligibility, ratings, reviews, sources or test results.
  • Mass-generate several tools in one change before the reference pattern is stable.
  • Refactor unrelated files “for cleanliness”.

Required completion report

Summary:
Files changed:
Behavior implemented:
Tests/checks run:
Production/build status:
Assumptions or unverified items:
No unrelated changes: Yes/No
01 · Product Lock & Document Roles

What is fixed and what each root file controls

FileAuthorityUpdate cadence
AGENTS.mdHow AI/humans inspect, edit, test and report.Rare; process changes only.
plan.mdCurrent phase, completed items, next task, blockers and short roadmap.After every meaningful milestone.
FivoTools_Development_Master_Plan_2026.htmlTechnical architecture, UI/UX, data contracts, 35 tool blueprints and release rules.Only for approved architecture/product changes.
FivoTools_Final_Marketing_SEO_AdSense_Project_Plan_2026.htmlTool order, pillar publishing, content, SEO, AdSense and growth decisions.Quarterly/data-led updates.

Locked stack

Astro + Preact islands + JavaScript/JSDoc + Node adapter + Supabase for CMS/auth/contact.

Locked portfolio

35 tools in four phases. Background Remover/ONNX is not part of the portfolio.

Locked privacy

Public calculations/files remain client-side. No mandatory public account or silent uploads.

Progress rule: এই master file কখনো “current phase completed” বলে stale status রাখবে না। Progress সবসময় plan.md-এ.
02 · Architecture & Rendering

One Astro project, static by default, SSR only where data must be live

Static requestPrerendered HTML
Tool islandDirectly imported Preact component
Browser engineCalculation/file work local
SSR requestBlog/CMS/form only
SupabasePublished content/auth/operations
AreaRenderingData / behaviorRebuild?
Home, All Tools, published pillarsSSGRegistries + static contentSource change only
All tool pagesSSG + client islandStatic content + local engineTool/content change
Trust/legal pagesSSGRepository contentContent change
Blog/guidesSSR / prerender=falsePublished Supabase content rendered to full HTMLNo for content edits
Backend/CMSSSR + auth + noindexSupabase session/RLSNo for DB changes
Contact/error reportsServer endpointsValidated writes + anti-abuseNo
SitemapsStatic tools/pages + dynamic content sitemapRegistries + published CMS rowsMixed

Astro baseline

import { defineConfig } from 'astro/config';
import node from '@astrojs/node';
import preact from '@astrojs/preact';
import sitemap from '@astrojs/sitemap';
import { loadEnv } from 'vite';

const env = loadEnv(process.env.NODE_ENV ?? 'development', process.cwd(), '');

export default defineConfig({
  site: env.PUBLIC_SITE_URL,
  output: 'static',
  adapter: node({ mode: 'standalone' }),
  integrations: [preact(), sitemap()],
});

// Only live routes/endpoints:
export const prerender = false;

Direct tool route wrapper

---
import ToolPage from '../../layouts/ToolPage.astro';
import Tool from '../../features/tools/time-card/Tool.jsx';
import Content from '../../features/tools/time-card/Content.astro';
import config from '../../features/tools/time-card/config.js';
---

<ToolPage config={config}>
  <Tool slot="tool" client:load />
  <Content slot="content" />
</ToolPage>
Why explicit routes: Astro client directives work on directly imported framework components. Tool routes remain obvious, inspectable and bundle-isolated.
03 · Repository & Configuration

Clean structure for 35–100+ tools

fivotools/
├── AGENTS.md
├── plan.md
├── FivoTools_Development_Master_Plan_2026.html
├── FivoTools_Final_Marketing_SEO_AdSense_Project_Plan_2026.html
├── package.json
├── package-lock.json
├── astro.config.mjs
├── tsconfig.json              # required Astro/editor tooling; no TS source
├── eslint.config.js
├── .env.example
├── app.js                     # only if Passenger proof requires it
├── THIRD_PARTY_NOTICES.md
│
├── scripts/
│   ├── scaffold-tool.mjs
│   ├── verify-registry.mjs
│   ├── verify-routes.mjs
│   └── verify-content.mjs
│
├── src/
│   ├── components/
│   │   ├── layout/ navigation/ ui/ forms/ results/ seo/ tool/
│   ├── features/tools/<tool-id>/
│   │   ├── config.js
│   │   ├── engine.js
│   │   ├── validation.js
│   │   ├── fixtures.js
│   │   ├── engine.test.js
│   │   ├── Tool.jsx
│   │   └── Content.astro
│   ├── content/pillars/
│   ├── data/
│   │   ├── tools.registry.js
│   │   ├── categories.registry.js
│   │   └── rates/irs-mileage.js
│   ├── lib/
│   │   ├── time/ money/ units/ geometry/ materials/
│   │   ├── image/ pdf/ documents/ validation/
│   │   ├── analytics/ seo/ supabase/
│   ├── layouts/
│   │   ├── BaseLayout.astro ToolPage.astro PillarPage.astro
│   │   ├── ArticlePage.astro BackendLayout.astro
│   ├── pages/
│   │   ├── tools/ categories/ guides/ blog/ backend/ api/
│   │   └── index.astro all-tools.astro 404.astro trust pages
│   ├── styles/
│   │   ├── tokens.css global.css forms.css tool.css utilities.css
│   └── middleware.js
│
├── supabase/migrations/
├── public/favicon/ icons/ static-assets/
└── tests/e2e/ fixtures/

tsconfig.json

{
  "extends": "astro/tsconfigs/base",
  "compilerOptions": {
    "allowJs": true,
    "checkJs": true,
    "jsx": "preserve",
    "jsxImportSource": "preact",
    "baseUrl": ".",
    "paths": { "@/*": ["src/*"] }
  },
  "include": [".astro/types.d.ts", "**/*"],
  "exclude": ["dist", "node_modules"]
}

Required scripts

"dev": "astro dev",
"build": "astro check && astro build",
"preview": "astro preview",
"check": "astro check",
"lint": "eslint .",
"test": "vitest run",
"test:watch": "vitest",
"test:e2e": "playwright test",
"verify": "npm run lint && npm test && npm run build"

Environment contract

PUBLIC_SITE_URL=https://www.fivotools.com
PUBLIC_SUPABASE_URL=
PUBLIC_SUPABASE_PUBLISHABLE_KEY=

# Server-only and only if a narrow privileged job truly needs it:
SUPABASE_SECRET_KEY=
  • Commit .env.example, never secrets.
  • PUBLIC_* can enter the browser; secret keys cannot.
  • package-lock.json is mandatory.
  • Current 2026 Node baseline: package engines should accept tested Node 22/24; revisit before runtime EOL.
04 · Tool, Pillar & Route Registries

Metadata is centralized; hydrated components are not dynamically routed

Tool registry contract

{
  id: 'time-card',
  name: 'Time Card & Work Hours Calculator',
  slug: '/tools/time-card-calculator/',
  categoryId: 'work-pay',
  phase: 'launch',
  status: 'published',
  related: ['pay-raise', 'salary-hourly'],
  maintenanceClass: 'formula-stable',
  reviewedAt: '2026-08-26'
}

Category registry contract

{
  id: 'work-pay',
  name: 'Work & Pay Tools',
  slug: '/categories/work-pay/',
  status: 'published',  // planned | published | archived
  toolIds: ['time-card', 'pay-raise', ...],
  reviewedAt: '2026-08-26'
}
IDPillar routeInitial publishing ruleTools
work-payWork & Pay Tools
/categories/work-pay/
published with first 101, 2, 9, 11, 17
roofing-constructionRoofing & Construction Tools
/categories/roofing-construction/
published with first 103, 4, 5, 6, 8, 13
home-improvementHome Improvement Tools
/categories/home-improvement/
publish after enough depth10, 14, 15, 16
businessBusiness Tools
/categories/business/
publish during growth7, 18, 19, 20, 24
image-toolsImage Tools
/categories/image-tools/
publish when 2+ image tools live12, 21, 22, 23
pdf-toolsPDF Tools
/categories/pdf-tools/
publish after meaningful PDF cluster25, 26, 27, 28, 30, 31, 33, 34, 35
career-documentsCareer & Document Tools
/categories/career-documents/
publish when resume + cover letter live29, 32
  • Tool URL is stable and independent from category slug.
  • Only published substantive pillar routes enter Home navigation and static sitemap.
  • If a tool’s pillar is still planned, breadcrumb fallback is Home → All Tools → Tool.
  • When pillar is published, breadcrumb becomes Home → Pillar → Tool without changing the tool URL.
  • Registry verification checks unique IDs/slugs, valid tool references, real routes and content modules.
  • No “Coming Soon” items inside indexable pillar content.
05 · UI / UX Design System

Professional, consistent and accessible across every page

Token / ruleFivoTools standard
Layout widthContent max ~1200px; tool work area usually 900–1040px; readable article column ~760px.
Spacing4/8/12/16/24/32/48px scale. No arbitrary per-tool spacing.
Radius10px controls, 14px cards, 18px major sections.
TypographySystem/Inter-style stack; body 16px target, line-height ~1.6; clear 3-level heading hierarchy.
ColorNavy text/structure, blue primary action, teal accent, semantic success/warning/error. Contrast tested to WCAG 2.2 AA.
TargetsWCAG AA requires 24×24px or sufficient spacing; FivoTools internal target is 44px minimum height for primary controls.
FocusVisible 3px focus ring; sticky headers/toolbars may not obscure focused controls.
MotionFunctional only; respect reduced motion.

Shared component inventory

Navigation

SiteHeader, MobileNav, Breadcrumbs, CategoryNav, SiteFooter.

Forms

Text/number/money/time fields, UnitField, Select, SegmentedControl, Slider, Checkbox, FileDrop.

Results

ResultPanel, PrimaryValue, BreakdownRows, Assumptions, Copy/Download/Reset.

Heavy tools

FileQueue, ProgressItem, ThumbnailGrid, DocumentPreview, SignatureCanvas, StatusNotice.

Form behavior rules

  • Labels always visible; units sit beside the field, not only in placeholder text.
  • For decimals/currency, use a centralized parser; avoid browser-specific accidental exponent/wheel behavior.
  • Show errors after blur or submit; after first submit, live revalidation is allowed.
  • Do not clear valid user input after an error.
  • Primary action: Calculate / Convert / Process / Generate. Reset is secondary and never adjacent to destructive Delete without separation.
  • Results use role="status" or equivalent polite live region where updates need announcement.
  • Drag interactions always have non-drag alternatives.
06 · Page Templates & Wireframes

Exact information architecture for public and private pages

Tool page

Header
Breadcrumb
H1 + one-sentence value + privacy/estimate note when relevant
Primary Tool Card
  - input/options
  - primary action
  - stable result/progress area
Optional consent-aware AdSlot AFTER the core interaction/result
How to use
Method / Formula / Processing explanation
Worked examples
Assumptions / Limitations / Sources / Reviewed date
Related tools + guides
Report an error
Footer

Homepage

Compact brand intro, tool search, published pillars, popular/live tools, guides and trust—not a giant decorative hero.

Pillar page

Category explanation, “choose the right task” pathways, grouped live tools, unique comparison text and relevant guides.

Article/Guide

Breadcrumb, title, author/reviewer/date, readable body, sources, relevant tool CTA and related content.

Document builder

Desktop:  Editor (left) | Live print preview (right)
Mobile:   Editor tab | Preview tab
Top bar:  Autosave status | Import/Export draft | Clear data
Bottom:   Print | Download PDF

Backend/CMS

Login
Dashboard: drafts / published / reports / contacts
Post list with search/status/type filters
Editor: title, slug, excerpt, body, SEO, sources, author/reviewer, preview
Publish guard: missing title/slug/body/meta/author/source rules
Contacts / error reports / redirect log / audit log
Ad component rule: AdSlot.astro is disabled until approval/configuration. It reserves layout space and loads only when consent/policy requirements are satisfied. It never appears inside the primary action cluster.
07 · Tool UX State Machine

Every tool handles idle, invalid, processing and failure predictably

IdleDefaults + no result
Dirty / InvalidInline messages; inputs preserved
ReadyPrimary action enabled
ProcessingProgress + cancel where possible
Success / Partial / ErrorActionable result or recovery
Tool familyStandard interactionSpecial states
CalculatorInputs → Calculate → stable result. Optional recalculation only after first valid result.Invalid assumptions, division-by-zero, impossible dimensions.
Image/FileSelect files → configure → Process → per-file queue/results.Queued, processing, canceled, unsupported, partial batch success, memory limit.
PDF organizer/editorLoad → preview/model edits → explicit Export.Encrypted PDF, rendering failure, unsaved changes, coordinate mismatch prevention.
Document builderEdit structured draft → preview → export.Autosave, local quota failure, import validation, multi-page overflow.

Standard error codes

REQUIRED
INVALID_FORMAT
OUT_OF_RANGE
ZERO_DENOMINATOR
UNSUPPORTED_FILE
ENCRYPTED_PDF
DECODE_FAILED
MEMORY_LIMIT
CANCELED
STALE_OR_MISSING_RATE
EXPORT_FAILED
UNKNOWN

Internal error code stays stable for tests/analytics; user-facing message is plain and actionable. Never show stack traces or raw library errors.

08 · JavaScript, Data & Formula Rules

Simple code, explicit math, predictable modules

  • ES modules only. Named exports for shared primitives; default export only where framework convention helps.
  • JSDoc for public functions, input/output shapes and non-obvious assumptions.
  • One module = one responsibility. No utils.js dumping ground.
  • Use const by default; no implicit globals; no eval/new Function.
  • Normalize input first, calculate in canonical units, format last.
  • Time durations use integer minutes.
  • Money uses big.js or one audited decimal/rounding adapter; intermediate calculation and display rounding are separate.
  • Material purchase rounding occurs only at the purchase stage.
  • Date-aware official rates are append-only records with effective ranges; never overwrite history.
  • Same normalized input + same data version = same result.

Rate dataset shape

{
  id: 'irs-mileage-business-2026-h2',
  purpose: 'business',
  ratePerMile: 0.76,
  effectiveFrom: '2026-07-01',
  effectiveTo: '2026-12-31',
  sourceUrl: 'https://www.irs.gov/...',
  reviewedAt: '2026-07-28'
}
09 · Image Processing Platform

One worker-based pipeline, format-specific adapters

Validate file signature/bytes/pixels
→ decode (native or lazy fallback)
→ normalize orientation / color / alpha policy
→ optional resize
→ encode
→ Blob / preview / download
→ close bitmap, clear canvas, revoke URL, release buffer

Queue

Stable job IDs, bounded concurrency, progress, cancel and per-file errors. One failing file does not fail the batch.

Native + fallback

Feature-detect native decode/encode; use jSquash/libheif fallback only on relevant routes and only after user intent.

Privacy

No source upload, filename analytics or persistent server storage. Metadata behavior is documented.

Worker contract

// main -> worker
{ type: 'PROCESS', jobId, payload, options }
{ type: 'CANCEL', jobId }

// worker -> main
{ type: 'PROGRESS', jobId, completed, total }
{ type: 'RESULT', jobId, buffer, meta }
{ type: 'ERROR', jobId, code, message }
  • Use new Worker(new URL('./worker.js', import.meta.url), { type:'module' }).
  • OffscreenCanvas is preferred when supported; Canvas fallback is mandatory.
  • Do a real Astro/Vite production spike before selecting jSquash package versions; exclude affected codecs from Vite dependency optimization if the official workaround is required.
  • HEIC fallback licensing/redistribution must be documented in THIRD_PARTY_NOTICES.md.
10 · PDF Platform

PDF.js for preview/rendering; pdf-lib for document manipulation

Preview layer

pdfjs-dist, same package/worker version, low-resolution lazy thumbnails, coordinate mapping and page metadata.

Mutation/export layer

pdf-lib load/copy/draw/form/CropBox/save. Create a new output from an immutable page plan when ordering/deleting pages.

  • PDF tools are in-memory; do not claim streaming/chunked merge.
  • Encrypted PDFs may be unsupported; do not use ignoreEncryption as a fake decrypt path.
  • CropBox changes visual crop only; crop is not redaction.
  • Fill & Sign is AcroForm filling + electronic visual overlays, not cryptographic certificate signing.
  • PDF.js and worker are bundled/self-hosted from the same installed version.
  • Unicode text requires a suitable embedded permissively licensed font and fontkit/document font configuration.
  • Preview scale and export coordinate systems are tested on rotated/mixed-size pages.
11 · Invoice, Estimate, Resume & Cover Letter Platform

Structured local data → vector/selectable PDF

Validated structured draft
→ debounced IndexedDB autosave
→ document-specific layout model
→ live print preview
→ pdfmake/direct vector export or CSS print
→ selectable text PDF
→ optional JSON backup/import

Local drafts

Versioned IndexedDB schema, migration function, autosave indicator, Clear Data and JSON export/import.

Fonts

Self-host only permissively licensed fonts needed for the selected templates; retain notices. Do not bundle unnecessary weights.

Quality

Multi-page pagination, repeated table headers, long text wrapping and PDF text extraction are release tests.

Never: use html2canvas/screenshot PDF as the main export for invoice/resume/cover letter; upload drafts silently; claim “ATS guaranteed”; or present local browser storage as encrypted cloud backup.
12 · CMS, Auth & Supabase

Dynamic editorial operations with strict RLS

TablePurposeKey rules
profilesAdmin/editor/support identity and active statusID = auth user; role constrained; no public directory by default.
postsBlog/guide draft and published contentUnique slug; type/status; author/reviewer; SEO/source/review fields.
post_revisionsEditorial history/rollbackAppend revisions at publish/update milestones.
contact_messagesGeneral contact inboxControlled server insert; no anonymous select.
error_reportsTool/content correction reportsTool ID/browser/error category; never private calculator/file contents.
redirectsOld slug → new canonical pathOne-to-one permanent redirect map.
audit_logAdmin/editor changesAppend-only safe metadata; no secret/message body dump.

RLS matrix

  • Anonymous: read published posts/guides only.
  • Editor: manage allowed content through authenticated JWT and RLS.
  • Support: contact/error workflow only.
  • Admin: roles/settings/audit with explicit server-side authorization.
  • Service/admin secret: rare, server-only and not the default CMS client.

Publishing contract

  • Full article title/meta/canonical/H1/body/author/date/Article JSON-LD exists in the SSR response.
  • Draft preview is authenticated and noindex.
  • Slug change creates redirect record and updates internal links.
  • Markdown is sanitized server-side; raw HTML disabled unless allowlisted.
  • Public user tool files never use Supabase Storage. Editorial images may, with quota and MIME controls.
  • Database migrations live in supabase/migrations/; periodic exports/backups are operationally required.
13 · Technical SEO Engineering

Every indexable page is complete before hydration

  • Unique title, meta description, canonical, one H1, breadcrumb, OG data and meaningful HTML content.
  • Tool engine may require JS; tool explanation/links never do.
  • Correct HTTP 404 for missing routes; backend/preview/search states are noindex.
  • Stable URLs; permanent redirects for renamed paths; canonical and internal links updated.
  • Home, All Tools and published pillars use crawlable <a href> links.
  • Structured data is visible-content accurate. Safe default: Organization/WebSite, WebPage, BreadcrumbList, Article/BlogPosting.
  • No fake aggregate ratings or unsupported rich-result promises.
  • Important content is not hidden behind click-dependent lazy loading.

Sitemaps

/sitemap.xml             # sitemap index
/sitemap-tools.xml       # static tool routes
/sitemap-pages.xml       # home, all-tools, published pillars, trust pages
/sitemap-content.xml     # published SSR blog/guides

Content contract generated by development

Tool page slots

How to use, method, examples, assumptions, sources, related tools and report-error link.

Pillar page slots

Category intro, task pathways, grouped tools, differences, guides and breadcrumbs.

Article slots

Author/reviewer/date, source notes, relevant tool CTA and related content.

14 · Analytics & Privacy Contract

Measure utility without collecting user inputs

EventAllowed parametersNever include
tool_starttool_id, modeAmounts, times, dimensions, filenames
tool_completetool_id, mode, duration_bucket, result_typeResult values or file contents
tool_errortool_id, generic error_code, stageRaw exception with personal content
downloadtool_id, output_format, batch_bucketFilename/client/document text
copy_resulttool_idCopied result
  • Analytics/ad scripts respect applicable consent settings.
  • Public calculators never encode sensitive values in URLs.
  • Report Error can include tool ID, app version and browser summary, but not automatic private input/file attachment.
  • Core functionality remains usable if analytics is blocked.
15 · Security Baseline

Defense for server routes, admin sessions and generated output

Server

  • HTTPS production; secure/SameSite cookie behavior.
  • Validate body schema, content type and size.
  • Origin/CSRF protection for authenticated mutations.
  • Honeypot + timing + rate controls on public forms; optional challenge only when abuse requires it.
  • RLS + server role check; hiding links is not authorization.
  • No stack traces/secrets in responses.

Content/files

  • Sanitize Markdown/managed HTML.
  • Validate MIME and magic signatures where practical.
  • Sanitize output filenames.
  • Self-host/pin npm/WASM assets; avoid random runtime CDN code.
  • CSP begins Report-Only and is tested with CMP/ads/analytics before enforcement.
  • THIRD_PARTY_NOTICES.md tracks licenses.

Recommended headers: X-Content-Type-Options: nosniff, sensible Referrer-Policy, Permissions-Policy, frame restrictions and HSTS only after HTTPS is proven.

16 · Performance & Browser Support

Light calculators stay light; heavy tools pay their own cost

LCP ≤ 2.5s75th percentile target
INP ≤ 200ms75th percentile target
CLS ≤ 0.175th percentile target
LayerBudget / rule
Global public shellMinimal shared JS; no PDF/image/document libraries.
Calculator routeOnly Preact/tool engine/shared primitives. No network call for result.
Image routeCodec imported after file selection or process action; Worker queue.
PDF routepdf-lib/PDF.js route-only; thumbnails lazy; export sequential/bounded.
Ads/CMPConsent-aware and dimension-reserved; never block the core tool unnecessarily.
CMSPaginated queries, selected columns, private/no-store responses.

Browser policy

  • Support current stable Chrome/Edge/Firefox/Safari and current mobile Chrome/iOS Safari; test exact compatibility before each heavy-tool release.
  • Feature detection, not user-agent guessing.
  • OffscreenCanvas/createImageBitmap fallback paths.
  • No Internet Explorer support.
  • Large file limits are benchmarked per tool/device class; marketing copy never promises infinite capability.
17 · Testing & QA

Evidence before release

LayerToolRelease evidence
EngineVitestGolden cases, boundaries, invalids, reverse/round-trip, units and rounding.
Rate dataVitestEffective-date boundaries, source/review metadata, missing-future behavior.
UIPreact/manualIdle/invalid/processing/success/partial/error/cancel/reset.
E2EPlaywrightDesktop + mobile, deep routes, downloads, 404, auth/publish smoke tests.
AccessibilityManual + axe-core optionalLabels, keyboard, focus, drag alternatives, status announcements, contrast.
SEOView Source/HTTP/Rich Results TestTitle/H1/canonical/content/links/JSON-LD before hydration; correct status.
PerformanceDevTools/Lighthouse/field CWVBundle isolation, long tasks, memory cleanup and layout stability.
DocumentsPDF.js parser/manualSelectable text, extraction order, pagination, reopen output.

Golden fixture rule

Expected values must be independently calculated or sourced. Generating expected values with the same engine under test is not verification.

Browser/file fixture rule

  • Use real legally redistributable HEIC/AVIF/PDF samples plus generated synthetic edge files.
  • Keep fixtures small; document origin/license.
  • Test production build paths for WASM and PDF worker—not only dev server.
18 · Free Libraries & Install Timing

No Pro purchase; install packages only when their phase begins

PhasePackagesNotes
Foundationastro, @astrojs/node, @astrojs/preact, preact, @astrojs/sitemap, @supabase/supabase-js, @supabase/ssrCore only.
Quality@astrojs/check, typescript, eslint, eslint-plugin-astro, vitest, @playwright/test, axe-core optionalTypeScript package is tooling; authored source remains JS.
Money/documentsbig.js, pdfmakeInvoice/Estimate/Resume/Cover Letter.
Imagefflate, selected @jsquash packages, libheif-based decoderInstall only selected codecs; verify Vite/WASM and licenses.
PDFpdf-lib, pdfjs-dist, signature_pad, @pdf-lib/fontkit if neededPin PDF.js worker to same package version.
CMS bodymarked + sanitize-html or equivalent audited stackServer render + sanitize.
  • @squoosh/lib is not the 2026 choice; package says it is no longer maintained.
  • libheif-js-class decoder requires LGPL compliance review.
  • Self-host fonts/WASM and keep notices where practical.
  • Do not update every dependency independently in production; group, test and rollback via lockfile.
19 · cPanel / Node Deployment

Phase 0 proves the real hosting environment

Current August 2026 cPanel documentation lists EasyApache Node packages through Node 22, while upstream Node 22 and 24 are LTS and Node 20 is EOL. Use the newest hosting-supported LTS; do not make Node 24 mandatory before the host proves it.

  1. Create a minimal Astro app.
  2. Install Node adapter and deploy one static + one prerender=false route.
  3. Verify environment variables, HTTPS proxying, deep links, 404, logs and restart.
  4. Test standalone entry dist/server/entry.mjs.
  5. If Passenger requires it, use a minimal app.js wrapper after proof.
// app.js — only if the actual host requires this startup file
import('./dist/server/entry.mjs').catch((error) => {
  console.error('Astro startup failed', error);
  process.exit(1);
});

Release SOP

npm ci
npm run verify
npm run build

# Deploy according to proven host layout
# Restart from cPanel or Passenger restart mechanism
# Smoke-test static tools + SSR blog + backend auth + 404
  • Use staging subdomain/environment.
  • Keep previous known-good build and lockfile.
  • Never upload local node_modules.
  • Database migrations/backups precede destructive changes.
  • Verify logs after every restart.
20 · Full Execution Plan

Exact project order

0Hosting proof

Real cPanel Node/Passenger, static + SSR, env, HTTPS, logs, restart, 404.

Current first milestone.
1Foundation

Repo, Astro/Preact, tsconfig checkJs, lint/tests, design tokens, base layouts.

No batch tools.
2Platform shell

SEOHead, registries, ToolPage/PillarPage, form/result primitives, sitemap skeleton, scaffold scripts.

Architecture freeze.
3Reference tool

Time Card end-to-end including UI/UX, fixtures, content, analytics and production deploy.

Pattern approved.
4First 10

Remaining nine tools in locked marketing order; Work & Pay + Roofing pillars.

AdSense product set.
5CMS / guides / trust

Supabase auth/RLS, SSR content, contact/error reports, redirects, audits, dynamic sitemap.

Before launch application.
6Launch hardening

Security, accessibility, CWV, consent/ad slot, staging, rollback drill.

Go/no-go.
7Tools 11–12

Annual Income then image-platform spike + HEIC.

Codec/license checkpoint.
8Tools 13–20

Construction/home/pay/business expansion; document subsystem for Invoice/Estimate.

Growth set complete.
9Tools 21–24

Image expansion then date-aware IRS Mileage.

Worker/data maturity.
10PDF foundation + 25–28

pdf-lib/PDF.js base, then image→PDF, merge, split, organize.

Core PDF set.
11Tools 29–35

Resume, PDF→image, Fill/Sign, Cover Letter, Crop, Watermark, Page Numbers.

Authority set.
1235 → 100+

Only research-approved tools using the same contract.

No rewrite.
21 · New Tool SOP & AI Prompt

Adding any future tool

  1. Marketing approves intent, slug, pillar and priority.
  2. Technical spec locks inputs, outputs, formula/algorithm, assumptions, limits, sources and maintenance class.
  3. Run scaffold script.
  4. Implement pure engine + validation.
  5. Create independent fixtures + unit tests.
  6. Build UI from shared components and state machine.
  7. Add static Content.astro and tool route wrapper.
  8. Add registry entry, related tools and pillar relationship.
  9. Run unit/E2E/accessibility/SEO/performance/privacy QA.
  10. Stage, smoke-test, deploy, monitor and update plan.md.

Recommended AI task prompt

Read AGENTS.md, plan.md and FivoTools_Development_Master_Plan_2026.html.
Then inspect the current repository and the relevant tool blueprint.
Implement only: [exact task].
Preserve the existing architecture, routes, registries, UI components and privacy model.
Engine/tests first when logic changes.
Do not change unrelated files or add dependencies without a documented need.
Run relevant checks plus npm run build.
Report files changed, checks run and anything unverified.
22 · Complete 35-Tool Blueprints

Each tool has its own product, UI, algorithm, SEO, privacy and release contract

Filter by phase, pillar or implementation type. This catalog is the direct coding handoff for each tool.

01Time Card & Work Hours Calculator/tools/time-card-calculator/ · Work & PayLaunch 10Calculator
Purpose / User Job

Multiple shifts থেকে daily/weekly worked time, unpaid breaks, overnight shifts এবং decimal / hh:mm totals বের করা।

Route / Pillar / Phase

/tools/time-card-calculator/ · work-pay · Launch 10 · Formula-stable / periodic UX review

Inputs & Controls

Start time, end time, unpaid break; add/remove shift rows; 12/24-hour display; optional week grouping.

Outputs

Per-shift duration, daily worked time, weekly total, total unpaid break, HH:MM and decimal-hour views, copyable summary.

Algorithm / Formula

Parse time → integer minutes. If end < start and overnight is allowed, add 1440. worked = end - start - break. Store totals as integer minutes; format only at output.

UI / UX Specification

Desktop: compact weekly grid with day groups and add-shift action. Mobile: stacked day cards. Use an explicit Calculate button; after the first successful calculation, valid edits may recalculate without stealing focus. Result panel stays below/alongside the form and never replaces inputs.

Validation / Edge Cases

Break > shift invalid; missing pair invalid; 24h+ shift requires explicit support; avoid Date/timezone/DST for simple duration arithmetic.

Shared Primitives

time/parse-time, time/duration, time/format-duration, validation, ToolShell, ResultPanel

Free Implementation Stack

Plain JS engine + Preact UI; shared time primitives.

Privacy / Performance

No network call. Do not send entered times to analytics. Result updates should not cause layout shift.

Static SEO / Content Contract

Static content covers unpaid breaks, multiple shifts, overnight work, HH:MM vs decimal hours, examples and “time measurement only—not payroll law”.

Test Matrix

Overnight, zero break, multiple shifts same day, exact midnight, invalid negative duration, decimal-hours conversion.

Release Acceptance Criteria

All required reference fixtures pass; user can enter a full week plus multiple shifts; overnight/break errors are clear; copy/reset work; no timezone dependency.

02Pay Raise Calculator/tools/pay-raise-calculator/ · Work & PayLaunch 10Calculator
Purpose / User Job

Current pay, new pay, raise percentage or raise amount থেকে pay change এবং period equivalents বের করা।

Route / Pillar / Phase

/tools/pay-raise-calculator/ · work-pay · Launch 10 · Formula-stable / periodic UX review

Inputs & Controls

Current wage/salary, raise % or amount or target new pay, pay frequency; optional hours/week and weeks/year.

Outputs

New pay, increase/decrease amount, percentage change, old/new comparison and optional hourly/weekly/monthly/annual equivalents.

Algorithm / Formula

new = old × (1 + p/100); delta = new-old; percent = delta/old×100. Normalize period equivalents only after core change is calculated.

UI / UX Specification

Start with a three-mode segmented control: “I know the percentage”, “I know the raise amount”, “I know the new pay”. Show only relevant fields. Use a side-by-side old/new comparison and label pay cut states plainly.

Validation / Edge Cases

old=0 cannot calculate percent; negative values are pay cuts and must be labeled; do not imply net/take-home pay.

Shared Primitives

money/decimal, money/pay-period, percentage, validation, comparison result rows

Free Implementation Stack

Plain JS + shared money/pay-period helpers; use Big.js or one centralized round-to-cent policy for monetary output.

Privacy / Performance

No pay values in analytics or URLs. Keep calculations local and render only generic event codes.

Static SEO / Content Contract

Explain percentage vs dollar raise, reverse calculation, pay raise vs pay cut and gross-pay assumptions. Include “pay rise” naturally in content without duplicate UK clone pages.

Test Matrix

Percent mode, amount mode, target-pay reverse mode, hourly→annual, awkward decimals and rounding.

Release Acceptance Criteria

All three modes round-trip consistently; old=0 and pay-cut states are handled; period equivalents match shared pay-period tests.

03Deck Material Calculator/tools/deck-material-calculator/ · ConstructionLaunch 10Calculator
Purpose / User Job

Deck dimensions, board width/gap/length এবং waste থেকে board rows, linear length এবং purchase estimate তৈরি করা।

Route / Pillar / Phase

/tools/deck-material-calculator/ · roofing-construction · Launch 10 · Formula-stable / periodic UX review

Inputs & Controls

Deck length/width, board actual width, gap, board length, orientation, waste %, unit system.

Outputs

Deck area, board rows, required linear length, base board count, waste-adjusted purchase count and orientation comparison.

Algorithm / Formula

For a chosen orientation, rows ≈ ceil((crossDimension + gap)/(boardWidth + gap)); linealLength = rows × runLength; estimated boards = ceil(linealLength/boardLength × (1+waste)).

UI / UX Specification

Use a unit toggle, board presets with editable actual dimensions, orientation switch and simple diagram. Show base quantity and purchase quantity separately so waste/rounding is transparent.

Validation / Edge Cases

Nominal vs actual board width; off-cut reuse/staggered joints can change count; waste is configurable, never universal.

Shared Primitives

units/length, units/area, materials/waste, purchase-rounding, geometry diagram

Free Implementation Stack

Plain JS + units/materials primitives; optional SVG diagram.

Privacy / Performance

No network call. SVG is lightweight; unit conversion happens before the engine.

Static SEO / Content Contract

Explain actual vs nominal board dimensions, board gap, orientation, waste and why cuts can change purchase count.

Test Matrix

Both orientations, zero gap, metric/imperial, exact multiples, short boards, waste rounding.

Release Acceptance Criteria

Both orientations and metric/imperial fixtures pass; actual board width/gap formula is correct; purchase count visibly rounds only at the end.

04Roof Pitch Calculator/tools/roof-pitch-calculator/ · RoofingLaunch 10Calculator
Purpose / User Job

Rise/run, x:12 pitch, angle, percent grade এবং slope factor inter-convert করা।

Route / Pillar / Phase

/tools/roof-pitch-calculator/ · roofing-construction · Launch 10 · Formula-stable / periodic UX review

Inputs & Controls

Rise & run OR x:12 pitch OR angle; unit-independent ratio inputs.

Outputs

Pitch x:12, rise/run ratio, angle in degrees, percent grade, slope factor and a visual triangle.

Algorithm / Formula

ratio=rise/run; angle=atan(ratio)×180/π; grade=ratio×100; slopeFactor=sqrt(1+ratio²); x12=ratio×12.

UI / UX Specification

Use tabs for Rise/Run, x:12 and Angle input modes. Update the SVG preview only after valid input. Keep the numerical result table stable and copyable.

Validation / Edge Cases

run=0 invalid; extremely steep values; clarify roof pitch vs grade terminology.

Shared Primitives

geometry/roof-pitch, unit-independent ratio helpers, SVG diagram

Free Implementation Stack

Plain JS + geometry primitive + SVG visualization.

Privacy / Performance

No network call. Keep SVG purely presentational with accessible text result.

Static SEO / Content Contract

Explain x:12 notation, angle/grade/slope-factor conversion, common pitches and non-structural limitation.

Test Matrix

4:12, 6:12, 12:12, zero pitch, reverse conversions and round-trip tolerance.

Release Acceptance Criteria

Common pitch fixtures and reverse conversions are within documented tolerance; SVG and text result agree.

05Roofing Material Calculator/tools/roofing-material-calculator/ · RoofingLaunch 10Calculator
Purpose / User Job

Projected roof size + pitch + waste থেকে sloped roof area, roofing squares এবং bundle/material purchase estimate করা।

Route / Pillar / Phase

/tools/roofing-material-calculator/ · roofing-construction · Launch 10 · Formula-stable / periodic UX review

Inputs & Controls

Direct roof area OR footprint L/W; overhang per side; pitch; waste; bundles per square/product coverage preset.

Outputs

Projected area, sloped roof area, waste-adjusted area, roofing squares, configurable bundles/packs and assumptions used.

Algorithm / Formula

Projected area uses actual footprint including 2× relevant overhangs. slopedArea=projectedArea×slopeFactor. wasteArea=slopedArea×(1+waste). squares=wasteArea/100 ft². bundles=ceil(squares×bundlesPerSquare).

UI / UX Specification

First ask whether the user knows roof area or needs it derived from footprint. Put product coverage/bundles-per-square under clearly visible assumptions. Result breakdown follows area → waste → squares → bundles.

Validation / Edge Cases

3 bundles/square is common but not universal; complex hips/valleys/dormers need extra measurement/waste; equal-pitch assumption must be visible.

Shared Primitives

geometry/roof-pitch, units/area, materials/waste, materials/purchase-rounding

Free Implementation Stack

Plain JS + roof-pitch/area primitives.

Privacy / Performance

No network call. Product presets are local config; large diagrams are unnecessary.

Static SEO / Content Contract

Explain projected vs sloped area, roofing squares, configurable bundles/product coverage and extra waste for complex roofs.

Test Matrix

No overhang, two-sided overhang, multiple waste rates, configurable bundle coverage, direct-area mode.

Release Acceptance Criteria

Footprint/overhang math is correct on both sides; product coverage is configurable; result never assumes all products use three bundles/square.

06Gravel Calculator/tools/gravel-calculator/ · MaterialsLaunch 10Calculator
Purpose / User Job

Area এবং depth থেকে gravel volume, cubic yards/meters এবং optional weight estimate করা।

Route / Pillar / Phase

/tools/gravel-calculator/ · roofing-construction · Launch 10 · Formula-stable / periodic UX review

Inputs & Controls

Length, width/area, depth, waste %, material density preset/custom.

Outputs

Raw volume, waste-adjusted cubic yards/meters, optional tons by chosen density and optional material cost when price is supplied.

Algorithm / Formula

For feet: cuYd=(L×W×depthFt)/27. With waste: required=cuYd×(1+waste). tons=required×densityTonsPerYd³.

UI / UX Specification

Offer Rectangle and Direct Area modes initially; circular area can be a later supported mode. Density preset is labeled editable. Place volume before weight because weight is less certain.

Validation / Edge Cases

Density varies by material, grading and moisture; weight must be labeled estimate; never hardcode 1.4 tons/yd³ as universal.

Shared Primitives

units/length/volume/weight, materials/waste, density presets

Free Implementation Stack

Plain JS + area/volume/unit primitives.

Privacy / Performance

No network call. Density selection is local. Avoid sending project dimensions to analytics.

Static SEO / Content Contract

Explain volume vs weight, depth conversion, density variability, waste and common use cases.

Test Matrix

Inch depth conversion, metric conversion, custom density, zero depth, waste.

Release Acceptance Criteria

Volume conversions and custom density tests pass; result labels weight as estimate; invalid depth/density is blocked.

07Profit Margin & Markup Calculator/tools/profit-margin-markup-calculator/ · BusinessLaunch 10Calculator
Purpose / User Job

Cost, selling price, profit, margin এবং markup calculate/reverse-solve করা।

Route / Pillar / Phase

/tools/profit-margin-markup-calculator/ · business · Launch 10 · Formula-stable / periodic UX review

Inputs & Controls

Cost + selling price OR cost + target margin OR cost + target markup; currency display.

Outputs

Cost, selling price, profit/loss, margin %, markup %, reverse-calculated target price and a clear margin-vs-markup comparison.

Algorithm / Formula

profit=revenue-cost; margin=profit/revenue×100; markup=profit/cost×100; revenueFromMargin=cost/(1-margin); revenueFromMarkup=cost×(1+markup).

UI / UX Specification

Use mode tabs: Cost + Price, Cost + Margin, Cost + Markup. Keep margin and markup visually separated with a short definition beside each result.

Validation / Edge Cases

Revenue=0/cost=0 division guard; margin >=100% invalid for reverse-price formula; losses should display negative values clearly.

Shared Primitives

money/decimal, percentage, validation, comparison table

Free Implementation Stack

Plain JS + Big.js/central money math.

Privacy / Performance

No financial values in analytics. Decimal library is route-local/shared only among business tools.

Static SEO / Content Contract

Explain margin vs markup with worked examples and reverse pricing; avoid tax/accounting advice claims.

Test Matrix

Margin vs markup known examples, loss state, zero guards, decimal money.

Release Acceptance Criteria

Known margin/markup examples and reverse formulas pass; losses and denominator errors are handled.

08Roof Area / Square Footage Calculator/tools/roof-area-calculator/ · RoofingLaunch 10Calculator
Purpose / User Job

Horizontal roof projection/footprint এবং pitch থেকে sloped roof square footage/m² estimate করা।

Route / Pillar / Phase

/tools/roof-area-calculator/ · roofing-construction · Launch 10 · Formula-stable / periodic UX review

Inputs & Controls

Footprint dimensions or projected area, overhangs, pitch; optional multiple roof sections.

Outputs

Projected footprint area, slope-adjusted area, optional waste-adjusted area, square feet/m² and roofing squares.

Algorithm / Formula

projectedArea=(L+2×overhangL)×(W+2×overhangW); slopedArea=projectedArea×slopeFactor. Sum sections only if each section is explicitly modeled.

UI / UX Specification

Allow multiple roof sections with add/remove rows. Each row has dimensions/pitch and a subtotal; final result aggregates sections. Mobile rows become cards.

Validation / Edge Cases

Irregular roofs and mixed pitches require multiple sections; do not infer dormers/valleys.

Shared Primitives

geometry/roof-pitch, units/area, multi-section rows

Free Implementation Stack

Plain JS + geometry/roof primitives.

Privacy / Performance

No network call. Multi-section state remains local and is cleared only by explicit reset/navigation.

Static SEO / Content Contract

Explain footprint/projected area vs sloped area, overhangs, multi-section roofs and limits for complex geometry.

Test Matrix

Flat roof, 4:12, 12:12, metric/imperial, multi-section sum.

Release Acceptance Criteria

Flat/common/steep pitches and multi-section sums pass; complex-roof limitation is visible.

09Salary ↔ Hourly Calculator/tools/salary-hourly-calculator/ · Work & PayLaunch 10Calculator
Purpose / User Job

Hourly/daily/weekly/biweekly/monthly/annual gross pay equivalents compare করা।

Route / Pillar / Phase

/tools/salary-hourly-calculator/ · work-pay · Launch 10 · Formula-stable / periodic UX review

Inputs & Controls

Amount, pay period, hours/week, days/week if daily, weeks/year.

Outputs

Hourly, daily, weekly, biweekly, monthly and annual gross equivalents with visible work assumptions.

Algorithm / Formula

Normalize input to annual: hourly×hours×weeks; daily×days×weeks; weekly×weeks; biweekly×weeks/2; monthly×12; annual unchanged. Derive all other periods from annual.

UI / UX Specification

Use a “Known pay period” selector, amount and an Advanced assumptions disclosure for hours/week, days/week and weeks/year. Show all equivalents in one clear table.

Validation / Edge Cases

52 weeks is editable; unpaid weeks change equivalence; gross pay only; monthly ≠ weekly×4.

Shared Primitives

money/pay-period, money/decimal, formatting

Free Implementation Stack

Plain JS + money/pay-period helpers.

Privacy / Performance

No salary values in analytics. Result table is server-independent.

Static SEO / Content Contract

Explain 52-week/custom assumptions, gross vs net, biweekly vs monthly and job-offer comparison.

Test Matrix

40×52 baseline, 50 workweeks, monthly conversion, biweekly, daily.

Release Acceptance Criteria

All pay periods round-trip through annual normalization; 52/custom workweeks and gross-only assumptions are visible.

10Paint Calculator/tools/paint-calculator/ · Home ImprovementLaunch 10Calculator
Purpose / User Job

Walls/ceiling area, openings, coats এবং coverage থেকে paint quantity estimate করা।

Route / Pillar / Phase

/tools/paint-calculator/ · home-improvement · Launch 10 · Formula-stable / periodic UX review

Inputs & Controls

Room L/W/H or individual walls; doors/windows with editable dimensions; coats; coverage rate; ceiling toggle; waste optional.

Outputs

Paintable area, exact gallons/liters, coats/coverage breakdown and suggested purchase quantity without hiding assumptions.

Algorithm / Formula

wallArea=2(L+W)H - openingArea. Add ceiling L×W when selected. paintVolume=(paintableArea×coats)/coverage; show exact gallons/liters plus practical purchase suggestion.

UI / UX Specification

Provide Room mode and Individual Walls mode. Openings are addable rows with editable dimensions. Coverage/coats are visible assumptions, not hidden advanced values.

Validation / Edge Cases

Coverage varies by product/surface; primer separate; fixed 20/15 ft² opening assumptions should not be forced.

Shared Primitives

units/area/volume, materials/coverage, openings rows, purchase-rounding

Free Implementation Stack

Plain JS + area/unit primitives.

Privacy / Performance

No room dimensions in analytics. Opening rows remain local.

Static SEO / Content Contract

Explain wall/ceiling area, openings, coverage, coats, primer and product/surface variability.

Test Matrix

Doors/windows, ceiling on/off, custom coverage, one/two coats, metric.

Release Acceptance Criteria

Room and wall modes agree on equivalent geometry; custom openings/coverage/coats and metric units pass.

11Annual Income Calculator/tools/annual-income-calculator/ · Work & PayGrowthCalculator
Purpose / User Job

Hourly/daily/weekly/monthly income থেকে estimated annual gross income বের করা; unpaid time optional.

Route / Pillar / Phase

/tools/annual-income-calculator/ · work-pay · Growth · Formula-stable / periodic UX review

Inputs & Controls

Pay amount + period; hours/week; weeks/year/unpaid weeks; optional basic overtime inputs.

Outputs

Estimated annual gross income plus monthly/biweekly/weekly equivalents and optional regular/overtime breakdown.

Algorithm / Formula

Normalize regular gross pay to annual. If basic hourly overtime mode is enabled: regular hours×rate + OT hours×rate×multiplier for paid weeks.

UI / UX Specification

Use a known-period selector and an Advanced section for workweeks/unpaid weeks/basic overtime. Emphasize estimated annual gross, then period equivalents.

Validation / Edge Cases

Gross not net; overtime is optional estimate, not legal entitlement; unpaid weeks cannot exceed year.

Shared Primitives

money/pay-period, time/hours, money/decimal

Free Implementation Stack

Plain JS + pay-period + money primitives.

Privacy / Performance

No income values in analytics. Optional overtime logic remains local.

Static SEO / Content Contract

Explain gross annualization, unpaid weeks and optional overtime assumption; link back to Salary↔Hourly and Time Card.

Test Matrix

Hourly, weekly, monthly, unpaid weeks, no overtime, basic overtime.

Release Acceptance Criteria

Hourly/weekly/monthly fixtures and unpaid weeks pass; optional overtime is clearly separated from base annualization.

12HEIC → JPG Converter/tools/heic-to-jpg/ · ImageGrowthImage / codec
Purpose / User Job

HEIC/HEIF photos local browser processing-এ JPG-তে convert করা, no server upload.

Route / Pillar / Phase

/tools/heic-to-jpg/ · image-tools · Growth · Dependency/browser compatibility review

Inputs & Controls

One/multiple HEIC files, JPEG quality, optional background color/metadata policy.

Outputs

Per-file JPG download, original/output dimensions and size, quality used, processing status and batch download when applicable.

Algorithm / Formula

Attempt proven native decode path when supported; otherwise lazy-load a libheif-based decoder in a Worker. Decode → ImageData/bitmap → encode JPEG → Blob → download.

UI / UX Specification

Full-width drop zone plus keyboard file picker, privacy note, quality slider and file queue. Process only after the user confirms options. Each file card shows progress, cancel/error and download; include Clear All.

Validation / Edge Cases

EXIF orientation, huge photos, multi-image HEIF, alpha/background, metadata stripping; libheif-js class packages are LGPL-3.0 and require compliance review.

Shared Primitives

image/worker-client, image/file-validation, image/queue, image/download, object-url cleanup

Free Implementation Stack

Web Worker + Canvas/OffscreenCanvas + libheif-based decoder fallback. Package/license re-check at implementation.

Privacy / Performance

Files stay in browser memory. Validate bytes and decoded pixel count; bounded queue; Worker; close ImageBitmap, revoke URLs and release buffers. Codec loads only after file selection.

Static SEO / Content Contract

Explain HEIC compatibility, JPG quality/background, local processing and what metadata is removed/preserved. Privacy claim must match network behavior.

Test Matrix

Real iPhone HEIC samples, portrait orientation, large megapixels, multiple files, corrupt input, Safari/Chrome/Firefox.

Release Acceptance Criteria

Real legal-to-redistribute HEIC fixtures decode across target browsers; orientation/large/corrupt/batch cases pass; no network upload occurs.

13Concrete Calculator/tools/concrete-calculator/ · ConstructionGrowthCalculator
Purpose / User Job

Slab, footing, wall, cylinder/post-hole volumes এবং bag/premix quantity estimate করা।

Route / Pillar / Phase

/tools/concrete-calculator/ · roofing-construction · Growth · Formula-stable / periodic UX review

Inputs & Controls

Shape-specific dimensions, waste %, bag size/yield preset or custom yield.

Outputs

Raw and waste-adjusted volume in ft³/yd³/m³, plus bag count from selected/custom product yield.

Algorithm / Formula

Compute shape volume in ft³/m³, convert to yd³/m³. bags=ceil(requiredVolumeFt³ / yieldPerBagFt³). Example QUIKRETE yields: 60 lb≈0.45 ft³, 80 lb≈0.60 ft³; keep editable/product-specific.

UI / UX Specification

Use visual shape cards (slab, footing, wall, cylinder/post hole). Fields change by shape. Bag yield is a product preset/custom input and appears in the result assumptions.

Validation / Edge Cases

Do not use fixed “45/60 bags per yd³” as universal product truth; bag yield/product varies; separate cylinder formula.

Shared Primitives

geometry/volumes, units/volume, materials/waste, product-yield presets

Free Implementation Stack

Plain JS + geometry/volume primitives.

Privacy / Performance

No network call. Product-yield presets are small local data. Keep diagrams lightweight.

Static SEO / Content Contract

Explain supported shapes, cubic yard/meter conversion, waste and product-specific bag yield.

Test Matrix

Slab, footing, cylinder, metric, waste, 60/80 lb preset and custom yield.

Release Acceptance Criteria

Shape formulas, product-yield fixtures, metric/imperial and waste pass; no universal bag count constant is hidden.

14Topsoil Calculator/tools/topsoil-calculator/ · LandscapingGrowthCalculator
Purpose / User Job

Area + depth থেকে topsoil volume এবং optional weight estimate করা।

Route / Pillar / Phase

/tools/topsoil-calculator/ · home-improvement · Growth · Formula-stable / periodic UX review

Inputs & Controls

Length/width or area, depth, waste/compaction allowance, optional density.

Outputs

Raw and adjusted soil volume in yd³/m³/ft³ and optional weight estimate based on selected/custom density.

Algorithm / Formula

Volume=area×depth; convert to yd³/m³. Optional weight=volume×user-selected density.

UI / UX Specification

Use Rectangle, Circle and Known Area modes if all are implemented; otherwise publish only finished modes. Depth input remains prominent because it drives volume.

Validation / Edge Cases

Soil moisture/compaction change density; weight is estimate; depth units frequently mix inches/feet/cm.

Shared Primitives

units/area/volume/weight, materials/waste/density

Free Implementation Stack

Plain JS + units/volume primitives.

Privacy / Performance

No network call; dimensions/density remain local.

Static SEO / Content Contract

Explain area×depth, cubic yards, compaction/moisture/density and why weight is approximate.

Test Matrix

Depth conversion, metric, custom density, compaction/waste.

Release Acceptance Criteria

Depth/unit/density/waste cases pass; estimate labels are present.

15Flooring Calculator/tools/flooring-calculator/ · Home ImprovementGrowthCalculator
Purpose / User Job

One/multiple rooms থেকে flooring area, waste, box count এবং optional material cost বের করা।

Route / Pillar / Phase

/tools/flooring-calculator/ · home-improvement · Growth · Formula-stable / periodic UX review

Inputs & Controls

Room dimensions/areas, waste %, coverage per box, price per box or area.

Outputs

Net floor area, waste-adjusted purchase area, boxes/packages required and optional cost breakdown.

Algorithm / Formula

netArea=sum(roomAreas); purchaseArea=netArea×(1+waste); boxes=ceil(purchaseArea/coveragePerBox); cost=boxes×pricePerBox if provided.

UI / UX Specification

Use a multi-room table/card list, then product coverage per box and waste. Show net area, purchase area and boxes as separate stages.

Validation / Edge Cases

Layout/pattern affects waste; box coverage exact from product; stairs/irregular rooms separate.

Shared Primitives

units/area, materials/waste, purchase-rounding, multi-room rows

Free Implementation Stack

Plain JS + area/material primitives.

Privacy / Performance

No project dimensions/prices in analytics. Local state only.

Static SEO / Content Contract

Explain net area, waste, box coverage, layout/pattern effects and multi-room calculation.

Test Matrix

Multi-room, exact box boundary, waste, cost, metric.

Release Acceptance Criteria

Multi-room, exact box boundary, waste and cost cases pass; box count rounds up correctly.

16Carpet Calculator/tools/carpet-calculator/ · Home ImprovementGrowthCalculator
Purpose / User Job

Carpet roll width অনুযায়ী approximate strips/linear length/sq yards বের করা।

Route / Pillar / Phase

/tools/carpet-calculator/ · home-improvement · Growth · Formula-stable / periodic UX review

Inputs & Controls

Room dimensions, roll width (common 12/15 ft presets + custom), orientation, price optional.

Outputs

Strip count, linear carpet length, square yards/m², orientation comparison and optional cost estimate.

Algorithm / Formula

For each orientation: strips=ceil(crossDimension/rollWidth); linearLength=strips×runDimension; sqYd=linearLength×rollWidth/9. Show both orientations and estimated lower material use.

UI / UX Specification

Show two orientation estimates side by side and explain that the result is material estimation, not a professional seam layout. Roll-width presets remain editable.

Validation / Edge Cases

This is not professional seam/cut optimization; doorways, pattern repeat, stairs and room layout can change requirements.

Shared Primitives

units/length/area, orientation comparison, purchase-rounding

Free Implementation Stack

Plain JS + units.

Privacy / Performance

No room dimensions/prices in analytics. Keep orientation comparison cheap.

Static SEO / Content Contract

Explain roll width, strip/orientation estimate, square yards and professional seam-layout limitation.

Test Matrix

12/15-ft rolls, both orientations, metric, narrow/wide rooms, exact strip boundary.

Release Acceptance Criteria

Both orientations, roll widths, exact boundaries and metric conversions pass; seam limitation is visible.

17Overtime Pay Calculator/tools/overtime-pay-calculator/ · Work & PayGrowthCompliance-sensitive calculator
Purpose / User Job

Basic hourly regular + overtime gross-pay scenarios calculate করা; legal entitlement decide করা নয়।

Route / Pillar / Phase

/tools/overtime-pay-calculator/ · work-pay · Growth · Source-reviewed / event-driven

Inputs & Controls

Hourly/regular rate, total hours, threshold, multiplier; optional separate regular/OT hours mode.

Outputs

Regular hours/pay, overtime hours/pay, total gross pay, overtime premium and effective average hourly rate.

Algorithm / Formula

Basic case: regHours=min(total,threshold); otHours=max(0,total-threshold); pay=regHours×rate + otHours×rate×multiplier.

UI / UX Specification

Use Total Hours mode and Separate Regular/OT Hours mode. Offer 1.5× and 2× presets plus custom multiplier. Place legal/eligibility disclaimer near assumptions, not as a disruptive modal.

Validation / Edge Cases

Do not call the math “FLSA compliant.” Under FLSA the regular rate can include bonuses/other earnings and state rules may differ. Default 40h/1.5× is an example, configurable.

Shared Primitives

time/hours, money/decimal, sourced-content block

Free Implementation Stack

Plain JS + money/time helpers; source-backed content.

Privacy / Performance

No wage/hour values in analytics. Official explanatory content has review metadata.

Static SEO / Content Contract

Explain basic overtime math, configurable multiplier and that legal entitlement/regular-rate calculations can differ by law/state.

Test Matrix

40/44 hours, custom threshold/multiplier, no OT, decimal hours, disclaimer/source review.

Release Acceptance Criteria

Basic arithmetic fixtures pass; copy never says “legally owed”; source/review metadata is current.

18Job Costing Calculator/tools/job-costing-calculator/ · Business / ContractorGrowthCalculator
Purpose / User Job

Labor + materials + subcontractors + overhead + target margin/markup থেকে quote price estimate করা।

Route / Pillar / Phase

/tools/job-costing-calculator/ · business · Growth · Formula-stable / periodic UX review

Inputs & Controls

Itemized labor/material/subcontractor/misc, overhead flat or %, target margin OR markup.

Outputs

Itemized direct cost, overhead, total job cost, target profit, quote price and margin/markup comparison.

Algorithm / Formula

directCost=sum(items); totalCost=directCost+overhead. Margin pricing=totalCost/(1-margin); markup pricing=totalCost×(1+markup).

UI / UX Specification

Use itemized sections for labor, materials, subcontractors and other costs. Overhead and pricing target are separate panels. Result can be copied into the Estimate Generator later without silent data transfer.

Validation / Edge Cases

Margin and markup must remain distinct; overhead basis visible; taxes not automatically assumed.

Shared Primitives

money/decimal, percentage, itemized rows, IndexedDB draft adapter optional

Free Implementation Stack

Preact + Big.js + optional IndexedDB draft.

Privacy / Performance

No item values in analytics. Optional local drafts must include Clear Data and explain browser-local storage.

Static SEO / Content Contract

Explain direct cost, overhead, margin vs markup, quote price and what is excluded.

Test Matrix

Flat/% overhead, margin/markup modes, zero/negative guards, many line items.

Release Acceptance Criteria

Itemized totals, flat/% overhead, margin/markup and decimal money pass; estimate handoff is explicit and optional.

19Free Invoice Generator/tools/free-invoice-generator/ · B2B DocumentsGrowthDocument builder
Purpose / User Job

No-login invoice compose, local drafts and selectable-text/vector PDF export.

Route / Pillar / Phase

/tools/free-invoice-generator/ · business · Growth · Template/font/browser review

Inputs & Controls

Seller/client, invoice number/date/due date, line items, discount, tax rate, shipping/fees optional, currency, notes, logo.

Outputs

Printable/downloadable invoice PDF, subtotal/discount/tax/fees/total breakdown, local draft status and optional local JSON backup.

Algorithm / Formula

Use decimal-safe line math. Recommended transparent order: line subtotal → configured discount → taxable subtotal → user-entered tax → other fees → total. PDF layout generated as text/vectors, not screenshot.

UI / UX Specification

Desktop: editor left, live printable preview right. Mobile: Editor/Preview tabs. Autosave status is visible; include Duplicate, Clear Local Data, Print and Download PDF. Never require account creation.

Validation / Edge Cases

No automatic legal tax determination; long item names/pagination, logo aspect ratio, rounding, currencies. Never use html2canvas for final invoice PDF.

Shared Primitives

documents/draft-store, documents/money-table, documents/pagination, documents/vector-export, money/decimal

Free Implementation Stack

Preact + IndexedDB + Big.js + pdfmake (MIT) or a direct vector document layer; CSS print fallback.

Privacy / Performance

Invoice/client data stays in IndexedDB on the device. Explain that local browser data is not encrypted backup. Provide Clear Data and optional JSON export. PDF library loads only on builder route.

Static SEO / Content Contract

Explain invoice fields, totals/order of operations, local autosave/privacy and “free PDF/no account” truthfully. Do not claim tax compliance.

Test Matrix

Multi-page invoice, discounts/tax, long text, zero tax, logo, PDF text selection/extraction.

Release Acceptance Criteria

One- and multi-page invoices export selectable text; totals match engine; autosave/clear/import/export work; no client data leaves browser.

20Free Estimate / Quote Generator/tools/free-estimate-generator/ · B2B DocumentsGrowthDocument builder
Purpose / User Job

Invoice-related primitives reuse করে estimate/quote-specific document তৈরি করা।

Route / Pillar / Phase

/tools/free-estimate-generator/ · business · Growth · Template/font/browser review

Inputs & Controls

Seller/client, estimate number/date, valid-until, scope/line items, exclusions, terms, tax/discount optional.

Outputs

Printable/downloadable estimate PDF, validity/terms/scope summary, local draft and optional local conversion into an invoice draft.

Algorithm / Formula

Share money/table/PDF primitives with Invoice, but keep separate estimate semantics and template config. Optional local “convert to invoice” copies data into invoice draft.

UI / UX Specification

Reuse the document-builder shell, but use estimate-specific fields: valid-until, scope, exclusions, terms and optional acceptance line. “Convert to invoice” creates a new local invoice draft and leaves the estimate intact.

Validation / Edge Cases

Not just an Invoice page with heading changed; validity/scope/terms matter. Do not imply legal acceptance/binding status.

Shared Primitives

documents/draft-store, documents/money-table, documents/pagination, documents/vector-export, invoice-to-estimate mapping primitives

Free Implementation Stack

Preact + IndexedDB + Big.js + same vector document subsystem.

Privacy / Performance

Estimate/client data stays local; same disclosure and Clear Data controls as Invoice. No server sync by default.

Static SEO / Content Contract

Explain estimate vs invoice, validity, scope/terms, local privacy and convert-to-invoice behavior.

Test Matrix

Expiry date, terms, multi-page scope, convert-to-invoice data integrity.

Release Acceptance Criteria

Estimate-specific fields and multi-page PDF work; conversion creates a separate invoice draft without mutating the estimate.

21Bulk Image Resizer/tools/bulk-image-resizer/ · ImageExpansionImage / codec
Purpose / User Job

Multiple JPG/PNG/WebP images local browser-এ resize এবং batch-download করা।

Route / Pillar / Phase

/tools/bulk-image-resizer/ · image-tools · Expansion · Dependency/browser compatibility review

Inputs & Controls

Files, target width/height/max-side/percentage, aspect lock, output format/quality optional.

Outputs

Resized files with final dimensions and bytes, per-file success/failure, download buttons and ZIP download for multiple outputs.

Algorithm / Formula

Decode with createImageBitmap when appropriate; resize via OffscreenCanvas in Worker when supported, Canvas fallback; encode Blob; zip outputs when multiple.

UI / UX Specification

Drop/select files, then choose resize mode and output options before processing. Queue view supports remove, retry, cancel and Download All. Drag reorder must also have move up/down controls.

Validation / Edge Cases

Decoded pixel memory matters more than file size; process with bounded concurrency; close ImageBitmap, release canvas/object URLs; preserve transparency for PNG/WebP.

Shared Primitives

image/worker-client, image/queue, canvas-resize, image/download, fflate ZIP

Free Implementation Stack

Native browser APIs + Worker + fflate (MIT).

Privacy / Performance

Bounded concurrency; feature-detect OffscreenCanvas; Canvas fallback; decoded pixel cap; release ImageBitmap/canvas/object URLs; ZIP only after outputs are ready.

Static SEO / Content Contract

Explain resize modes, aspect ratio, output formats, batch privacy and device-safe limits.

Test Matrix

Large megapixels, mixed formats, portrait/landscape, aspect lock, mobile memory, batch zip.

Release Acceptance Criteria

Mixed image batches, aspect modes, fallback path, ZIP and cancel/retry pass without unbounded memory growth.

22Image Compressor/tools/image-compressor/ · ImageExpansionImage / codec
Purpose / User Job

JPEG/WebP/AVIF/PNG image size reduce করা without artificial daily quota.

Route / Pillar / Phase

/tools/image-compressor/ · image-tools · Expansion · Dependency/browser compatibility review

Inputs & Controls

Files, quality/format, optional max dimensions/target size mode.

Outputs

Compressed files, before/after bytes, percentage saved, dimensions, quality/format used and per-file status.

Algorithm / Formula

Decode once → optional resize → encode with format-appropriate codec. Use jSquash codecs in Worker where quality/control is beneficial; target-size mode iteratively adjusts quality with bounded attempts.

UI / UX Specification

Offer Quality mode and optional Target Size mode. Before/after preview is optional and must not decode all batch files simultaneously. Results emphasize savings and any file that became larger.

Validation / Edge Cases

Do not promise infinite “unlimited”; device-safe file/pixel/concurrency limits. Astro uses Vite and jSquash documents Vite/WASM caveats—run a production-build spike and pin working versions.

Shared Primitives

image/worker-client, image/queue, codec-loader, image/download, fflate ZIP

Free Implementation Stack

@jsquash/* + Worker + Canvas/OffscreenCanvas + fflate for batch.

Privacy / Performance

Worker codecs lazy-load. Use bounded iterations for target-size mode, bounded concurrency and memory cleanup. If output grows, report honestly.

Static SEO / Content Contract

Explain quality vs size, resize vs compression, format differences, target-size approximation and local processing.

Test Matrix

JPEG/WebP/PNG/AVIF, transparency, target size, 20–50 image batches under safe queue, production build WASM loading.

Release Acceptance Criteria

JPEG/WebP/PNG/AVIF supported paths, target-size approximation, transparency, batch queue and production WASM build pass.

23AVIF → JPG / PNG Converter/tools/avif-to-jpg/ (+ /tools/avif-to-png/ only if content is distinct) · ImageExpansionImage / codec
Purpose / User Job

AVIF local decode করে JPEG বা PNG output দেওয়া; one shared engine.

Route / Pillar / Phase

/tools/avif-to-jpg/ (+ /tools/avif-to-png/ only if content is distinct) · image-tools · Expansion · Dependency/browser compatibility review

Inputs & Controls

AVIF files, output format, JPEG quality, JPEG background color.

Outputs

Converted JPG or PNG, dimensions, file size, alpha/background behavior and per-file status.

Algorithm / Formula

Use proven native decode path when available; fallback to @jsquash/avif decoder. JPEG encode removes alpha, so composite onto selected background; PNG preserves alpha.

UI / UX Specification

Output-format choice is explicit. Choosing JPG reveals quality/background controls; choosing PNG hides them and explains alpha preservation. Use the same queue pattern as other image tools.

Validation / Edge Cases

Native AVIF support does not eliminate need for tested fallback; avoid thin duplicate SEO pages; very large images need memory cap.

Shared Primitives

image/worker-client, codec-loader, alpha/background compositor, image/download

Free Implementation Stack

Native decode + @jsquash/avif fallback + Canvas/Worker.

Privacy / Performance

Native decode first only when tested; lazy fallback. Files stay local; close bitmaps/revoke URLs; do not load AVIF codec site-wide.

Static SEO / Content Contract

Explain AVIF, JPG vs PNG, transparency, quality/file-size tradeoffs and local conversion.

Test Matrix

Alpha AVIF, JPG background, PNG transparency, native/fallback browsers, corrupt file.

Release Acceptance Criteria

Native/fallback decode, alpha/JPG background, PNG transparency and batch/corrupt cases pass.

24IRS Mileage Calculator/tools/irs-mileage-calculator/ · US BusinessExpansionMaintained rate data
Purpose / User Job

Drive date + miles + purpose থেকে applicable IRS standard mileage rate ব্যবহার করে amount estimate করা; eligibility decide করা নয়।

Route / Pillar / Phase

/tools/irs-mileage-calculator/ · business · Expansion · Source-reviewed / event-driven

Inputs & Controls

Date/period, miles, purpose (business/medical/charity; moving only where eligible), optional multiple trips.

Outputs

Applicable official mileage rate, effective period, miles, estimated amount and source/review metadata.

Algorithm / Formula

Versioned dataset with effectiveFrom/effectiveTo. Research-time 2026 example: Jan 1–Jun 30 business 72.5¢, medical/moving 20.5¢, charity 14¢; Jul 1–Dec 31 business 76¢, medical/moving 23.5¢, charity 14¢. amount=miles×rate.

UI / UX Specification

Primary inputs are drive date, miles and purpose. Result includes a prominent official-rate/effective-date source panel. If the selected date is outside the dataset, block calculation instead of reusing the last rate.

Validation / Edge Cases

2026 changed mid-year; moving eligibility is restricted; standard rate availability/deductibility depends on taxpayer facts. Always surface source/effective date.

Shared Primitives

data/rates/irs-mileage, date-range lookup, money/decimal, source metadata

Free Implementation Stack

Plain JS + local versioned data + official-source metadata.

Privacy / Performance

Only generic tool events; miles/date/purpose are not analytics payload. Dataset is local and versioned.

Static SEO / Content Contract

Display rate/effective period/source in static/SSR content and result; explain standard rate is optional and eligibility depends on taxpayer facts.

Test Matrix

Jun 30 vs Jul 1 boundary, each purpose, multiple trips, future missing-rate behavior.

Release Acceptance Criteria

Jun 30/Jul 1 2026 boundaries and each purpose pass; unsupported future date blocks with source guidance.

25JPG / PNG → PDF Converter/tools/jpg-to-pdf/ · PDFExpansionPDF / file
Purpose / User Job

Multiple local JPG/PNG images arrange করে one PDF create করা।

Route / Pillar / Phase

/tools/jpg-to-pdf/ · pdf-tools · Expansion · Dependency/browser compatibility review

Inputs & Controls

Images, order, page size/orientation, margins, fit/fill/original-size mode.

Outputs

One PDF containing images in chosen order with configured page size/orientation/margins, page count and output size.

Algorithm / Formula

Create PDFDocument; embed each JPG/PNG; compute aspect-preserving placement; add page and draw image; save Blob.

UI / UX Specification

Thumbnail strip/grid supports reorder with drag and move buttons. Page size, orientation, margin and fit mode are in a compact options panel. Show a page preview only for selected thumbnails to conserve memory.

Validation / Edge Cases

Huge source images can bloat memory/PDF; PNG alpha; mixed orientation; no server upload.

Shared Primitives

pdf/load-save, image validation, thumbnail/order model, pdf page layout

Free Implementation Stack

pdf-lib (MIT) + optional Canvas pre-scale.

Privacy / Performance

Images/PDF stay local. Pre-scale huge images where needed, release buffers, and load pdf-lib only on route.

Static SEO / Content Contract

Explain page size/orientation/margins/fit modes, local processing and differences from merge PDF.

Test Matrix

Mixed JPG/PNG, A4/Letter, margins, reorder, huge image downscale, multi-page.

Release Acceptance Criteria

Mixed image formats/order/page sizes/margins export correctly; text not applicable; file remains local; huge-image guard works.

26Merge PDF/tools/merge-pdf/ · PDFExpansionPDF / file
Purpose / User Job

Multiple PDFs reorder করে one merged PDF locally create করা।

Route / Pillar / Phase

/tools/merge-pdf/ · pdf-tools · Expansion · Dependency/browser compatibility review

Inputs & Controls

PDF files and file order; optional page selection later.

Outputs

Merged PDF, final file order, total page count, output size and unsupported/encrypted-file reporting.

Algorithm / Formula

pdf-lib loads source docs, copyPages into destination sequentially, save. Treat as in-memory processing; do not claim true streaming/chunked merge unless an engine actually supports it.

UI / UX Specification

File cards show filename, page count and order. Support drag plus move buttons. Do not render every page; optional first-page thumbnails are lazy. One clear Merge button starts processing.

Validation / Edge Cases

Encrypted/password-protected PDFs may be unsupported; very large documents need explicit memory/page/file limits.

Shared Primitives

pdf/load-save, pdf/page-plan, file order controls

Free Implementation Stack

pdf-lib.

Privacy / Performance

PDFs stay local. Bound file/page counts based on measured memory. pdf-lib is in-memory; do not claim streaming.

Static SEO / Content Contract

Explain merge order, encrypted/unsupported files, local processing and practical device limits.

Test Matrix

2/10 PDFs, mixed page sizes, reordered files, unsupported encrypted file, large-case guard.

Release Acceptance Criteria

Mixed page sizes and file order merge correctly; encrypted/oversized files show safe errors; memory limit is enforced.

27Split / Extract PDF Pages/tools/split-pdf/ · PDFExpansionPDF / file
Purpose / User Job

Page ranges extract করা বা individual page PDFs তৈরি করা।

Route / Pillar / Phase

/tools/split-pdf/ · pdf-tools · Expansion · Dependency/browser compatibility review

Inputs & Controls

PDF, page range syntax, mode: one combined extraction vs separate files.

Outputs

One extracted PDF or multiple per-page/range PDFs, selection summary and ZIP when several files are produced.

Algorithm / Formula

Parse ranges (e.g. 1-3,5,8-10), validate, copyPages into output docs, zip separate outputs.

UI / UX Specification

Provide a page-range text field with examples plus an optional thumbnail selector. Clearly switch between “one combined PDF” and “separate PDF files”.

Validation / Edge Cases

Out-of-range, duplicates, reversed ranges, large page counts, encrypted files.

Shared Primitives

pdf/page-range-parser, pdf/copy-pages, fflate ZIP

Free Implementation Stack

pdf-lib + fflate.

Privacy / Performance

PDF stays local. Produce outputs sequentially; ZIP after generation; release byte arrays where possible.

Static SEO / Content Contract

Explain extract vs split, page-range syntax, combined vs separate outputs and local processing.

Test Matrix

Complex range parser, one page, all pages, duplicate policy, zip filenames.

Release Acceptance Criteria

Range parser, combined/separate modes, filenames and ZIP pass; invalid ranges are actionable.

28Delete / Organize / Reorder PDF Pages/tools/organize-pdf/ · PDFExpansionPDF / file
Purpose / User Job

Thumbnail grid-এ PDF pages rotate/delete/reorder এবং clean new PDF save করা।

Route / Pillar / Phase

/tools/organize-pdf/ · pdf-tools · Expansion · Dependency/browser compatibility review

Inputs & Controls

PDF; final ordered page model with delete/rotation state.

Outputs

Reorganized PDF, final page count/order/rotation and a summary of deleted pages.

Algorithm / Formula

PDF.js renders low-res thumbnails lazily. Keep immutable source page IDs. On export, create a new PDF and copy pages in final order; apply rotation. Avoid mutation-order bugs from repeated removePage calls.

UI / UX Specification

Use a virtual/lazy thumbnail grid with rotate, delete and selection controls. Drag reorder must have accessible move-before/move-after actions. Keep deleted pages recoverable until export or offer Undo.

Validation / Edge Cases

Render thumbnails only when visible/near viewport; same PDF.js library and worker version; huge page counts.

Shared Primitives

pdfjs preview, pdf/page-plan, virtual thumbnails, pdf/copy-pages, rotation helpers

Free Implementation Stack

pdfjs-dist + pdf-lib.

Privacy / Performance

PDF stays local. Render low-resolution thumbnails near viewport; use immutable page model; clear canvases and object URLs.

Static SEO / Content Contract

Explain reorder/delete/rotate workflow, local processing and undo-before-export behavior.

Test Matrix

Reorder+delete combined, rotations, 100+ pages lazy render, page-size diversity.

Release Acceptance Criteria

Reorder+delete+rotate export matches the visible page plan; lazy thumbnails work at large page count; Undo works.

29Free ATS Resume Builder + PDF/tools/free-resume-builder/ · CareerAuthorityDocument builder
Purpose / User Job

Structured resume builder with local drafts and selectable-text, ATS-friendly PDF layout without paywall.

Route / Pillar / Phase

/tools/free-resume-builder/ · career-documents · Authority · Template/font/browser review

Inputs & Controls

Contact, summary, experience, education, skills, optional sections, reorder, template.

Outputs

Selectable-text resume PDF, local autosaved draft, section order, chosen template and optional JSON import/export for backup.

Algorithm / Formula

Structured data model → one-column ATS-safe default layout → vector/text PDF. In QA, parse generated PDF text and verify logical order.

UI / UX Specification

Desktop split editor/preview; mobile tabs. Sections can be reordered with buttons and drag. Default template is single-column ATS-safe. Show autosave, Clear Local Data, Import Draft and Download PDF.

Validation / Edge Cases

Do not promise every ATS will parse it perfectly; avoid screenshot PDFs, decorative tables/text boxes in ATS template, over-designed templates.

Shared Primitives

documents/draft-store, documents/section-model, documents/pagination, documents/vector-export, font registry

Free Implementation Stack

Preact + IndexedDB + pdfmake/direct vector document subsystem; permissively licensed embedded font.

Privacy / Performance

Resume data stays in IndexedDB. Provide Clear Data/export. No profile analytics. PDF/font bundle route-only.

Static SEO / Content Contract

Explain selectable text, ATS-safe design principles, local drafts and that no builder can guarantee every ATS outcome.

Test Matrix

2-page resume, long bullets, section reorder, text extraction order, Unicode name, print/PDF.

Release Acceptance Criteria

Two-page resume, Unicode supported font, section reorder, local drafts and PDF text extraction order pass.

30PDF → JPG / PNG Converter/tools/pdf-to-jpg/ · PDF / ImageAuthorityPDF / file
Purpose / User Job

Selected/all PDF pages render করে JPG/PNG download করা।

Route / Pillar / Phase

/tools/pdf-to-jpg/ · pdf-tools · Authority · Dependency/browser compatibility review

Inputs & Controls

PDF, page selection, output format, quality, render DPI/scale.

Outputs

JPG/PNG images for selected pages, output resolution/scale, filenames and ZIP for multi-page conversion.

Algorithm / Formula

PDF points use 72/in; targetDPI scale≈DPI/72. Render page sequentially or bounded concurrency with PDF.js to Canvas/OffscreenCanvas; encode image; zip multiple.

UI / UX Specification

Show page thumbnails lazily, page-range selection and output resolution/format. Estimate resulting pixel dimensions before processing and warn/block unsafe settings.

Validation / Edge Cases

300 DPI on large pages can use huge RAM; cap rendered pixel count; dispose canvases and page references progressively.

Shared Primitives

pdfjs render worker, page-range parser, canvas encode, fflate ZIP

Free Implementation Stack

pdfjs-dist + Canvas + fflate.

Privacy / Performance

PDF stays local. Render sequentially/bounded; cap total output pixels; release canvases immediately after encoding.

Static SEO / Content Contract

Explain PDF page rendering, DPI/scale, JPG vs PNG, memory implications and local processing.

Test Matrix

72/150/300 DPI, portrait/landscape, 50+ pages, alpha/white background, memory guard.

Release Acceptance Criteria

Selected pages and output scales match requested settings; pixel guard prevents unsafe work; ZIP and cleanup pass.

31Fill & Sign PDF/tools/fill-sign-pdf/ · PDFAuthorityPDF / file
Purpose / User Job

Existing AcroForm fields fill করা অথবা normal PDF page-এ text/check/date/electronic signature overlay বসানো।

Route / Pillar / Phase

/tools/fill-sign-pdf/ · pdf-tools · Authority · Dependency/browser compatibility review

Inputs & Controls

PDF, form values; overlay text/check/date; drawn/typed signature; page and position.

Outputs

Filled/signed PDF, form-field/overlay summary and clear statement that the signature is an electronic visual signature, not certificate signing.

Algorithm / Formula

Use pdf-lib form API for real AcroForms. For overlays, map preview coordinates back to PDF coordinate system and draw text/image. Signature Pad output can be PNG/SVG-derived image.

UI / UX Specification

Use PDF preview with a toolbar for form fields, text, checkmark, date and signature. All placed items are selectable/movable before export. Distinguish existing form fields from visual overlays.

Validation / Edge Cases

This is electronic signature placement, not cryptographic/certificate-based digital signing; coordinate mapping must handle zoom and rotation.

Shared Primitives

pdfjs preview/coordinates, pdf-lib forms/overlays, signature_pad, font registry

Free Implementation Stack

pdf-lib + pdfjs-dist preview + signature_pad (MIT).

Privacy / Performance

PDF/signature stays local. Signature strokes are never analytics data. Preview rendering and overlay export are bounded and route-only.

Static SEO / Content Contract

Explain AcroForm filling vs visual overlays and electronic signature vs certificate-based digital signing.

Test Matrix

AcroForm sample, flat PDF overlay, rotated page, high-DPI preview, signature placement/save/reopen.

Release Acceptance Criteria

AcroForm and flat-overlay fixtures save/reopen correctly; rotated/zoomed coordinate mapping passes; digital-signing disclaimer is visible.

32Free Cover Letter Builder + PDF/tools/cover-letter-builder/ · CareerAuthorityDocument builder
Purpose / User Job

Structured cover letter compose, local draft এবং selectable-text professional PDF export.

Route / Pillar / Phase

/tools/cover-letter-builder/ · career-documents · Authority · Template/font/browser review

Inputs & Controls

Sender/recipient, date, salutation, paragraphs, closing, template.

Outputs

Selectable-text cover-letter PDF, local autosaved draft, template choice and optional JSON import/export.

Algorithm / Formula

Structured data → vector text layout with line wrapping and pagination; reuse document primitives, not resume-specific semantics.

UI / UX Specification

Use a focused letter editor with sender, recipient and body sections, live page preview, local autosave and matching professional templates. No AI-writing dependency.

Validation / Edge Cases

Long body pagination, Unicode names, no AI dependency/claim, no fake ATS score.

Shared Primitives

documents/draft-store, documents/pagination, documents/vector-export, font registry

Free Implementation Stack

Preact + IndexedDB + pdfmake/direct vector document subsystem.

Privacy / Performance

Letter data stays in IndexedDB with Clear Data/export. No content analytics. Document/font bundle route-only.

Static SEO / Content Contract

Explain cover-letter structure, matching templates, local drafts and no AI-writing dependency.

Test Matrix

1/2 page letters, long addresses, Unicode, text extraction.

Release Acceptance Criteria

Long letter pagination, Unicode, local drafts and PDF text extraction pass.

33Crop PDF/tools/crop-pdf/ · PDFAuthorityPDF / file
Purpose / User Job

PDF page visible crop area/margins adjust করা without rasterizing the document.

Route / Pillar / Phase

/tools/crop-pdf/ · pdf-tools · Authority · Dependency/browser compatibility review

Inputs & Controls

PDF, visual crop rectangle/margins, page selection.

Outputs

Cropped PDF, applied CropBox values/page range and a persistent warning that cropping is not redaction.

Algorithm / Formula

Map preview crop to PDF coordinates and set CropBox. Keep MediaBox unchanged by default; changing MediaBox is a separate advanced operation, not necessary for ordinary visual cropping.

UI / UX Specification

Provide visual crop handles and equivalent numeric margin fields so dragging is not required. Show a strong non-redaction notice before export.

Validation / Edge Cases

Crop is NOT redaction; content outside CropBox may remain in the file. Rotated pages and mixed sizes require coordinate handling.

Shared Primitives

pdfjs preview/coordinates, pdf CropBox helpers

Free Implementation Stack

pdfjs-dist preview + pdf-lib.

Privacy / Performance

PDF stays local. Preview is low resolution; export changes boxes without rasterizing. Warning clarifies content may remain outside CropBox.

Static SEO / Content Contract

Explain CropBox behavior and prominently state crop is not redaction/removal of hidden content.

Test Matrix

Single/all pages, rotated page, mixed sizes, reopen PDF, verify hidden content still exists warning.

Release Acceptance Criteria

Numeric and drag crop produce same CropBox; rotated/mixed page sizes pass; non-redaction warning cannot be omitted.

34Add Watermark to PDF/tools/watermark-pdf/ · PDFAuthorityPDF / file
Purpose / User Job

Text/image watermark selected PDF pages-এ add করা while preserving original vector content.

Route / Pillar / Phase

/tools/watermark-pdf/ · pdf-tools · Authority · Dependency/browser compatibility review

Inputs & Controls

PDF, text/image, opacity, angle, scale/font size, position, page range.

Outputs

Watermarked PDF, selected pages, opacity/angle/placement summary and output size.

Algorithm / Formula

For each selected page, calculate transformed position and draw text/image with opacity/rotation. Embed a permissive font when Unicode text is supported.

UI / UX Specification

Live preview on a selected representative page, controls for text/image, opacity, angle, size, position and page range. Keep text and image watermark modes separate.

Validation / Edge Cases

Unicode font size, image alpha, rotation, page sizes, watermark should not rasterize full page.

Shared Primitives

pdfjs preview, pdf overlay positioning, font registry, page-range parser

Free Implementation Stack

pdf-lib + PDF.js preview optional.

Privacy / Performance

PDF and watermark data stay local. Font/image assets are route-only and embedded as needed.

Static SEO / Content Contract

Explain text/image watermark, page ranges, opacity, rotation and vector preservation.

Test Matrix

Text/image, opacity, 45°, selected pages, Unicode, mixed sizes.

Release Acceptance Criteria

Text/image watermarks, opacity/angle/position/page range/Unicode pass without rasterizing source pages.

35Add Page Numbers to PDF/tools/add-page-numbers-pdf/ · PDFAuthorityPDF / file
Purpose / User Job

Header/footer positions-এ custom page-number format add করা।

Route / Pillar / Phase

/tools/add-page-numbers-pdf/ · pdf-tools · Authority · Dependency/browser compatibility review

Inputs & Controls

PDF, position, format e.g. Page {n} of {total}, start number, margins, page range.

Outputs

Numbered PDF, selected page range, numbering format/start value/position and output size.

Algorithm / Formula

Get page count; calculate number text and position per page size/rotation; drawText on selected pages.

UI / UX Specification

Use a 3×3 position selector plus precise margins, format tokens and start-page/start-number options. Preview first/representative/last page before export.

Validation / Edge Cases

Mixed page sizes/rotations, clipping, custom start number, skip cover pages.

Shared Primitives

pdf overlay positioning, font registry, page-range parser, format-token parser

Free Implementation Stack

pdf-lib + preview optional.

Privacy / Performance

PDF stays local. Page numbering should not rasterize or render every page for preview.

Static SEO / Content Contract

Explain header/footer positions, Page X of Y tokens, start numbers, cover-page skipping and vector preservation.

Test Matrix

Page 1/10, start at 0/5, selected range, rotated landscape, mixed sizes.

Release Acceptance Criteria

Page X of Y, custom start/skip, position/margins, rotated/mixed pages pass without clipping.

23 · Maintenance, Updates & Recovery

Keep formulas stable, dependencies controlled and incidents isolated

CadenceDevelopment review
Per releaseTests/build, routes/registry, static source, download output, security/privacy, staging smoke.
MonthlyDependency/security advisories, production errors, browser compatibility of representative heavy tools.
QuarterlyAstro/Supabase/Node support, codec/PDF compatibility, WCAG/UX review, bundle and CWV regression.
Event-drivenIRS/rule changes, browser codec regression, library vulnerability, cPanel runtime change, AdSense/CMP policy change.

Recovery matrix

IncidentFirst isolateRecovery
Wrong resultEngine/fixtureAdd failing fixture, fix engine, regression test, update source note if facts changed.
One tool brokenFeature/route bundleRollback tool-specific change; static shell remains available.
CMS outageSSR/SupabasePublic tools continue; restore dynamic layer separately.
Image/PDF crashPixels/pages/concurrencyReduce in-flight memory, sequentialize, add cleanup/test.
WASM build failureVite/package versionRollback lockfile; apply documented optimizeDeps/worker workaround after staging proof.
PDF worker mismatchpdfjs-dist + workerBundle worker from same installed version.
Rate changeVersioned datasetAppend effective record, add boundary tests, never overwrite history.
Deployment failureNode/Passenger/startupRestore previous build/lockfile, inspect logs, reproduce in staging.
Upgrade policy: Major framework/database/PDF/codec upgrades are separate tasks with representative fixture tests. Never combine a major dependency upgrade with a new tool launch.
24 · Definition of Done

“Works on my machine” is not complete

Correctness

  • Independent golden fixtures.
  • Unit tests green.
  • Assumptions/rounding/units visible.
  • Unsupported states honest.

UI / Accessibility

  • 320px mobile and desktop.
  • Keyboard, focus, labels, drag alternative.
  • Idle/error/progress/success/cancel states.
  • No clipped buttons or horizontal overflow.

SEO / Content

  • View Source has title/H1/canonical/content.
  • Breadcrumb/pillar/related links correct.
  • Sources/review metadata when needed.
  • Correct status and sitemap inclusion.

Performance / Privacy

  • Heavy bundles isolated.
  • No long main-thread work or resource leak.
  • Files/inputs stay local as claimed.
  • No sensitive analytics data.

Operations

  • npm run verify and production build pass.
  • Staging and direct URL smoke test.
  • Rollback artifact/commit exists.
  • plan.md updated.

AI report

  • Files changed listed.
  • Checks run listed.
  • Unverified items disclosed.
  • No unrelated changes.
Final rule: A correct formula with poor UX is not done. A beautiful UI with unverified math is not done. A fast tool that leaks data or hides SEO content behind client fetch is not done.
25 · Official / Primary References

Research basis reviewed 26 August 2026

Before implementing a sensitive dependency or current official rate, re-check the current source and pin the actual version used.

  1. Astro v6 — On-demand rendering
    https://v6.docs.astro.build/en/guides/on-demand-rendering/
    Static pages by default; route-level prerender=false; start static-first.
  2. Astro — Client directives
    https://docs.astro.build/de/reference/directives-reference/
    client:* works on directly imported framework components; not dynamic tags.
  3. Astro — Routing
    https://docs.astro.build/en/guides/routing/
    File-based routes and explicit page files.
  4. Astro — Node adapter
    https://docs.astro.build/en/guides/integrations-guide/node/
    Standalone Node output for on-demand routes.
  5. Astro — TypeScript config for JS projects
    https://docs.astro.build/en/guides/typescript/
    Keep tsconfig.json even when authored code is JavaScript.
  6. Astro — CLI check
    https://docs.astro.build/en/reference/cli-reference/
    astro check diagnostics for CI/local verification.
  7. Supabase — SSR Auth
    https://supabase.com/docs/guides/auth/server-side
    Cookie sessions and @supabase/ssr; package currently beta/unstable API warning.
  8. Supabase — Choosing server package
    https://supabase.com/docs/guides/auth/choosing-a-server-package
    Use @supabase/ssr when identity is in cookies.
  9. cPanel — Install Node app
    https://docs.cpanel.net/knowledge-base/web-services/how-to-install-a-node.js-application/
    Updated 20 Aug 2026; app.js/Passenger guidance and Node packages through 22.
  10. cPanel — Passenger applications
    https://docs.cpanel.net/knowledge-base/web-services/using-passenger-applications/
    Passenger deployment behavior.
  11. Google Search — JavaScript SEO basics
    https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics
    Pre-rendered/SSR HTML remains a strong crawl/performance strategy.
  12. Google Search — Structured data guidelines
    https://developers.google.com/search/docs/appearance/structured-data/sd-policies
    Visible, accurate, non-misleading structured data; no fake reviews.
  13. Google Search — Breadcrumbs
    https://developers.google.com/search/docs/appearance/structured-data/breadcrumb
    Breadcrumb hierarchy and matching markup.
  14. Google Search — SoftwareApplication
    https://developers.google.com/search/docs/appearance/structured-data/software-app
    Google rich-result path requires real rating/review data; do not fabricate.
  15. web.dev — Core Web Vitals
    https://web.dev/articles/vitals
    LCP ≤2.5s, INP ≤200ms, CLS ≤0.1 at the 75th percentile.
  16. W3C — WCAG 2.2
    https://www.w3.org/TR/WCAG22/
    Accessibility target; includes focus, dragging alternatives and target-size criteria.
  17. W3C — Target Size Minimum
    https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html
    24×24 CSS px AA minimum or sufficient spacing; FivoTools internally targets 44px for primary controls.
  18. MDN — OffscreenCanvas
    https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas
    Worker-capable canvas; feature-detect and provide fallback.
  19. MDN — ImageBitmap.close
    https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap/close
    Explicitly release bitmap resources.
  20. MDN — IndexedDB
    https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API
    Async local structured storage for drafts.
  21. jSquash
    https://github.com/jamsinclair/jSquash
    Browser/Worker WASM codecs; Apache-2.0; documented Vite/WASM issues.
  22. @squoosh/lib
    https://www.npmjs.com/package/@squoosh/lib
    Package states the project is no longer maintained; do not choose as 2026 primary.
  23. libheif-js
    https://github.com/catdad-experiments/libheif-js
    Browser/Node libheif build; current package license is LGPL-3.0.
  24. pdf-lib
    https://github.com/Hopding/pdf-lib
    Browser-capable create/modify/forms/page-copy/drawing; MIT; no arbitrary page-text editing.
  25. Mozilla PDF.js
    https://github.com/mozilla/pdf.js/
    Mozilla-supported PDF parsing/rendering; use pdfjs-dist and matching worker.
  26. pdfmake
    https://github.com/bpampuch/pdfmake
    MIT pure-JS vector/text document generation with tables and pagination.
  27. fflate
    https://github.com/101arrowz/fflate
    MIT browser/Node ZIP/compression; import only required functions.
  28. Signature Pad
    https://github.com/szimek/signature_pad
    MIT canvas signature drawing.
  29. big.js
    https://github.com/MikeMcl/big.js
    MIT decimal arithmetic for money/document totals.
  30. IRS — Standard mileage rates
    https://www.irs.gov/tax-professionals/standard-mileage-rates
    2026 mid-year rate change; date-aware dataset required.
  31. U.S. DOL — Overtime pay
    https://www.dol.gov/general/topic/wages/overtimepay
    Basic federal overtime baseline; legal eligibility/regular-rate rules can be more complex.
  32. QUIKRETE — Concrete Mix data sheet
    https://www.quikrete.com/pdfs/data_sheet-concrete%20mix%201101.pdf
    Example product yields; keep yield product-specific/editable.
License note: Package/project license summaries are architecture guidance, not legal advice. Verify exact shipped WASM/font/code license obligations before production redistribution.