Skip to content

agentmila/superteam-academy

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

16 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Superteam Academy

Superteam Academy

The Learning Platform for Solana Developers
Interactive courses Β· Code challenges Β· On-chain credentials Β· Gamified learning

πŸ”— Live Demo β€’ Features β€’ Tech Stack β€’ Getting Started β€’ Structure β€’ Deploy β€’ Contributing

Live Demo GitHub


Screenshots

Home Course Catalog Lesson (Code Challenge)
Home Courses Lesson
Dashboard Leaderboard Profile
Dashboard Leaderboard Profile

Features

πŸŽ“ 10 Core Pages

Page Description
Landing Animated hero, stats, learning paths, testimonials
Course Catalog Filter by difficulty, search, categories
Course Detail Syllabus, module tree, enrollment, progress
Lesson Viewer Video, rich content, code challenges (Monaco), quizzes
Student Dashboard XP level, streak calendar, activity feed, enrolled courses
Leaderboard Global & weekly rankings, XP & streak filters
Profile Public profile, badge grid, skill radar chart, credentials
Certificates On-chain verifiable credentials (cNFT), share & verify
Settings Profile editing, wallet connections, preferences, privacy
Auth Sign in with Google, GitHub, or Solana wallet

πŸ† Gamification

  • XP system with leveling curve
  • 7-day streak tracking with bonuses
  • Achievement badges (Explorer, Streak Master, etc.)
  • Global leaderboard with real-time rankings

⛓️ On-Chain Integration (Solana Devnet)

  • Soulbound XP tokens (Token-2022 read)
  • Compressed NFT credentials (cNFTs via Bubblegum)
  • On-chain verification for certificates
  • Wallet-based authentication (Phantom, Backpack, Solflare)

🎭 Role-Based Access Control (RBAC)

