Cross-posting this comment from @paddatrapper Rewrite libretime · Issue #935 · libretime/libretime · GitHub
If we define a solid API, implement it in some framework and then work on replacing parts of the UI as we the functionality is developed, we probably will have more success. This also ensures that people can upgrade their instances without much risk. This is something I think we could use the OpenCollective for, even if we are only providing a small amount to a developer each month.
From next month I can commit at least about 4 hours a week to this. I would us to plan out an API first before we start implementing anything.
Kyle identified the following major areas of operation that LibreTime needs and asked for additional feedback.
- Library - this is a list of songs/podcasts/playlists (both smart and not) that forms the base of a show.
- Item - a file on the disk that has metadata associated with it. This could be a music file, a podcast episode, or an advert source. These are uploaded to the server by users.
- Podcast - an RSS feed of files that are downloaded regularly to the disk.
- Playlist - a list of files that will be played sequentially.
- Smartblock - a set of conditions that match 0 or more items that will create a playlist at some later point.
- Show - a list of playlists and items that will be played at a specific time. These can be linked together to form repeating shows. A show can be connected to a live source which associates with a user’s credentials.
- Advert Block - a point in time of one or more shows where 0 or more adverts can play.
- Advert Campaign - A list of advert sources that collectively have a start and end date and time. It also has an associated schedule of when which adverts should play. These are inserted into the relevant shows.
- User - an account that can log into the system. There are various permission levels that will grant the user access to different things.
- Live Source - a source of input that will be connected and streamed to.
- Destination - a streaming output from the system
Is there anything else the API should provide?