# EverythingMonetized: I built a parody LMS where course bros sell courses about selling courses

Source: https://www.michaelchurley.com/blog/everythingmonetized-parody-lms-course-bros  
Published: 2026-08-08  
Author: Michael C. Hurley  
Tags: everythingmonetized, parody, satire, course-bro, lms, nextjs, convex, tailwind, martech, creator-economy, hurleyus

![EverythingMonetized live hero, Cohort 04 parody LMS academy redesign](/blog/everythingmonetized-parody-lms-course-bros/screenshots/home-live.png)

## Who

I build products in public for operators who can smell a funnel from across the room. The course economy already sells the same promise on a loop: buy a course about making money by selling courses about making money. Fans of that bit, and builders who want the satire to have a real schema, are who this is for.

If you already read the MerchWinner pack (POD course marketplace, empty catalog) or iLeague (golf creator Stripe), this is a different lane. EverythingMonetized is intentional parody of the guru machine.

## What

I shipped a parody LMS under `HurleyUS/everythingmonetized.com`.

README one-liner: **Parody site where AI generated course bros sell course bro courses to aspiring course bros.** Live metadata: **Where Course Bros Monetize Everything.** The May 22 redesign hero is blunter: **The parody LMS for learning how the course economy sells itself.**

Stack on the box: **Next.js 16.2.6**, React 19.2.6, **Convex**, Tailwind v4, Phosphor, Framer Motion, Radix, next-themes (dark default), PostHog, Sentry, Resend. Bun. Package **everythingmonetized** **0.1.0**. Private HurleyUS repo. Public site at [www.everythingmonetized.com](https://www.everythingmonetized.com).

![Illustrative course catalog, 9 of 10 seeded absurd titles](/blog/everythingmonetized-parody-lms-course-bros/screenshots/courses.png)

Convex schema is the product spine:

- `courseBros`: name, slug, tagline, bio, catchphrases, specialties, socialProof, featured
- `courses`: absurd titles, inflated `originalPrice`, modules/lessons, category, search index
- `testimonials`: always-verified parody outcomes
- `subscribers`: newsletter with email dedupe + source
- `purchases`: pending/completed/refunded; paymentMethod includes **exposure**
- `rateLimits`: newsletter + purchase mutations

Seed ships **5** AI gurus (Chad Hustlemax, Brandon Scale, Tiffany Funnel, Derek Dropship, Maximilian Leverage) and **10** courses from $2,997 to $8,997, titles like *How to Find Your First Course Idea (By Buying This Course)* and *Mindset Mastery: Think Rich, Stay Poor (Until You Buy This)*. Avatars and thumbs are Pollinations prompt URLs.

Admin is a full CRUD plane: bros, courses, testimonials, subscribers. Auth is a **password cookie** (`ADMIN_PASSWORD`, fail-secure after Feb 15). `@clerk/nextjs` sits in package.json; public Clerk billing is README fiction. TODO from Feb 13 says no Clerk auth.

Purchase success copy is the thesis: congratulations, course bro, **no actual course will be delivered**. Commitment to the bit is the product.

![Illustrative course detail, High-Ticket Alchemy parody checkout](/blog/everythingmonetized-parody-lms-course-bros/screenshots/course-detail.png)

What is also true on pack day: the live `/courses` page says **Showing 0 of 0 courses**. Seed exists. Production Convex is empty or unconfigured. TODO still blocks on GitHub issue #1, Convex env vars on Vercel. sitrep.md still claims PROTOTYPE / last commit Jan 31 / LOW priority. README still says Next 15.5.6. That drift is the story.

## Where

It runs on Vercel. Apex `everythingmonetized.com` 307s to www. Alias `everythingmonetized-com.vercel.app` also 200. `vercel.json` disables git auto-deploy on main/master and, as of Aug 8, sends `X-Robots-Tag: index, follow`.

Surfaces that matter:

- Public lander: teal academy hero, learning-dashboard.tsx card, featured tracks, faculty, learner outcomes, weekly lab newsletter
- Catalog: search / category / price / sort / pagination
- Bro profiles: `/bros/[slug]`
- Course detail: modules + parody purchase form
- About: mission + core values (Hustle Over Health, etc.)
- Admin: password gate via `proxy.ts`

Audience: satire builders, MarTech operators, and anyone comparing a seeded Convex backend to a live empty catalog.

![Live courses page, Showing 0 of 0](/blog/everythingmonetized-parody-lms-course-bros/screenshots/courses-live.png)

## When

**2026-01-08.** Initial Next.js + Convex + Tailwind. OPPORTUNITIES.md and PLAN.md the same day. The bit was named early.

**January 31.** Chore sync.

**February 6.** Next.js 16 + React 19. Tailwind v4 `@import` fix.

**February 8.** The product day. Admin panel, tests, search/filter/SEO, edit pages. CHANGELOG **0.1.0** lists five tables, parody purchase, Pollinations images, 48 unit tests, Playwright config, PostHog, Sentry, rate limits.

**February 13.** Production readiness: BUILDING.md button compliance, dark mode via next-themes, `proxy.ts` naming for Next 16.

**February 15.** Security: remove hardcoded admin password + fallback. Fail closed if `ADMIN_PASSWORD` missing.

**February 21.** lucide to `@phosphor-icons/react`.

**April 6.** ESLint / vitest chore.

**May 13–15.** shipprep + Blacksmith CI gate spam, then deploy health URL fixes. Same CI noise pattern as sibling HurleyUS templates, but this repo already had the Feb product pass underneath.

**May 22.** **redesign.** Teal/slate academy UI on home, cards, header/footer, newsletter. Orange hustle-gradient brand in DESIGN.md becomes the light-theme leftover; dark default is the live look.

**August 8, 6:54 AM ET.** HEAD `e7c6a61`, `X-Robots-Tag: index, follow`. Thirty-one commits on `main`.

**September 8 pack day.** Live lander matches redesign. Catalog still 0/0. Draft only.

![Illustrative faculty row, five AI course-bro operators](/blog/everythingmonetized-parody-lms-course-bros/screenshots/bros.png)

## Why

Satire of the course economy fails when it is only a landing meme. It needs personas, a catalog, an admin plane, and a checkout that confesses the joke. I wanted that spine in Convex.

I also refused to pretend production was seeded. Robots say index,follow. Courses say 0 of 0. Seed.ts says ten high-ticket absurdities. Those three sentences together are the operator note.

If you ship a parody LMS next, what do you fix first: seed Convex so the bit has inventory, or leave Showing 0 of 0 as the meta punchline?
