Java dev ищет фронт deva для совместной разработки музыкального плеера


#1

Всем привет.

Мне не нравится, насколько негибки все нынешние музыкальные плееры. Скажем, у вас есть 2k песен и 20 плейлистов, теперь ситуация:

  • Хотите плейлист, который включает только песни из вашего «эпик» плейлиста, которые без слов? Сделайте новый, добавьте все песни вручную.

  • Хотите играть некоторые песни чаще / реже, чем другие? Бывает - лучшее, что вы можете сделать, это добавить песню несколько раз и поставить проигрывание на рандом.

  • Добавлено еще 15 песен в 8 разных папок? Переходите вручную по каждой и добавляйте ее ко всем плейлистам, которые подходят.

и т. д. Как кодер, это то, что я мог решить, поэтому я сделал прототип. Он отлично работает и решает проблемы, которые у меня были с другими плеерами неплохо, а также добавляет потенциал для некоторых приятных функций, таких как:

  • новизна песни: начинается с максимума, т.е. шанс играть сначала выше, а затем постепенно смешивается с другими;

  • точная статистика того, какие жанры вы слушали с течением времени;

  • тонкая настройка эквалайзера, громкости, скорости для каждой песни, если это необходимо;

  • возможно выставление рейтинга характеристика песен многими людьми (например, эта песня в среднем равна 7.2 “metal”, 5.4 “folk”, 8 “epic” …), хотя для этого нужно перейти от «выставление оценок песен для себя» к некоторой публичной модели.

Проблема заключается в том, что у этого прототипа есть интерфейс, который смогли сделать я и мой товарищ(в глубине души тестер), который написан на javaFX и он плох. Я намереваюсь сделать бэкэнд с нуля (для этого есть веские причины), но у меня нет почти никакого опыта в создании интерфейса, и весь плеер будет хреновым только из-за этого.

Так что, я ищу фронт-энд разраба(минимум состоявшийся джун+, извините ХэлоуВордщики!), который хотел бы попробовать себя в создании некоммерческого плеера с открытым исходным кодом.

Два слова по архитектуре: in-memory DB (например, h2), spring & rest api, для front-end есть несколько вариантов: любой js-фреймворк в Ionic + Cordova, или возможно в WebView javaFX; React native; просто js фреймворк в браузере; или что вам удобно(если это не javaFX).

Позже могут прийти AWS, Docker, CDN и многие другие умные слова, но это после того, как ядро ​​полностью сделано.

Вот репозиторий прототипа

Желателен хороший инглиш, доки/коменты на нём. Например -

Some more on how I resolve the main problems listed above.

Songs have properties(criterias was the original name, Crit in the code) - like rating, novelty etc. User can create new ones and assign them to songs; they’re also hierarchially structured. So, say, you have a Crit structure:

Metal -> (child) Power metal -> Symphonic power metal

Symphonic -> Symphonic power metal

(yes, multi-inheritance)

Then you make a playlist with filter, and set filter to Symphonic power metal >= 6 OR Metal > 9. Viola, only songs that have either some kind of metal >9 and songs that have Symphonic power metal more or equal 6 will be in that playlist. Want to add another filter - go ahead, the playlist will be reformed dynamically.

You can clone the playlist to new anonymous one, so say you want to just now listen to only wordless songs of your playlist N - just clone, add filter for wordless, and only songs that have that criteria will be shown.

That has a caveat of having to create the hierarchy of this properties(criterias) and assigning them to songs. Sure, it can take a lot of time - but only once. Also, if you have some new songs and want to show only them so you can assign some properties to them - a playlist with certain filters wil easily do.

Now, for different playing frequency: there’s a playback mod “weighed random”, which is like random, but the chance that song N will play next is determined by how well its properties match Flavor that accompanies the playlist. So, say, I make a flavor of (rating, NOT metal, epic) - the higher merks on those properties the song has, the more its chance to be played next(with a failsafe of cooldown for each song - so it doesn’t just repeat ad infinitum). It’s a simplified version, there’s actually a possibility to assign how influential will be a criteria to the final weight of the song. Mmmm, math…