Role Access
Admin Full platform management (/admin/*)
Professor Course creation & student analytics (/teach/*)
Student Learning, progress, credentials

🌍 Internationalization

  • 3 languages: English, PortuguΓͺs (BR), EspaΓ±ol
  • Content & UI fully translated via next-intl

πŸ“Š Analytics

  • GA4, PostHog (heatmaps), Sentry (error tracking)
  • Custom event tracking for lessons, enrollments, challenges

Tech Stack

Layer Technology
Framework Next.js 14 (App Router, RSC)
Language TypeScript (strict)
Styling Tailwind CSS 3.4 + CSS variables
Components shadcn/ui + Radix UI
Auth NextAuth.js + Solana Wallet Adapter
Database Supabase (Postgres + RLS + Realtime)
CMS Sanity v3 (structured content)
Code Editor Monaco Editor (dynamic import, SSR-safe)
Blockchain Solana (devnet) β€” @solana/web3.js, @metaplex
i18n next-intl (type-safe)
Analytics Google Analytics 4, PostHog, Sentry
Email Resend
Package Manager pnpm (workspace)
Deploy Vercel

Getting Started

Prerequisites

  • Node.js β‰₯ 18
  • pnpm β‰₯ 8
  • Supabase project (free tier works)
  • Sanity project (free tier works)
  • OAuth credentials (Google, GitHub) β€” optional for dev

Installation

# Clone
git clone https://github.com/kukaklaudio/superteam-academy.git
cd superteam-academy

# Install dependencies
pnpm install

# Configure environment
cp apps/web/.env.example apps/web/.env.local
# Edit .env.local with your credentials

# Run development server
pnpm dev

# Build for production
pnpm build

The app runs at http://localhost:3000.


Environment Variables

Variable Required Description
NEXT_PUBLIC_SUPABASE_URL βœ… Supabase project URL
NEXT_PUBLIC_SUPABASE_ANON_KEY βœ… Supabase anonymous key
SUPABASE_SERVICE_KEY βœ… Supabase service role key (server only)
NEXTAUTH_URL βœ… App URL (http://localhost:3000 for dev)
NEXTAUTH_SECRET βœ… Random secret (openssl rand -base64 32)
GOOGLE_CLIENT_ID ⬜ Google OAuth client ID
GOOGLE_CLIENT_SECRET ⬜ Google OAuth client secret
GITHUB_CLIENT_ID ⬜ GitHub OAuth client ID
GITHUB_CLIENT_SECRET ⬜ GitHub OAuth client secret
NEXT_PUBLIC_SANITY_PROJECT_ID βœ… Sanity project ID
NEXT_PUBLIC_SANITY_DATASET βœ… Sanity dataset (production)
SANITY_API_TOKEN ⬜ Sanity write token
NEXT_PUBLIC_SOLANA_RPC βœ… Solana RPC endpoint
NEXT_PUBLIC_SOLANA_NETWORK βœ… devnet or mainnet-beta
NEXT_PUBLIC_GA_ID ⬜ Google Analytics 4 measurement ID
NEXT_PUBLIC_POSTHOG_KEY ⬜ PostHog API key
NEXT_PUBLIC_SENTRY_DSN ⬜ Sentry DSN
RESEND_API_KEY ⬜ Resend API key for emails
NEXT_PUBLIC_APP_URL ⬜ Public app URL (for sitemap, OG)

Project Structure

superteam-academy/
β”œβ”€β”€ apps/
β”‚   β”œβ”€β”€ web/                          # Next.js 14 application
β”‚   β”‚   β”œβ”€β”€ public/                   # Static assets, robots.txt
β”‚   β”‚   └── src/
β”‚   β”‚       β”œβ”€β”€ app/                  # App Router pages
β”‚   β”‚       β”‚   β”œβ”€β”€ (admin)/          # Admin routes (RBAC: admin)
β”‚   β”‚       β”‚   β”œβ”€β”€ (auth)/           # Authenticated routes
β”‚   β”‚       β”‚   β”œβ”€β”€ (public)/         # Public routes
β”‚   β”‚       β”‚   β”œβ”€β”€ (teach)/          # Teacher routes (RBAC: professor)
β”‚   β”‚       β”‚   β”œβ”€β”€ api/              # API routes (NextAuth)
β”‚   β”‚       β”‚   β”œβ”€β”€ error.tsx         # Global error boundary
β”‚   β”‚       β”‚   β”œβ”€β”€ not-found.tsx     # Custom 404
β”‚   β”‚       β”‚   β”œβ”€β”€ sitemap.ts        # Dynamic sitemap
β”‚   β”‚       β”‚   └── layout.tsx        # Root layout
β”‚   β”‚       β”œβ”€β”€ components/
β”‚   β”‚       β”‚   β”œβ”€β”€ admin/            # Admin-specific components
β”‚   β”‚       β”‚   β”œβ”€β”€ certificates/     # Certificate & credential UI
β”‚   β”‚       β”‚   β”œβ”€β”€ dashboard/        # XP display, streak, activity
β”‚   β”‚       β”‚   β”œβ”€β”€ layout/           # Header, footer, sidebar, search
β”‚   β”‚       β”‚   β”œβ”€β”€ leaderboard/      # Ranking table
β”‚   β”‚       β”‚   β”œβ”€β”€ lessons/          # Code editor, quiz, video, content
β”‚   β”‚       β”‚   β”œβ”€β”€ profile/          # Badges, radar chart, credentials
β”‚   β”‚       β”‚   β”œβ”€β”€ providers/        # Theme, session, analytics
β”‚   β”‚       β”‚   β”œβ”€β”€ settings/         # Forms for settings page
β”‚   β”‚       β”‚   β”œβ”€β”€ teach/            # Course & lesson editors
β”‚   β”‚       β”‚   └── ui/              # shadcn/ui primitives
β”‚   β”‚       β”œβ”€β”€ hooks/                # Custom React hooks
β”‚   β”‚       β”œβ”€β”€ i18n/                 # Internationalization config
β”‚   β”‚       β”œβ”€β”€ lib/                  # Utilities, analytics, auth
β”‚   β”‚       β”œβ”€β”€ services/             # Service interfaces (clean arch)
β”‚   β”‚       └── types/                # TypeScript type definitions
β”‚   └── cms/                          # Sanity Studio
β”‚       └── schemas/                  # Content schemas
β”œβ”€β”€ packages/                         # Shared packages (future)
β”œβ”€β”€ ARCHITECTURE.md
β”œβ”€β”€ CMS_GUIDE.md
β”œβ”€β”€ CUSTOMIZATION.md
└── README.md

Deployment

Vercel (Recommended)

  1. Push to GitHub
  2. Import project in Vercel
  3. Set Root Directory to apps/web
  4. Add all environment variables
  5. Deploy β€” Vercel auto-detects Next.js

Build Commands

pnpm build          # Build all apps
pnpm dev            # Dev server with hot reload
pnpm lint           # ESLint
pnpm type-check     # TypeScript compiler check

Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feat/my-feature
  3. Make your changes with tests
  4. Ensure pnpm build passes with zero errors
  5. Submit a pull request

Conventions

  • Commits: Conventional Commits (feat:, fix:, docs:, chore:)
  • Code style: Prettier + ESLint (auto-configured)
  • Types: Strict TypeScript, no any
  • Components: shadcn/ui patterns, composable, accessible

License

MIT Β© Superteam Brazil

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 96.1%
  • PLpgSQL 3.4%
  • Other 0.5%