Live URL: https://adscalculator.xyz/
Repository: https://github.com/SlickFreekDesign/adscalculator-xyz
Local Path:D:\GitHub\adscalculator-xyz
Last Updated: 2026-06-18
AdsCalculator.xyz is a Jamstack static site built with Eleventy (11ty) that provides free digital marketing calculators and ROI tools. All calculations run client-side in the browser — no server processing.
Help marketers calculate ROI, ROAS, CPA, and other key metrics with free, fast, privacy-first tools.
style/ → concatenated to single dist/style.css| Layer | Technology |
|---|---|
| Static Generator | Eleventy 3.x (11ty) |
| Templating | Nunjucks (.njk) |
| Styling | Vanilla CSS (modular, concatenated at build) |
| Logic | Vanilla JavaScript (ES6+) |
| Math Rendering | MathJax 3 |
| Testing | Jest |
| Linting | ESLint 9 + Prettier |
| Analytics | Google Tag Manager |
| Hosting | Cloudflare Pages + GitHub |
#353535 (main), #363636 (elements)#FFD700 (yellow)#e7e3e3 (primary), #a1a1a1 (secondary)localStorage toggleD:\GitHub\adscalculator-xyz\
├── .eleventy.js # Eleventy config
├── package.json
├── wiki/ # Project knowledge base
│ └── adscalculator-xyz.md # This file
├── src/
│ ├── _data/
│ ├── _includes/
│ │ ├── layouts/
│ │ ├── sidebar.njk
│ │ └── footer.njk
│ ├── blog/ # Blog posts (Markdown + PNG images)
│ │ ├── blog.json # Shared frontmatter
│ │ └── <post-name>/
│ │ ├── index.md
│ │ └── <image>.png
│ ├── index.html # Homepage (Bento Grid)
│ ├── *.html # Calculator pages
│ └── glossary.html, faq.html, about.html, etc.
├── assets/
│ ├── main.js
│ ├── style.css # Concatenated from style/ at build
│ ├── js/ # Calculator JS files
│ └── ...
├── tests/
└── dist/ # Build output
| Calculator | URL Path | Description |
|---|---|---|
| ROAS Calculator | /roas-calculator/ |
Return on ad spend |
| E-commerce Profit | /ecom-profit-calculator/ |
True ROI with all costs |
| ROI & LTV | /roi-ltv-calculator/ |
Customer lifetime value |
| CPC Calculator | /cpc-calculator/ |
Cost per click |
| CPA Calculator | /cpa-calculator/ |
Cost per acquisition |
| Campaign Funnel | /campaign-funnel-calculator/ |
Funnel metrics |
| Page RPM | /page-rpm-calculator/ |
Revenue per mille |
| Break-Even ROAS | /break-even-roas/ |
Minimum viable ROAS |
| Title | Date |
|---|---|
| 5 Ways to Increase Your Website's Ad Revenue | May 2025 |
| 7-Step Blueprint to a Profitable Online Business | 2025 |
| A/B Testing: Complete Guide (2025) | 2026 |
| Attribution Modeling: Complete Guide for 2025 | 2025 |
| Beyond ROAS: A Guide to True Profitability | 2025 |
| Bounce Rate: What It Is, Why It Matters (2025) | 2025 |
| CRO: Complete Guide to More Conversions (2025) | 2025 |
| CPA & CPL: Ultimate Guide for 2025 | 2025 |
| CPA vs ROAS: Which Metric Should You Optimize? | 2025 |
| CPM Benchmarks 2025: Deep Dive | 2025 |
| CPM vs CPC: Which Pricing Model Is Right | 2025 |
| CAC: Complete Guide (2025) | 2025 |
| Digital Marketing Calculators & True ROI | 2025 |
| How to Calculate Email Marketing ROI | 2025 |
| How to Forecast Ad Revenue | 2025 |
| ROAS vs ROI: Complete Guide | 2025 |
| Page RPM: Ultimate Metric for Publishers | 2025 |
| How to Build an AI Marketing Funnel (2025) | 2025 |
| Influencer Marketing: Complete Guide (2025) | 2025 |
| Marketing Budget Planning: Complete Guide (2025) | 2025 |
| Marketing Efficiency 2025 | 2025 |
| LTV to CPA Ratio for Sustainable Growth | 2025 |
| PPC Advertising: Complete Guide (2025) | 2025 |
| TikTok Ads Cost Calculator (2025) | 2025 |
| Social Media Engagement Rate (2025) | 2025 |
| Break-Even ROAS: Most Important Number | 2026 |
| 25 Marketing KPIs & Metrics (2026) | 2026 |
| Google Ads vs Facebook Ads (2026) | 2026 |
| Customer Lifetime Value (CLV) (2026) | 2026 |
| Retargeting Explained (2026) | 2026 |
layouts/post.html → post.njklayout, title, description, date, tags: "post", ogImage, featuredImagestyle/ → Eleventy .after transform concatenates into single dist/style.cssnpx @11ty/eleventy # Build
npx @11ty/eleventy --serve # Dev server
npx jest # Tests
npx @11ty/eleventy && npx jest
# SVG → PNG via sharp (in project dir)
node -e "require('sharp')(Buffer.from(require('fs').readFileSync('blog/dir/name.svg'))).png().toFile('blog/dir/name.png').then(()=>console.log('done'))"
write_file insteadpython not found, use node for scriptsnode_modulesbase.njk| Date | Lesson |
|---|---|
| 2026-06 | patch tool "Escape-drift": use write_file for complex HTML with quotes |
| 2026-06 | CSS @import unreliable in production: concatenate at build time |
| 2026-06 | SVG → PNG: sharp works for PNG/JPG but some SVG inputs cause "corrupt header" errors — keep SVG simple |
| 2026-06 | replace_all in patch causes cascading corruption |
| 2026-06 | Blog posts need both ogImage (for social) and featuredImage (for blog listing) — always PNG |
wiki/content-strategy.md)