Leanius is an embeddable web player that lets you create accounts, upload audio files, and automatically fetch lyrics using song metadata. Test and sync lyrics with music in real-time, then embed the player anywhere on your website to randomly play audio tracks with synchronized lyrics. Customize colors and styles to match your brand.
- Account Creation & Management: Create user accounts to manage your music library
- Audio Upload: Upload audio files to your personal library
- Automatic Lyrics Fetching: Automatically retrieves lyrics using song metadata
- Lyrics Synchronization: Real-time lyrics syncing with audio playback
- Animation Testing: Test and preview lyrics animation before embedding
- Web Embed: Embed the player anywhere on your website with a single snippet
- Random Playback: Randomly plays audio tracks from your library
- Customizable Styling: Change colors, fonts, and styles to match your website design
- Responsive Design: Works seamlessly across desktop and mobile devices
- Clone the repository:
git clone https://github.com/7meninn/Leanius.git
cd Leanius- Install dependencies:
npm install- Start the development server:
npm run dev- Visit the Leanius app
- Sign up with your email and password
- Verify your account through email
- Log in to your account
- Navigate to the "Upload" section
- Select audio files from your device
- The system will automatically fetch lyrics using the file's metadata
- Go to the "Test" section
- Select an uploaded track
- Play the track and adjust lyrics timing if needed
- Preview the animation and syncing in real-time
- Navigate to "Embed" section
- Copy the embed code snippet
- Paste it into your website's HTML:
<iframe
src="https://leanius.app/embed?user=YOUR_USER_ID"
width="100%"
height="500"
frameborder="0"
allowfullscreen>
</iframe>You can customize the player appearance using query parameters:
<iframe
src="https://leanius.app/embed?user=YOUR_USER_ID&primaryColor=%23FF5733&backgroundColor=%23000000"
width="100%"
height="500"
frameborder="0"
allowfullscreen>
</iframe>Available customization options:
primaryColor: Main player color (hex code)backgroundColor: Player background color (hex code)textColor: Text color (hex code)playlistMode: Display mode ('grid', 'list', 'carousel')autoplay: Auto-play on load (true/false)
- Frontend: React, TypeScript
- Backend: Node.js, Express
- Database: MongoDB
- Audio Processing: Web Audio API
- Lyrics Fetching: Integration with lyrics APIs
- Styling: CSS-in-JS, TailwindCSS
Leanius/
├── public/ # Static assets
├── src/
│ ├── components/ # React components
│ ├── pages/ # Page components
│ ├── services/ # API services
│ ├── utils/ # Utility functions
│ ├── styles/ # Global styles
│ └── types/ # TypeScript types
├── server/ # Backend server code
├── package.json
├── README.md
└── LICENSE
POST /api/auth/register- Create new accountPOST /api/auth/login- Login userPOST /api/auth/logout- Logout userGET /api/user/profile- Get user profile
POST /api/upload- Upload audio fileGET /api/tracks- Get user's tracksDELETE /api/tracks/:id- Delete trackGET /api/lyrics/:trackId- Get track lyricsPUT /api/lyrics/:trackId- Update lyrics timing
GET /api/embed/:userId- Get embed configurationPUT /api/embed/:userId- Update embed settings
Create a .env file in the root directory:
REACT_APP_API_URL=http://localhost:3001
REACT_APP_LYRICS_API_KEY=your_lyrics_api_key
DATABASE_URL=mongodb://localhost:27017/leanius
JWT_SECRET=your_jwt_secret
NODE_ENV=developmentnpm run testnpm run buildnpm run lint
npm run formatContributions are welcome! Please follow these steps:
- Fork the repository
- Create a 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
- Advanced lyrics editor with precise timing controls
- Support for multiple lyrics providers
- Playlist collaboration features
- Analytics dashboard
- Social sharing features
- Mobile app (React Native)
- Offline playback support
- Advanced theme customization engine
- Lyrics fetching may fail for very new or obscure songs
- Embedding player in cross-origin iframes may require CORS configuration
- Mobile Safari has limitations with Web Audio API
For support, email [email protected] or open an issue on GitHub.
This project is licensed under the MIT License - see the LICENSE file for details.
- Special thanks to [lyrics-api] for lyrics data
- Web Audio API documentation
- Community contributors and feedback
Made with ❤️ by the Leanius Team