Back to projects

VAI-VEX

2025archived

A Skool clone built for technical communities, combining the best of Reddit and Skool with real-time Convex infrastructure.

// GitHub

View Repository
352 commits
Last commit 11 hours ago
TypeScript

// Problem

I was running a technical community called Vibe with AI—thousands of engineers learning agentic workflows and LLM orchestration together. The problem? We were using Skool, a platform that felt stuck in 2015. It made no sense to run a high-tech AI community on outdated tech. The UX was clunky, the features were limited, and I couldn't customize anything. I needed a platform that matched the sophistication of the community itself.

// Solution

I reverse-engineered all five of Skool's APIs and extracted the data I needed to migrate. Then I designed a custom platform that cherry-picked the best parts of Reddit (threaded discussions, voting, community curation) and Skool (course-style learning paths, member engagement). The result was a purpose-built workspace for developers with three core features: Signal (a curated feed that filters out noise), Dojo (voice rooms for live problem-solving), and Swipe (a searchable library of AI prompts and code snippets).

// What I Built

A full-stack community platform built on Next.js 15 and Convex. The frontend was a React 19 app with 46 shadcn/ui components—everything from command palettes to resizable panels to voice room interfaces. Convex handled the entire backend: real-time database subscriptions, serverless functions, and authentication via Clerk. I built a custom OKLCH-based design system with full dark mode support, an IBM Plex Mono aesthetic that felt distinctly developer-focused. The architecture was monorepo-ready with TypeScript strict mode throughout. The /update page even included interactive charts analyzing AI usage patterns across the community—line charts showing 'AI Usage vs Product Quality' and scatter plots mapping 'Who's Loudest About AI' by financial incentive.

// Technologies

Convex

Real-time backend-as-a-service replacing traditional API + database layers. Handled subscriptions, mutations, and serverless functions with TypeScript end-to-end—felt like Firebase but with better DX

Next.js 15 + React 19

Latest App Router with React 19 features, client-heavy architecture for real-time interactions, and TypeScript strict mode with noUncheckedIndexedAccess

Clerk

Managed authentication provider handling sign-in/sign-up flows, session management, and user profiles without building auth from scratch

shadcn/ui + Radix

46 accessible, unstyled Radix primitives styled with Tailwind CSS 4—dialogs, dropdowns, command palette, resizable panels, voice room controls

Tailwind CSS 4 + OKLCH Design System

PostCSS-based Tailwind with custom OKLCH color tokens for perceptually uniform theming, full dark mode support via CSS variables

// Lessons Learned

  • 01Convex is genuinely fun to work with. The real-time subscriptions and TypeScript-first approach reminded me of Firebase's best days, but with modern DX. That said, I'm still hesitant about adopting new shiny tech for production—Firebase taught me that developer experience and long-term viability aren't the same thing.
  • 02Reverse-engineering Skool's APIs was surprisingly straightforward. Five endpoints, predictable patterns, and I had everything I needed to migrate a 2,000+ member community. The hardest part wasn't the technical extraction—it was deciding what features to keep versus what to reimagine.
  • 03Combining Reddit and Skool's best features taught me that community software is about trade-offs. Reddit's threading is great for discourse but terrible for courses. Skool's linear structure is great for learning but kills organic discussion. My hybrid approach worked, but took iteration to feel natural.
  • 04Building something is different from wanting to operate it. The platform worked—members loved it. But running a community platform means constant moderation, feature requests, and support. I realized I wanted to build AI products, not operate community infrastructure. So I shut it down.
  • 05The best side projects solve your own problem first. VAI-VEX scratched an itch I genuinely had. That internal motivation carried me through the reverse-engineering, the late-night debugging, and the 46 components I built. Without that personal stake, I would have quit at the API extraction phase.