My story: ReNoun
TypeScript
Next.js
React
iron-session
TypeORM
TiDB
MySQL
Tailwind CSS
Sonner
Merriam-Webster API
Free Dictionary API
A fast-paced educational word game featuring sub-millisecond multi-tier dictionary validation, and tactile keyboard gameplay.

ReNoun screenshot
Active Vocabulary & The Joy of Wordplay
Language learners, students, and word puzzle enthusiasts frequently face the barrier of passive vocabulary: while many words can be recognized when reading or listening, retrieving and assembling them quickly during active speech or writing takes deliberate practice. Anagram challenges and word-construction games offer an engaging way to activate this mental lexicon while training spelling, pattern recognition, and focus under time pressure.
ReNoun was created as a fast-paced educational word game. In each round, the player is assigned a root “big noun” and given a 120-second countdown to construct as many valid English nouns as possible using only the letters available in that challenge word. You can jump in and play right away in the interactive live demo.
Game Mechanics & Non-Linear Scoring System
The game enforces clear rules that balance accessibility with competitive depth. Submissions must be valid English nouns at least three letters in length, and each letter tile may only be used as many times as it appears in the root noun. Duplicate submissions within the same game round are promptly detected and rejected.
Rather than awarding a flat point value per letter, ReNoun utilizes a non-linear scoring algorithm that strongly incentivizes players to hunt for longer, more complex words. Every accepted word earns a base score of ten points per letter, augmented by an escalating triangular bonus calculated from the sum of all descending integers below the word's length. Under this formula, a standard 3-letter noun earns 33 points, a 5-letter noun yields 60 points, and an ambitious 8-letter noun grants 108 points. This dynamic rewards lexical creativity and drives players to push for the elusive 1,000-point milestone.
The game also incorporates difficulty scaling based on assignment word length. Accessible rounds draw from nouns with nine or more letters, providing generous permutation trees, while higher difficulty tiers draw from tighter seven- or five-letter root words where every character count and valid combination demands sharper focus.
Multi-Tier Dictionary Validation & Self-Expanding Lexicon
A core technical challenge in building a real-time word game is dictionary verification: the validation engine must respond within milliseconds while remaining exhaustive enough to accept obscure or technical terms, strict enough to filter non-nouns and slang, and safe enough to screen out profanity.
To deliver instantaneous validation, ReNoun relies on a tiered hybrid pipeline. The primary tier queries an internal database seeded with a curated adaptation of Desi Quintans's noun list. Checking player submissions against this indexed SQL collection resolves common English nouns in sub-millisecond time without incurring third-party network latency.
When a submitted word is absent from the local database, ReNoun executes a live waterfall lookup across external dictionary APIs. It first queries Merriam-Webster's Learner's Dictionary and Collegiate Thesaurus APIs. The response parser inspects syllable-segmented headwords, enforces that the part of speech is strictly categorized as a noun, skips plural-only forms, and screens against offensive terms via the API's metadata flags.
As a resilient fallback, the pipeline queries the Free Dictionary API with a strict three-second abort timeout. Because open-source dictionaries can vary in consistency, words validated through this fallback are not only awarded points in the active game, but are also automatically deposited into a candidate word review table along with their extracted definitions. This moderation queue allows high-quality user discoveries to be permanently folded into the main dictionary, creating an organic, self-expanding lexicon.
Tactile In-Browser UX & Keyboard Integration
The integrated demo within this portfolio was built to deliver an arcade-like, tactile experience across both mobile touchscreens and desktop keyboards.
Players can interact through dual input modalities: tapping responsive on-screen letter tiles that automatically toggle their disabled state when selected, or typing directly on a physical keyboard. A custom window key listener matches typed letters against unused tiles in real time, supports Backspace for rapid editing, and handles Enter for instant submission—while intelligently ignoring keystrokes when interacting with form fields or modal dialogs.
Real-time feedback loops keep the player engaged throughout the 120-second countdown. An animated progress bar tracks remaining time, an interactive input field highlights previously submitted duplicates in orange, and incoming accepted words appear in a live scrollable feed with animated green score badges. Toast notifications powered by Sonner deliver contextual prompts for short words or dictionary misses, and an accessible end-game dialog summarizes final scores with an immediate restart trigger.
Full-Stack Evolution: From Express Prototype to Modern Next.js
ReNoun originally began as a standalone Node.js and Express application styled with Bulma CSS, utilizing vanilla JavaScript DOM event listeners, Google reCAPTCHA for registration spam defense, and TiDB (a serverless, MySQL-compatible distributed database) for persistence.
In migrating and embedding ReNoun into this portfolio, I re-engineered the entire stack into a modern, type-safe full-stack application using the Next.js App Router, React, and TypeScript.
Authentication was revamped using encrypted, stateless cookie sessions via iron-session, eliminating server-side session stores while providing tamper-proof cryptographic sealing with HTTP-only security flags. User passwords are protected with bcrypt hashing using 12 salt rounds, paired with strict validation schemas for user registration and credential checks.
The data persistence layer is powered by TypeORM entities defining schemas for words, user accounts, game sessions, and candidate word queues. SQL queries for the “big noun” leverage randomized selection via
ORDER BY RAND(), combined with length filters to provide fresh puzzle assignments on demand. Front-end game state, timers, and network coordination are encapsulated in a custom React hook, cleanly decoupled from presentation components and fully harmonized with this portfolio's system-aware light and dark visual design.