Architecture
What This Means for Users
Technical Overview
System Diagram
┌──────────────────────────────────────────────────────────┐
│ impactmojo.in │
│ (Netlify — main site) │
│ │
│ index.html ─── js/auth.js ──── Supabase Auth │
│ js/router.js (login, signup, profiles) │
│ js/premium.js │
│ js/resource-launch.js │
└──────────┬───────────────────────────────────────────────┘
│
│ User clicks premium tool
▼
┌──────────────────────────────────────────────────────────┐
│ Supabase Edge Function │
│ mint-resource-token │
│ │
│ 1. Verify user session (access_token) │
│ 2. Check subscription_tier in profiles table │
│ 3. Check subscription_status = 'active' │
│ 4. Verify tier permits requested resource │
│ 5. Mint short-lived JWT (5 min, HMAC-SHA256) │
└──────────┬───────────────────────────────────────────────┘
│
│ window.open(resourceUrl + '?token=...')
▼
┌──────────────────────────────────────────────────────────┐
│ Resource Site (private Netlify deployment) │
│ Netlify Edge Function: auth-gate.ts │
│ │
│ 1. Check for resource_session cookie │
│ 2. If no cookie, check ?token= query parameter │
│ 3. Verify JWT signature (same HMAC secret) │
│ 4. Verify resource claim matches RESOURCE_ID │
│ 5. Set 24h session cookie, redirect to clean URL │
│ │
│ No cookie + no token → redirect to login │
└──────────────────────────────────────────────────────────┘Key Design Decisions
Why no framework?
Why separate Netlify sites for premium tools?
Why JWT over session-based auth?
Why Supabase?
Environment Variables
Main site (impactmojo.in)
Supabase Edge Function (mint-resource-token)
Variable
Description
Resource Netlify sites (per site)
Variable
Description
Tier Access Control
File Structure
Last updated
Was this helpful?