Entities #
UML #
User #
Every user is considered an artist before they post, to encourage creation and participation in the platform. Before a user can publish paid resource packs, they need to get the Stripe onboarding done so that they can get paid.
Release #
A release is a list of tracks that are release together. it can be an EP, an Album, an LP, or a Single. Any released track has to be included in a release, There can be no stray track. A release has a cover art.
Track #
A track is a song, or.. well.. a track. This entity allows retrieving the audio file for reading purpose. There are one or several Track per Release.
Comment #
Uni-verse’s like/dislike system has the particularity to require a description justifying it. The idea behind this is to encourage constructive criticism.
ResourcePack #
Uni-verse allows sharing resource packs, containing samples and VST presets. This way, creators can exchange stems to inspire each other. Creating a resource pack can be very demanding and that’s why uni-verse allows people to sell their resource packs on the platform.
Resource #
A resource is an element of a resource pack. It ultimately is a file, whether it be a sample or a preset. It can be previewable or not, which allows having a peek at resource packs before buying them.
FpSearch #
A fingerprint search is any search that has been done by a user in uni-verse’s database. Keeping this allows making statistics. This could be implemented via Kafka in the future, for further efficiency.
Featuring #
A user can be linked to a track via this featuring
entity. This allows making sure that credits are rightfully given: it allows linking a track with everyone that has worked on it.
Playlist #
Users can create playlists, which point to different tracks. The usual playlist feature.
Transaction #
Transations means money transaction. It can be whether the purchasing of a resource, or a donation from a user to another (that has stripe onboarding done).