frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Show HN: Open-sourced an email QA lib 8 checks across 12 clients in 1 audit call

https://github.com/emailens/engine
1•tikkatenders•2h ago
Hey HN, I built this because I think $500 for litmus just to check whether my emails would break in Outlook. After Sinch acquired them and pushed prices even higher, I started wondering how much of that could be a library instead of a SaaS dashboard. Turns out: most of it.

@emailens/engine is a single npm package that runs 8 analysis passes on your email HTML in one call:

1. CSS compatibility: 250+ properties checked against 12 email clients, with per-client scores (0–100). Each warning includes severity, the specific client, and a fix snippet tailored to your framework (React Email, MJML, Maizzle, or plain HTML).

2. Spam scoring: 45+ heuristic signals modeled after SpamAssassin, CAN-SPAM, and GDPR. Catches caps ratio, hidden text, URL shorteners, missing unsubscribe (with transactional email exemption), deceptive links, image-to-text ratio, and more.

3. Accessibility: WCAG contrast, alt text, heading hierarchy, layout table roles, small text, missing lang attribute.

4. Link validation: broken hrefs, insecure HTTP, javascript: protocols, deceptive URLs, empty mailto/tel, generic link text.

5. Image analysis: missing dimensions, oversized data URIs, WebP/SVG in email, tracking pixels, missing display:block.

6. Inbox preview: subject/preheader truncation per client, Gmail clipping detection (102KB threshold).

7. Domain deliverability: SPF, DKIM, DMARC, MX, and BIMI DNS validation. No external dependencies, uses node:dns/promises.

8. Template variables: catches unresolved merge tags across Handlebars, ERB, Mailchimp, Salesforce, etc.

The engine parses the HTML once and shares the DOM across all analyzers, running all 8 checks is basically the cost of one parse. Framework-aware fixes are where it gets interesting. Every CSS warning comes with a fix snippet tailored to your framework:

React Email JSX → component-level fixes (e.g., VML components for Outlook border-radius) MJML → <mj-*> element suggestions Maizzle → utility class alternatives Plain HTML → inline CSS / VML fallbacks

Fixes are classified as css (simple property swap) or structural (needs HTML restructuring). For structural issues, there's an AI fix layer, the engine builds a context-rich prompt from the warnings, scores, and original source, and delegates to whatever LLM you provide. It's BYOK: you pass a provider function, the engine handles the prompt engineering.

React Email compilation runs in a sandboxed environment (isolated-vm for true heap isolation on servers, node:vm for local/CLI use, or QuickJS via WASM). Maizzle blocks filesystem-accessing PostHTML directives at validation time. MJML uses the standard compiler. There's also a CSS transformation layer, not just flagging issues, but rewriting the HTML per client. Inlines <style> blocks for Gmail, strips unsupported properties for Outlook, and can simulate dark mode (full inversion for Gmail Android, partial for Apple Mail, none for Outlook Windows). 574 tests covering all of the above. MIT licensed. No accounts, no dashboards, no vendor lock-in.

I'd love feedback on:

The API surface, does auditEmail() (all-in-one) vs createSession() (selective checks, shared parse) make sense as the two entry points?

The scoring formula: 100 - (errors × 15) - (warnings × 5) - (info × 1), too aggressive? Too lenient?

Missing email clients or checks you'd want to see?

Repo: https://github.com/emailens/engine

Docs: https://docs.emailens.dev

If you'd rather not wire it up yourself: https://emailens.dev

PEP 827 – Type Manipulation

https://peps.python.org/pep-0827/
1•pboulos•1m ago•0 comments

Regenerator 2000: interactive disassembler for the C64 and other 6502 systems

https://regenerator2000.readthedocs.io/en/latest/
2•homarp•1m ago•1 comments

CEOs are betting big on AI while barely using it

https://www.charterworks.com/ceos-are-betting-big-on-ai-while-barely-using-it/
1•swolpers•1m ago•0 comments

The AI Bubble Is an Information War

https://www.wheresyoured.at/the-ai-bubble-is-an-information-war/
1•spking•2m ago•0 comments

Google violates its 14-day deprecation policy for Gemini 3 Pro Preview

1•goolulusaurs•3m ago•0 comments

US Stock Market has lost $1 TRILLION in value since open Tuesday

