Syntax - Tasty Web Development Treats
Syntax - Tasty Web Development Treats

Our Stacks Explained

In this episode of Syntax, Wes and Scott talk through the tech stack they use to manage their course websites. Kontent by Kentico - Sponsor Kontent by Kentico is a headless CMS that provides live editing experience to non-technical users and hands you the technical tools to build websites, mobile ap

Featured Speakers

Wes Bos & Scott Tolinski - Full Stack JavaScript Web Developers Host

Topics Discussed

Episode Summary

Executive Summary: Scott and Wes break down the current architecture behind their course-selling platforms, comparing how each handles APIs, dashboards, video delivery, authentication, email, checkout, hosting, and admin tooling. The episode emphasizes how these systems evolved over years, why legacy choices persist, and how both creators balance modernization with the practical need to keep revenue-driving systems stable.

Main Topics: Overall platform architecture: Both hosts outline the major pieces of their course businesses: marketing sites, APIs, customer dashboards, admin tools, and course viewing experiences. Scott’s system is more segmented by purpose, while Wes’ is largely a single SvelteKit monorepo with separate admin migration work still underway. API design and backend stack: Scott uses an older Express + MongoDB stack, while Wes uses Fastify with GraphQL (Mercurius), Redis caching, and Mongoose. Wes also highlights code generation, GraphQL loaders, and auth directives as major architectural advantages. Course viewing and video delivery: Both platforms offer a custom viewing experience with progress tracking and course/module organization. Scott uses React and Vimeo, while Wes uses SvelteKit and VideoJS/Mux-related tooling, with both noting that video infrastructure is one of the most painful but business-critical parts of the stack. Admin tooling and business operations: The hosts discuss large internal dashboards for managing customers, refunds, coupons, analytics, affiliate sales, licenses, and content. They stress that internal tooling is a major part of the business and often underestimated by developers. Authentication, roles, and permissions: Scott uses Passport.js with JWTs and role-based access, while Wes has a custom auth system using bcrypt, salting, hashing, HTTP-only cookies, and role checks. Wes also mentions GraphQL auth directives and server-side policy enforcement. Checkout, payments, and monetization: Scott wants to modernize checkout to support more payment methods and better parity pricing, while Wes uses a custom Braintree-powered checkout with multiple payment methods. Both see checkout as important but not fun to maintain. Legacy decisions and future refactors: A recurring theme is that early naming, schema, and architecture decisions now cause friction. Both hosts describe planned migrations—TypeScript, GraphQL, serverless, naming cleanup, and redesigned tooling—but acknowledge the tradeoffs of rewriting stable revenue systems.

Key Arguments: Legacy systems are acceptable when they still work and do not create enough pain to justify a rewrite. Internal tooling is essential to running a course business efficiently and can save significant manual labor. Custom course platforms provide control over pricing, access, video UX, and operational details that third-party platforms cannot match. Video hosting and playback are among the hardest parts of the stack, but are critical because they directly affect the customer experience. GraphQL, caching, and code generation can reduce backend complexity and improve performance when adopted thoughtfully. Naming and schema decisions made early in a product’s life can become difficult technical debt as the business scales. Modernization should be incremental; both hosts prefer evolving systems without disrupting sales or customer access.

Data Points: Years building course platforms: 5–9 years - Both hosts describe building and maintaining their course systems for many years. Boss Monster domains: ~12 domains - Scott says his platform powers about a dozen domain names for marketing, purchases, email, and dashboards. Free videos per series: First 5 videos free - Wes explains that each tutorial series has the first five videos publicly available. Cache TTL examples: 10, 120, 2000, 1 week - Wes describes query-level caching durations in Mercurius Cache, including blog posts cached for about a week. Redis hosting: Private Redis on Render - Wes caches API data in Redis hosted on render.com. Video progress update interval: Every 20–30 seconds / on scrubs - Both discuss updating video progress frequently as users watch or scrub videos. Deploy time: ~3 minutes - Scott says TurboRepo helps keep deploys around three minutes. Coupon code discount: $10 off - Scott gives a syntax coupon code worth ten dollars off courses. Course pricing update: Current rate locked in before redesign - Wes says pricing will rise after the upcoming redesign. Render free trial: 14 days - Mentioned in the LogRocket sponsor read for new users of Render-related tools. Course catalog size: ~4,000 tutorials - Wes mentions a large CMS-like admin table covering thousands of tutorials. Monthly release cadence: 1 new tutorial series per month - Wes explains the business model is based on a new tutorial series each month.

Pivotal Quotes: "if it works, it works" — Scott: Scott explains why some older parts of his stack and admin tooling have not been replaced yet. "nothing better than having access to the code" — Wes: Wes explains why he prefers custom-built course infrastructure over third-party platforms like Teachable. "legacy stuff that just gets moved along and passed around" — Wes: Both hosts reflect on how software systems evolve and accumulate technical debt over time.

Implications: For course creators, the episode shows that durable custom infrastructure can be worth the maintenance cost when control, UX, and business flexibility matter. It also suggests that incremental modernization and strong internal tooling are more valuable than chasing the newest stack.

🔓 Sign Up for Unlimited Episode Search

About Syntax - Tasty Web Development Treats

View all episodes from Syntax - Tasty Web Development Treats