Shinas AR
000%
Back to workShinas · AR

◇ Case study / 02 · 2026

Wall Street Jr. Academy

Multi-school education platform

Role
Sole engineer · Wall Street Jr Investments
Duration
Feb 2026 — ongoing (launch phase)
Status
In launch
Stack
Next.js 14 · Supabase · Stripe · Mux
Wall Street Jr. Academy

◇ The problem

What we were trying to solve

Wall Street Jr wanted to launch Dubai's first multidisciplinary online academy — finance, AI, design, and business under one brand, with cohort-based delivery and an AI-powered academy advisor. The market is owned by Udemy, Coursera, and Wall Street Prep. The fix: position by intent ('multidisciplinary, mentor-led, Dubai-grounded'), not by topic.

◇ The solution

How it shipped

Built on Next.js 14 (App Router) for SSR + SEO, Supabase for course catalog and per-user enrollment state, Vercel edge for global delivery. Integrated a Claude-powered academy advisor ('ATLAS') sitting on every page that captures leads through a multi-turn conversation, then ships them to Google Sheets + Slack via n8n. Stripe payments, Mux video hosting, and Supabase Auth all wired now.

◇ Decisions

Engineering choices worth flagging

01 · Decision

Next.js App Router (vs Pages or SPA)

Marketing pages are the SEO surface. Server Components render course catalog and school pages fully indexed; Client Components only where interactivity is needed (cart, ATLAS chat, dashboard). Pages Router would have meant getServerSideProps per dynamic page; a SPA would have meant client-rendered HTML for indexing-critical pages.

02 · Decision

Stripe for payments

Already supports MENA (Tax + AED). Built-in coupon logic. Webhook-driven enrollment fits cleanly with Supabase Edge Functions. The alternative (Tap, Network International) would have been faster local checkout for UAE residents but worse global support — and the audience is half Indian + GCC, so Stripe wins on geographic coverage.

03 · Decision

Mux for video (over self-hosted or YouTube)

Self-hosted = encoding pipeline + storage + CDN = engineering tax. YouTube = no per-user gating, embeds break the brand, unlisted is not actually private. Mux = signed playback URLs scoped per user + per cohort, automatic captions, encoding handled.

◇ Results

What shipped

wsjrschool.com
Live
4
Schools
Finance · AI · Design · Business
5,000+
Target learners
3
AI surfaces
ATLAS · curriculum · lead routing

◇ Stack

Tools used

Next.js 14SupabaseStripeMuxClaude APIn8n

◇ Keep exploring

Other case studies.