A smart, intelligent music player that learns from your listening habits and helps you discover music you'll actually enjoy. Built with modern web technologies and designed for both desktop and web use.
- Intelligent Playlist Management: The player learns from your skip patterns and adjusts recommendations accordingly
- Smart Skip Prediction: Uses machine learning to predict which songs you might skip
- Multi-Platform Support: Works as a desktop app (via webview) and web application
- Modern UI: Clean, responsive interface built with React and TypeScript
- PWA Support: Progressive Web App capabilities for mobile and desktop
- Local File Support: Play music directly from your local file system
- Keyboard Shortcuts: Full keyboard navigation and shortcuts for power users
This project consists of two main components:
- Client (
/client): React-based frontend with TypeScript, Vite, and PWA support - Server (
/server): Bun-based backend with webview integration for desktop app functionality
- Bun (recommended) or Node.js 18+
- Modern web browser
-
Clone the repository
git clone <your-repo-url> cd clever-music-player
-
Install dependencies
# Install client dependencies cd client bun install # Install server dependencies cd ../server bun install
-
Run the application
# Terminal 1: Start the client cd client bun run dev # Terminal 2: Start the server (desktop app) cd server bun run dev
- Open your browser and navigate to
http://localhost:5173 - Add your music folder using the file browser
- Start playing and let the AI learn your preferences
- The server will automatically open a desktop window
- The app runs in a native webview for better performance
- Supports all the same features as the web version
cd client
bun run dev # Start development server
bun run build # Build for production
bun run lint # Run ESLint
bun run preview # Preview production buildcd server
bun run dev # Development mode with dev tools
bun run prod # Production mode
bun run buildClient # Build client and copy to serverdev: Start development server with hot reloadbuild: Build for productiondeploy: Deploy to docs folderbuildDeploy: Build and deploy in one commandlint: Run ESLint checkspreview: Preview production build
devEnv: Set development environmentprodEnv: Set production environmentdev: Run in development modeprod: Run in production modecopy: Copy built client to serverbuildClient: Build client and copy to server
- React 19 with TypeScript
- Vite for fast development and building
- Tailwind CSS for styling
- Lucide React for icons
- PWA support with Workbox
- Bun runtime for performance
- Webview-bun for desktop app functionality
- TypeScript for type safety
- music-metadata: Audio file metadata extraction
- clsx: Conditional CSS classes
- react-hot-toast: Toast notifications
clever-music-player/
├── client/ # React frontend application
│ ├── src/
│ │ ├── actions/ # Application actions and state management
│ │ ├── components/ # React components
│ │ ├── utils/ # Utility functions and hooks
│ │ └── App.tsx # Main application component
│ ├── public/ # Static assets
│ └── package.json # Frontend dependencies
├── server/ # Bun backend with webview
│ ├── index.ts # Main server entry point
│ └── package.json # Backend dependencies
└── README.md # This file
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some 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.
If you encounter any issues or have questions, please:
- Check the existing issues
- Create a new issue with detailed information
- Include your operating system and version information
Happy listening! 🎧