A web application developed in TypeScript, reworking the functionality of several audio hosting and sharing web pages, allowing users to upload their songs.
View Demo
The application is deployed using Docker, containerizing the backend, frontend, storage, and the server proxy, Nginx. More specifically, the application is written in TypeScript and powered by Node.js, utilizing NestJS for the backend, Svelte & Vite for the frontend, and MongoDB for data storage.
It emulates the functionality of briefly interacting with the content, such as giving likes or playing audio. Additionally, it emulates the sharing of a song, which involves uploading audio and image files that are sent to the server for storage and processing, similar to how a web application operates.
A live demo of this project is not available at this moment. This project may no longer be continued, but a video demonstration is available on YouTube:
You can reproduce this project on your preferred server, of course. All you need is a Linux-based system and Docker.
First clone the project and install it with NPM:
cd backend && sudo npm install && sudo npm audit fix
cd ..
cd frontend && sudo npm install && sudo npm audit fix
You may need to update the '.env' file, assuming you have a local SSL certificate and key; otherwise, create them:
sudo openssl req -nodes -new -x509 -keyout private.key -out certificate.crt -days 365
Create a '.keyfile' required to authenticate our database (replica set) against unauthorized access:
sudo openssl rand -base64 756 > mongo/.keyfile
# and, to avoid permission projects while building and copying the file between the system (not recommended for production)
sudo chmod 400 mongo/.keyfile && sudo chown 999:999 mongo/.keyfile
Then build the build the docker containers:
docker compose up -d
# then run it
docker run $(docker ps -a -q)
Done, your project should be running at HTTPS!
Distributed under the MIT License.
Guido Moran - [email protected]
Project Link: https://github.com/guidoow/Audiohost