Skip to content

Latest commit

History

445 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

📻 baseFM

Onchain Radio for the Base Ecosystem

Live DJs · Crypto Tipping · Token-Gated Access · Onchain Events

baseFM Banner

CILicense: MIT

Live:basefm.space · Shop:shop.basefm.space · Guide:/guide


🎤 Join the Community

baseFM is a community-owned radio station built on Base. DJs stream live, listeners tip in crypto, and everyone owns a piece of the culture.

We're not a platform. We're a scene.

🎧 Listen

  • Tune in live at basefm.space — jungle, dub, drum & bass, electronic
  • Push notifications — get alerted when your favourite DJ goes live
  • Chat in real-time during streams
  • Tip your DJ — ETH, USDC, RAVE, cbBTC straight to their wallet

🎚️ DJ

  • Stream live from OBS — RTMP in, HLS out, global CDN
  • Your own profile — stats, followers, banner, bio
  • Get paid directly — tips go straight to your wallet, no middleman
  • Show archives — automatic recording and playback
  • Weekly schedule — lock in your recurring timeslot

Apply to DJ →

🏗️ Build

baseFM is open source. We welcome contributors of all levels.

git clone https://github.com/Eskyee/baseFM.git
cd baseFM
npm install
cp .env.example .env.local
npm run dev

See the Developer Guide below for setup details.

🎫 Events

  • Community events — listings, parties, and shows
  • Onchain tickets — buy with USDC, verify with your wallet
  • Promoter tools — crew management, POS, check-in, Slack notifications
  • 35+ production roles — from stage manager to sound engineer

🪙 Token

  • $RAVE — 5,000+ tokens for DJ-gated community access
  • Show NFTs — mint recordings as collectibles
  • Direct payments — tips and tickets go straight to wallets

Get $RAVE →


🤝 Contributing

We want your help. Seriously.

Good first issues — check the issues tab for beginner-friendly tasks.

How to contribute:

  1. Fork the repo
  2. Create a branch: git checkout -b feature/amazing
  3. Make your changes
  4. Push and open a PR

What we need help with:

  • UI/UX improvements
  • Mobile experience
  • Chat moderation tools
  • Genre filtering and search
  • Analytics dashboards
  • Documentation
  • Testing

Code style: TypeScript, Tailwind CSS, Next.js App Router. Check CLAUDE.md for full conventions.


📖 What's Inside

For Listeners

FeatureDescription
Live StreamingRTMP → HLS via Mux, global CDN
Show ArchivesAutomatic recording and playback
Live ChatReal-time during streams (Supabase)
Multi-Token TipsETH, USDC, RAVE, cbBTC
Follow SystemTrack your favourite DJs
Push NotificationsNever miss a live show
PWAInstall as app on iOS/Android

For DJs

FeatureDescription
Streaming DashboardStart/stop, OBS credentials, stats
DJ ProfilesBio, banner, socials, follower count
Weekly ScheduleLock in recurring timeslots
DJ of the DayFeatured artist spotlight
Direct WalletTips arrive in your wallet instantly

For Promoters

FeatureDescription
Event ManagementCreate events, sell tickets, manage attendees
Onchain TicketsUSDC payments, wallet verification
Crew Dashboard35+ roles, check-in, notifications
POS SystemQR payment generation + ticket scanner
AccountingRevenue tracking with GBP conversion

For Developers

FeatureDescription
CI/CDGitHub Actions (lint, test, build)
Tests55+ unit tests with Vitest
TypeScriptFull type safety
OnchainKitBase names, avatars, wallet auth

🛠 Tech Stack

LayerTech
FrameworkNext.js 14 (App Router)
DatabaseSupabase (Postgres + Realtime)
StreamingMux (RTMP → HLS)
BlockchainBase (wagmi, viem, OnchainKit)
StylingTailwind CSS
LanguageTypeScript

🔧 Developer Guide

Environment Setup

cp .env.example .env.local
# SupabaseNEXT_PUBLIC_SUPABASE_URL=https://xxxxx.supabase.coNEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbG...SUPABASE_SERVICE_ROLE_KEY=eyJhbG...# Mux (https://dashboard.mux.com)MUX_TOKEN_ID=xxxxxMUX_TOKEN_SECRET=xxxxxMUX_WEBHOOK_SECRET=xxxxx# Base NetworkNEXT_PUBLIC_BASE_CHAIN_ID=8453NEXT_PUBLIC_BASE_RPC_URL=https://mainnet.base.org# OnchainKit (https://portal.cdp.coinbase.com)NEXT_PUBLIC_ONCHAINKIT_API_KEY=# Push Notifications (npx web-push generate-vapid-keys)NEXT_PUBLIC_VAPID_PUBLIC_KEY=VAPID_PRIVATE_KEY=# AppNEXT_PUBLIC_APP_URL=http://localhost:3000

Database Setup

Run these SQL files in Supabase SQL Editor (in order):

  1. supabase/schema-djs.sql - DJ profiles
  2. supabase/schema-schedule.sql - Weekly schedule
  3. supabase/schema-members.sql - Community directory
  4. supabase/schema-chat.sql - Live chat
  5. supabase/schema-notifications.sql - Favorites + push
  6. supabase/schema-tips.sql - Tips tracking
  7. supabase/schema-nfts.sql - NFT collectibles

Enable Realtime for chat_messages table in Supabase dashboard.

Project Structure

baseFM/
├── app/ # Next.js App Router
│ ├── api/ # API routes
│ ├── dashboard/ # DJ dashboard
│ ├── djs/ # DJ profiles
│ ├── events/ # Community events
│ └── community/ # Token-gated directory
├── components/ # React components
├── lib/ # Utilities
│ ├── db/ # Database functions
│ ├── mux/ # Mux API client
│ └── supabase/ # Supabase client
├── supabase/ # SQL schema files
└── public/ # Static assets + PWA

Architecture

┌─────────────────────────────────────────────────┐
│ Vercel (Next.js) │
│ ┌─────────────┐ ┌─────────────────┐ │
│ │ API Routes │────────▶│ Supabase │ │
│ └──────┬──────┘ └─────────────────┘ │
│ │ RTMP │
│ ▼ │
│ ┌─────────────┐ ┌──────────────┐ │
│ │ Mux │────▶│ Webhooks │ │
│ └──────┬──────┘ └──────────────┘ │
│ ▼ HLS │
│ ┌─────────────┐ │
│ │ Listeners │ │
│ └─────────────┘ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Base │◀───────▶│ OnchainKit │ │
│ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────┘

📬 Links

License

MIT


Built with love by RaveCulture for Base Builders

📻 Keep the signal alive

About

base Miniapp Created by raveculture

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages