πΆ MusicBrainz Song Search, powered by Typesense
This is a demo that showcases some of Typesense's features using a 32 Million database of songs.
View it live here: songs-search.typesense.org
Tech Stack
This search experience is powered by Typesense which is a blazing-fast, open source typo-tolerant search-engine. It is an open source alternative to Algolia and an easier-to-use alternative to ElasticSearch.
The songs dataset is from MusicBrainz which is an open music encyclopedia that collects music metadata and makes it available to the public. Please contribute to it if you're able to!
The app was built using the Typesense Adapter for InstantSearch.js and is hosted on DigitalOcean's App Platform.
The search backend is powered by a geo-distributed 3-node Typesense cluster running on Typesense Cloud, with nodes in Oregon, Frankfurt and Mumbai.
Repo structure
src/
andindex.html
- contain the frontend UI components, built with Typesense Adapter for InstantSearch.jsscripts/indexer
- contains the script to index the MusicBrainz data into Typesense.scripts/data
- contains a 1K sample subset of the MusicBrainz songs database. But you can download the full dataset from their website.scripts/benchmarking
- contains a k6 script to load test the Typesense Server.
Development
To run this project locally, install the dependencies and run the local server:
npm install -g parcel-bundler # Need to use NPM for this: https://github.com/parcel-bundler/parcel/issues/1036#issuecomment-559982275
yarn
yarn run typesenseServer
ln -s .env.development .env
BATCH_SIZE=1000 yarn run indexer
yarn start
Open http://localhost:3000 to see the app.
Deployment
The app is hosted on DigitalOcean App Platform.
Pushing to master will deploy the app to production.