This is a WIP project (that will receive total rewrite at some point in the future) - UltraStar songs scrapper from probably the biggest song database. I've done a similar project in past but I've always had a bigger idea for it and I finally have time and desire to do so.
Head over to http://localhost:3000/download and simply click the button to start seeding database
- Visit http://localhost:3000/connect to display the QR code
- Friends scan with their phones
- Instantly sync and download songs without setup hassle
This project is using bun as package manager alongside turborepo.
I have developed this project using [email protected], but any version above 1.2.4 would do.
Packages can be found in /packages
directory with the most notable being ultrastar-api
.
Make sure you have bun installed (min version 1.2.4
)
- Let's start with creating an account on usdb.animux.de.
- Create env file
cp apps/api/TEMPLATE.env apps/api/.env
- Go ahead and register a new account and save the credentials into
.env
file. - Make sure to install yt-dlp. It is necessary for automatic video downloading.
Then you need to install dependencies with bun i
and create database using bun db:push
To build the app use: bun run build
and then to start: bun start
.
To run application in development mode use bun dev
(not recommended for normal use).
For now, you have to downloads songs by yourself. In the future I will upload default database file, but it is over 200MB (mostly cover images).
To seed the database by yourself, start the application and head over to http://localhost:3000/download
and click button to automatically download songs metadata.
This can take some time (depending on your network speed, CPU, etc. should take between 5 to 20 minutes)
After that step is complete, head over to main page and enjoy your songs.
This Turborepo includes the following packages/apps:
Apps:
@ultrastar/api
: Backend API server using Elysia.js;@ultrastar/web
: Next.js application for frontend;
Packages:
@ultrastar/libs
: Shared libraries like Elysia's Eden connector;@ultrastar/ts-config
:tsconfig.json
s used throughout the monorepo;@ultrastar/types
: Custom types used throughout the project like pieces of TS Reset or API types;@ultrastar/ui
: UI design system using shadcn/ui;@ultrastar/ultrastar-api
: Scrapper API;@ultrastar/youtube-api
: Youtube API for downloading and searching videos;
Each package/app is 100% TypeScript (besides some configs, to be fixed).