Badila's Music Archive is a platform where you can explore and discover (soon you'll also be albe to add) music albums and artists, whether you prefer the new wave or the classics.
It started with more than 50 albums, 20 artists and it continues to grow with you.
The project aims to become a dynamic hub where music enthusiasts can share what they love to listen with the community.
The homepage is featuring sections like New Releases, Trending artists, and a search bar you can use to explore the archive. It highlights dynamic data fetched from the database, presented using an autoplay slider for a visually engaging experience.The New Releases section updates when music albums with a release date closer to present day are added to the archive.
Trending artists section updates as you visit different artists' pages, like this one. This action increments the artist's popularity rating.
You can find all artists displayed on a single page and use the sorting options as you like.
Or you can go straight to the Albums page.
By visiting a music album, you increase their 'times listened' score, so you can see different results when sorting the albums by 'Most played' after you navigate through the albums.
Other options to discover music albums are the Genres page:
The Labels page:
or the search bar - which returns both albums and artists based on your input, even if it is incomplete.
Backend: Node.js & Express.js
Frontend: EJS as templating language, to generate HTML with plain JS and & custom CSS for styling
Database: PostgreSQL for structured data management.
Deployment: Railway for hosting both the application and the database
Other tools & mentions:
- npm for dependency management and for using different modules like node-fetch - which brings Fetch API to Node.js.
- MediaWiki Action API for fetching and displaying the INTRO section insinde an album page and also the ABOUT section inside an artist page.
I didn't want to use an API for fetching the music albums / artists / genres or labels for a few reasons:
- I wanted to have full control when it comes to the information that I'm displaying, whether we're talking about the artists'/albums' names or an album cover. It was a lot of work and research just to find and select the perfect picture for each of them, but in the end, if I wouldn't have been passionate about music, I wouldn't have built this project at all.
- it was a great exercise to think what I want and need to happen inside the app, and then design the database schema that fits my needs.
- every API has its limitations and its risks - so I decided that I'm going to work in order to be able to serve myself the info that I'll be using; speaking about risks, I didn't want to develop this project around an API that may not be live one day.
You can browse my other repos to see what I've been working on lately or you can connect with me on linkedin and say hi if you want.