I always get these "earworm" songs stuck in my head and can't remember the actual name of the song. It drives me nuts. I wish there was an easy way to quickly find a song based on the lyrics.
But... I'm picky. I don't like any of the existing hundred thousand lyrics search websites. They have too many ads, they're too slow, they have weird quirks and bad design. I want a custom experience that helps me find my song as quickly as possible. Ideally the website would take in a search query, then present as much context as possible about every result - the artist, the name of the song, the relevant lyrics, images of the artist / album cover, etc - in a format that allows me to review many results quickly until I find the thing I'm looking for.
- Your challenge is to create a music lyrics search website.
- The user must have an obvious method of entering a search query consisting of partial song lyrics.
- After submitting the search query, the application will display a set of song results, along with any context about the results that would help the user correctly identify the correct song as the "earworm".
- Extra Credit: Provide some method to play the song.
You should use some sort of pre-existing lyrics search service for this project. You can use any service you want, but we have a recommended APIs we have already vetted which is both functional and free to use
You can implement a server component as part of your solution if you prefer, but a server component is not required.
You can use React if you would like to make the project faster to implement.
We like clean, easy to use UIs. If you have design skills and want to show off, then by all means show us what you are capable of. However, we won't penalize you for a basic design as long as your application is easy to use. We are using this project primarily to evaluate your engineering aptitude, not your artistic ability.
Our interest isn’t in if you can solve this exercise, but how you solve it. We value quality software engineering practices and well-documented, understandable, maintainable, and tested code bases. These priorities are what we will be looking for out of the homework assignment.
Our advice is to use this project to show off your strengths, whether those be testing, documentation, design, performance analysis, clean maintainable code, etc. At the end of the day the purpose of this project is to serve as a starting point for a discussion, so don't be afraid to lean in to areas you are passionate about and make notes about the areas you skimmed over to save time.
The final deliverable should be in the form of a pull request against this repo. The pull request should include all required documentation to help us set up the program and use it. You should also include any tools or scripts you used to test it.
We know you are probably working on this project over the weekend or at night, when X engineers are hard at work in their underground caves building software and not checking their email. Therefore, if you hit a fork in the road in terms of requirements and you're not sure what we want in the solution, please just pick an option and document clearly the design tradeoff decision you made, and why.