A modern web application built with React and TypeScript that enables users to seamlessly manage and transfer their music libraries between Spotify and Apple Music. Featuring a beautiful, responsive UI that adapts to each platform's design language, robust authentication handling, and comprehensive music library management capabilities.
-
Spotify Integration
- OAuth-based authentication
- Access to playlists, liked songs, and user profile
- Comprehensive playlist management
- Metadata export functionality
-
Apple Music Integration
- MusicKit JS integration
- Library access and playlist management
- Native platform design aesthetics
- Seamless platform switching with animated transitions
- Responsive design optimized for all devices
- Platform-specific styling that matches each service's design language
- Infinite scroll for large music libraries
- Create and manage playlists
- Search and filter functionality
- Sort by various criteria (name, tracks, artists, albums)
- Batch operations support
- Export playlist metadata to CSV
- Download track information in JSON format
- Comprehensive metadata fields support
- Node.js (v16 or higher)
- Spotify Developer Account
- Apple Developer Account with MusicKit access
- Modern web browser
Create a .env
file in the root directory with the following variables:
VITE_SPOTIFY_CLIENT_ID=your_spotify_client_id
VITE_REDIRECT_URI=your_redirect_uri
VITE_API_URL=your_api_url
# Clone the repository
git clone https://github.com/elmelz6472/spotify-apple-music-transfer.git
# Navigate to project directory
cd spotify-apple-music-transfer
# Install dependencies
npm install
# Start development server
npm run dev
src/
├── components/
│ ├── animations/ # Transition and animation components
│ ├── appleMusic/ # Apple Music specific components
│ ├── header/ # Header components for different views
│ ├── layout/ # Layout components
│ ├── navigation/ # Navigation components
│ ├── playlists/ # Playlist related components
│ ├── search/ # Search components
│ ├── spotify/ # Spotify specific components
│ └── tracks/ # Track related components
├── hooks/ # Custom React hooks
├── interfaces/ # TypeScript interfaces
├── enums/ # TypeScript enums
├── fetch/ # API fetch utilities
├── icons/ # Custom icon components
├── App.tsx # Main application component
└── config.ts # Application configuration
- React 18
- TypeScript
- Vite
- React Router v6
- TanStack Query (React Query)
- Framer Motion
- Tailwind CSS
- Spotify Web API
- Apple Music API (MusicKit JS)
- Axios
- Lucide React Icons
- Recharts
- Shadcn/ui
- Spotify: OAuth 2.0 with automatic token refresh
- Apple Music: MusicKit JS authorization with developer token
const { mode, isTransitioning, toggleMode } = useAppMode();
Seamless transition between platforms with animation support and state persistence.
const {
selectedTracks,
isSaving,
playlistName,
createPlaylist
} = usePlaylistCreation(token);
Comprehensive playlist creation and management with metadata support.
const {
searchResults,
isSearching,
searchTerm,
setSearchTerm
} = useTrackSearch(token);
Real-time search with debouncing and efficient cache management.
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
# Type checking
npm run typecheck
- Create necessary interfaces in
/interfaces
- Add required API methods in
/fetch
- Create new components in appropriate directories
- Update relevant hooks in
/hooks
- Add routes if needed in
App.tsx
- Fork the repository
- Create your feature branch:
git checkout -b feature/amazing-feature
- Commit your changes:
git commit -m 'Add amazing feature'
- Push to the branch:
git push origin feature/amazing-feature
- Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Your Name - @yourtwitter - [email protected]
Project Link: https://github.com/elmelz6472/spotify-apple-music-transfer