A modern, immersive web radio experience built with React, TypeScript, and Three.js. This project features an interactive 3D globe, global radio station discovery, and a responsive UI designed for both desktop and mobile.
This repository contains a frontend radio application with:
- An interactive 3D globe rendered using
@react-three/fiberand@react-three/drei - Theme modes:
dark,light, andpink - Country-based station selection and playback
- A custom pink globe style for the
pinktheme - Supabase-based authentication support
- A Vercel Speed Insights helper module
- Framework: React
- Language: TypeScript
- 3D Graphics: Three.js / React Three Fiber
- Build Tool: Vite
- Styling: Tailwind-style utility classes and custom CSS
- API: Radio Browser API and Supabase
- Performance:
@vercel/speed-insights
src/App.tsx— app layout, theme switching, globe container, and main UIsrc/components/Globe.tsx— 3D globe rendering and globe marker interactionssrc/components/AudioPlayer.tsx— station playback panelsrc/components/StationList.tsx— station browsing and selectionsrc/components/Auth.tsx— Supabase sign-in / sign-out UIsrc/services/radioApi.ts— radio station API wrappersrc/services/supabaseClient.ts— Supabase client setupsrc/theme.ts— theme definitions and helper functionssrc/speedInsights.ts— Vercel Speed Insights adapter
src/speedInsights.ts exports the Vercel Speed Insights adapter for the project.
Use it like this:
import { SpeedInsights } from './speedInsights'That file re-exports the Next-specific adapter from @vercel/speed-insights/next.
- Clone the repository:
git clone https://github.com/stawan15/Rxdio.git cd Rxdio
2. Install dependencies:
```bash
npm install
Start the development server:
npm run devOpen the app at http://localhost:5173.
Build for production:
npm run buildSet VITE_SITE_URL to https://rxdio.teveus.xyz in production so Google OAuth redirects return to the correct domain.
Preview the production build:
npm run previewThe project includes a Dockerfile and docker-compose.yml.
Start the app with Docker Compose:
docker compose up --buildStop and remove containers:
docker compose down- The pink globe appearance is configured in
src/components/Globe.tsx. theme.tscontrols theme colors and mode logic.radioApi.tsis used to fetch station data from the Radio Browser API.supabaseClient.tshandles authentication for user sessions.
This project is private and intended for personal use.
Built with ❤️ by Madam Eve.