Dictionaries explain hard words with harder words. I got tired of that loop, so I built Plainly — a plain-English dictionary + free API.
Live: https://www.plainly.my.id/?utm_source=devto&utm_medium=launch&utm_campaign=api
Docs: https://www.plainly.my.id/docs
What it does
-
GET /api/define?word=petrichor→ plain definition + example + phonetics + confused words - No jargon, no circular definitions
- Shareable pages:
/word/<word>with OG cards, prerendered for SEO - Word of the Day + archive at
/words, plus/confused-words,/medical-terms,/legal-terms - Free, no signup to use. API keys are instant + keyless (3/day per IP).
Quick try (JS)
// 1. get a key (no account)
const keyRes = await fetch('https://www.plainly.my.id/api/keys', { method: 'POST' });
const { key } = await keyRes.json();
// 2. define a word
const r = await fetch('https://www.plainly.my.id/api/define?word=petrichor', {
headers: { Authorization: 'Bearer ' + key }
});
console.log(await r.json());
// → { word, definition: '...in plain English', example: '...', phonetic, ... }
How it's built
- Single HTML file front-end (no build step), Vercel edge functions
- Supabase Postgres as definition cache (grows with every lookup)
- Free Dictionary API as source-of-truth, LLM rewrite to plain English
- Datamuse for autocomplete + did-you-mean
- OG images via @vercel/og, sitemap.xml with 300+ /word pages
- Daily Word-of-Day post to X via cron
Try petrichor, serendipity, idiopathic and tell me where the plain rewrite fails — that's the part I'm iterating hardest on.
Repo notes + feedback welcome. What would make you actually use this over MDN/Wiktionary/Google?
Top comments (0)