A 3D musical universe visualization where your Spotify listening history becomes a navigable galaxy — artists as stars, genres as nebulae, connections as gravitational links.
- Artists as Stars: Your top artists become glowing stars in 3D space
- Genre Nebulae: Related genres cluster together as colorful nebula clouds
- Musical Connections: See how your artists connect through shared genres
- Time Travel: Switch between short-term, medium-term, and all-time listening data
- Interactive Exploration: Fly through your musical universe with smooth camera controls
- Audio Previews: Click on a star to hear a preview of the artist
- Frontend: React 19 + TypeScript (strict mode)
- Build: Vite
- 3D Graphics: React Three Fiber + Drei + Postprocessing
- Shaders: Custom GLSL shaders for stars and nebulae
- Physics: D3.js force simulation for layout
- State: Zustand
- API Caching: TanStack Query
- Styling: Tailwind CSS v4
- Testing: Vitest + Testing Library
- Node.js 18+
- pnpm
- Spotify account
- Create a Spotify Developer account at developer.spotify.com
- Create a new app and get your Client ID
- Add
http://localhost:5173/callbackas a Redirect URI - See SPOTIFY_SETUP.md for detailed instructions
# Clone the repository
git clone https://github.com/yourusername/auranova.git
cd auranova
# Install dependencies
pnpm install
# Copy environment variables
cp .env.example .env
# Edit .env with your Spotify Client ID
# VITE_SPOTIFY_CLIENT_ID=your_client_id_here
# Start development server
pnpm devOpen http://localhost:5173 in your browser.
pnpm dev # Start development server
pnpm build # Build for production
pnpm preview # Preview production build
pnpm lint # Run ESLint
pnpm test # Run tests
pnpm format # Format code with Prettiersrc/
├── api/
│ ├── spotify/ # Spotify API client, auth, endpoints
│ └── hooks/ # TanStack Query hooks
├── components/
│ ├── canvas/ # Three.js scene components
│ ├── ui/ # UI components
│ ├── effects/ # Post-processing effects
│ └── layout/ # Layout components
├── shaders/ # GLSL vertex/fragment shaders
├── simulation/ # D3 force simulation, clustering
├── stores/ # Zustand stores
├── types/ # TypeScript type definitions
└── utils/ # Utility functions
See ROADMAP.md for the development plan.
Contributions are welcome! Please feel free to submit a Pull Request.
MIT License - see LICENSE for details.
- Spotify Web API for music data
- Three.js and React Three Fiber for 3D graphics
- D3.js for force-directed layouts
