Tagline: "Swipe. Discover. Vibe."
A TikTok-style music discovery app that lets users swipe through personalized song snippets, create playlists, and discover new music through AI-powered recommendations.
- TikTok-style Feed: Vertical scrolling through 30-second song previews
- Vibe Modes: Curated mood-based music discovery (Gym, Chill, Breakup, Study, Party)
- Custom Vibes: AI-powered personalization based on text descriptions
- Smart Recommendations: Spotify API integration with audio feature analysis
- Playlist Management: Create and manage playlists directly in Spotify
- Music Search: Search for tracks, artists, and albums
- Like System: Save favorite tracks with heart animations
- Minimalist UI: Clean, modern interface with smooth animations
- Dark Theme: Pure black background with Spotify green accents
- Immersive Experience: Full-screen album art with blur effects
- Smooth Animations: React Native Reanimated v3 for fluid interactions
- Spotify OAuth: Secure login with Spotify accounts
- Secure Storage: Encrypted token storage with Expo SecureStore
- Node.js 18+ and npm/yarn
- Expo CLI (
npm install -g @expo/cli) - iOS Simulator or Android Emulator
- Spotify Developer Account
- Go to Spotify Developer Dashboard
- Create a new app
- Add redirect URI:
exp://localhost:8081/--/auth(for development) - Note your Client ID and Client Secret
Edit src/config/spotify.ts:
export const SPOTIFY_CONFIG = {
CLIENT_ID: "your_actual_spotify_client_id",
REDIRECT_URI: "exp://localhost:8081/--/auth",
// ... rest of config
};bun installbun start- Press
ifor iOS Simulator - Press
afor Android Emulator - Scan QR code with Expo Go app for physical device
src/
├── components/ # Reusable UI components
│ └── MusicFeedCard.tsx
├── navigation/ # Navigation configuration
│ └── AppNavigator.tsx
├── screens/ # Screen components
│ ├── WelcomeScreen.tsx
│ ├── LoginScreen.tsx
│ ├── GenrePreferencesScreen.tsx
│ ├── HomeScreen.tsx
│ ├── VibeModeScreen.tsx
│ ├── PlaylistsScreen.tsx
│ ├── SearchScreen.tsx
│ └── ProfileScreen.tsx
├── services/ # API and external services
│ ├── spotifyService.ts
│ ├── authService.ts
│ └── audioService.ts
├── state/ # Zustand stores
│ ├── authStore.ts
│ ├── musicStore.ts
│ └── playerStore.ts
├── types/ # TypeScript interfaces
│ └── music.ts
├── config/ # Configuration files
│ └── spotify.ts
└── utils/ # Utility functions
└── cn.ts
- React Native 0.76.7 with Expo SDK 53
- TypeScript for type safety
- Zustand for state management with AsyncStorage persistence
- React Navigation v7 for navigation
- NativeWind (Tailwind CSS) for styling
- React Native Reanimated v3 for animations
- Expo AV for audio playback
- Expo Auth Session for OAuth flows
- Expo Secure Store for token storage
- Welcome Screen: App introduction with "Get Started" button
- Login Screen: Spotify OAuth authentication
- Genre Preferences: Select up to 5 favorite genres (optional)
- Main App: Bottom tab navigation with 4 screens:
- Home: TikTok-style music feed with vibe mode selector
- Search: Search for tracks, artists, albums
- Playlists: View and manage Spotify playlists
- Profile: User info, liked songs, settings
- 🏋️ Gym Mode: High-energy, high BPM tracks
- 🌙 Chill Mode: Lo-fi, relaxing music
- 💔 Breakup Mode: Sad, emotional tracks
- 📚 Study Mode: Instrumental, focus music
- 🎉 Party Mode: EDM, dance, rap
- ✨ Custom Mode: AI-powered custom vibe descriptions
The app uses Spotify's audio features API to match tracks to vibe modes:
- Energy: Overall energy level (0.0 - 1.0)
- Valence: Musical positivity (0.0 - 1.0)
- Danceability: How suitable for dancing (0.0 - 1.0)
- Tempo: BPM of the track
- Instrumentalness: Likelihood of no vocals (0.0 - 1.0)
- Move Spotify Client Secret to backend service
- Implement proper token refresh mechanisms
- Add rate limiting and error handling
- Social features (follow friends, share tracks)
- Offline mode with cached tracks
- Advanced AI recommendations with OpenAI
- Push notifications for new music
- Analytics and user insights
- Implement track preloading
- Add image caching
- Optimize bundle size
- Add error boundaries
This is a demo implementation. For production use:
- Set up proper backend authentication
- Implement comprehensive error handling
- Add unit and integration tests
- Set up CI/CD pipeline
- Add analytics and crash reporting
This project is for educational purposes. Spotify is a trademark of Spotify AB.