https://old.reddit.com/r/StockMarket/comments/1rjtww8
1•ck2•5m ago•0 comments

A lightweight, embeddable Prolog interpreter written in C11

https://github.com/no382001/prolog
1•triska•7m ago•0 comments

Blackberry Growth Monitoring and Feature Quantification with UAV Remote Sensing

https://www.mdpi.com/2624-7402/6/4/260
1•PaulHoule•7m ago•0 comments

The Court's (Selective) Impatience Is a Vice

https://www.stevevladeck.com/p/214-the-courts-selective-impatience
1•hn_acker•7m ago•1 comments

Show HN: Boosted LightFace – A Hybrid DNN and GBM Model for Facial Recognition

https://dergipark.org.tr/en/pub/gujs/article/1794891
1•serengil•8m ago•0 comments

Isn't P2P WebRTC better than SSH for connecting to Mac terminal from iPhone?

https://macky.dev/#architecture
1•eureka_boy•8m ago•2 comments

Anthropic's Claude sees 'elevated errors' as it tops Apple's free apps

https://www.cnbc.com/2026/03/02/anthropic-claude-ai-outage-apple-pentagon.html
1•LostMyLogin•8m ago•1 comments

Bio-Inspired Adapters: Improving Models Beyond LoRA Fine-Tuning

https://www.genbais.com/
1•lazarko•10m ago•0 comments

Show HN: Design Jam, ASCII wireframes and annotations that export as AI prompts

https://getdesignjam.com
1•Adrig•10m ago•0 comments

Show HN: Free Math Sheets – Generate math worksheets for K-5 problems

https://www.freemathsheets.com/
1•mchaver•10m ago•0 comments

What the First Billionaire Reveals About the First Trillionaire

https://www.bloomberg.com/news/features/2026-02-26/elon-musk-and-the-first-trillionaire-what-rock...
3•robtherobber•11m ago•0 comments

A New Rembrandt Discovered

https://www.rijksmuseum.nl/en/stories/themes/rembrandt/story/a-new-rembrandt-discovered
1•Tomte•11m ago•0 comments

What AI-justified mass layoffs reveal about what we were never owed

https://codeplusconduct.substack.com/p/grateful-for-your-contributions
1•mooreds•12m ago•0 comments

Show HN: I rewrote an inventory app 4 times over 5 years before releasing v1

https://upzonehq.com/
1•florentmsl•12m ago•0 comments

Floyd is an enterprise-level world model

https://www.loom.com/share/7b3ba36113e446548f3a79cf5fc1e42c
1•tjarzu•13m ago•0 comments

Walk me through this "Safety Third" thing

https://mikerowe.com/2020/03/walk-me-through-this-safety-third-thing/
2•andsoitis•14m ago•0 comments

Perplexity Computer Is Groundbreaking

https://karozieminski.substack.com/p/perplexity-computer-review-examples-guide
2•Lunaboo•16m ago•0 comments

Jack Dorsey Blamed AI for Block's Layoffs. Skeptics Aren't Buying It

https://www.wsj.com/business/jack-dorseys-latest-far-out-bet-an-ai-future-with-fewer-employees-25...
2•nradov•16m ago•0 comments

A new 'uncertainty relation' for quantum measurement errors

https://phys.org/news/2026-03-uncertainty-quantum-errors.html
2•bikenaga•16m ago•1 comments

Building an Elite AI Engineering Culture in 2026

https://www.cjroth.com/blog/2026-02-18-building-an-elite-engineering-culture
1•mooreds•16m ago•0 comments

Idaho considers an 'apocalyptic' choice for disabled people and families

https://19thnews.org/2026/03/idaho-medicaid-budget-cuts-disability-programs/
1•mooreds•17m ago•0 comments

Where AI Agents Are Heading: What We Learned from Recent YC Startups

https://e2b.dev/blog/yc-companies-ai-agents
1•tizkovatereza•21m ago•2 comments

Show HN: AgentCost – Track, control, and optimize your AI spending (MIT)

https://github.com/agentcostin/agentcost
2•agentcostin•21m ago•0 comments

Spectre I prevents smart devices and AI recorders from picking up your voice

https://www.deveillance.com/
2•tnorthcutt•22m ago•2 comments

Show HN: VideoEvaluator, a Video Comparison Tool

https://www.videoevaluator.com/
1•ekinertac•23m ago•0 comments