LyricConverter is a project I've built and improved, on and off, for years. It was made to extract song data and lyrics from many popular lyric display software packages and convert them to other formats. Many of these software packages do not have great import/export tools so I wanted to build something to help people keep their song libraries as they migrated to new software.

LyricConverter will take raw file input by dragging files into the browser or manually choosing files, extract all relevant song information from 8 different input file formats to get them into a standard format used internally. Then the songs are converted into one of the 6 possible output formats the user can select, or they can simply view the song information right there on the site. If a file output format is chosen, the user can choose to download the files as a compressed .zip file or as individual files.

All of the file parsing, extraction, creation, and saving takes place client side within the Angular app nearly instantaneously, even for hundreds of songs at once!

Originally written in PHP many years ago, I rewrote it all with client side JavaScript libraries. In recent years this code became cumbersome and difficult to manage or improve upon. I recently completely rewrote it in TypeScript with Angular 16, and it is now extremely maintainable and easier to improve upon. It has 200+ unit tests to ensure code quality with over 99% code coverage. Code linting rules are enforced, and github actions will enforce these code quality tools are run when anyone makes a pull request.

It also has as CI/CD deployment script on github so that any changes pushed from git are automatically built and deployed to this live site. Since it's only a javascript single-page-app it is just hosted on Github pages as it does not require any server-side resources.

If you'd like to see more images and read about the UI design you can see it in the design section.