A modern web interface for publishing lyrics to the LRCLIB database. Built with Svelte and TailwindCSS.
- Clean, user-friendly interface for submitting lyrics
- Support for both plain and synced (LRC) lyrics
- LRC file upload and parsing
- Proof-of-work challenge system to prevent spam
- Real-time submission progress tracking
- Form validation and error handling
- Responsive design
- Svelte + TypeScript
- TailwindCSS for styling
- Web Workers for proof-of-work computation
- Rust for proof-of-work challenge generation
The application handles the following data fields:
- Track Name (required)
- Artist Name (required)
- Album Name (optional)
- Duration in seconds (optional)
- Plain Lyrics
- Synced Lyrics (LRC format)
A user can either fill in the fields manually or upload an LRC file to auto-fill the form.
- Implements a challenge-response mechanism
- Uses Web Workers for background computation
- Real-time progress tracking with hash rate display
- Supports .lrc file uploads
- Automatic parsing of LRC metadata and lyrics
- Auto-fills form fields from LRC metadata
Integrates with LRCLIB API endpoints:
/api/request-challenge- Gets proof-of-work challenge/api/publish- Publishes lyrics with solved challenge token
- Fill in the required track and artist information
- Add lyrics either by:
- Pasting plain lyrics
- Pasting synced lyrics in LRC format
- Uploading an LRC file
- Click "Publish Lyrics" to submit
- Wait for the proof-of-work challenge to complete
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build- Publishing requires solving a proof-of-work challenge which may take several minutes
- Both lyrics fields can be left empty for instrumental tracks
- The interface provides real-time feedback during the publishing process
- Form data is validated before submission
GPL-3.0 License
Powered by BetterLyrics - A browser extension for enhanced lyrics display on YouTube Music.