fuuka/README.md
2023-12-23 18:34:25 -03:00

53 lines
2.3 KiB
Markdown

# Fuuka
## Introduction
This is the web interface for [Juno](https://codeberg.org/aleidk/juno), a music
player. This service is in charge of orquestrate the music playback and
schedule of the player, manually and automatically.
## Features:
- Listen to Juno's music stream in a public page, this is a radio like stream that will be the same wherever you open it.
- Recoursive folder indexation for music files.
- Add remote music streams, like youtube lives.
- Create, edit and delete playlist with the indexed files.
- Create schedules for the playlists:
- Set playlist to autoplay at a specific dates and time.
- Create custom schedules like _"every day"_, _"on weekdays"_, _"every monday"_, etc.
- Choose a specific playlist or a random from a category.
## FAQ
### Why Rust?
A core requirement is to index and handle a masive collection of music, so the
project needs an efficient backend language. By the quote I read somewhere of
_"un-optimized Rust code is faster than optimized Go code"_, I decided to use
Rust.
### Why the name?
#### TLDR
The name comes from [Fuuka Yamagishi](https://megamitensei.fandom.com/wiki/Fuuka_Yamagishi), a character from Persona 3.
#### Long Version
One of my first projects was a discord bot that acted as a frontend of [MPD](https://wiki.archlinux.org/title/Music_Player_Daemon)
while also played the HTTPS stream in the voice call. I called the bot fuuka
because you actually have to talk to the bot to ask for music. This is the 3rd
iteration of the idea (and hopefully the definitive), so I decided to maintain
the name in it's honor.
The project was split into 2 though:
- [Fuuka](https://megamitensei.fandom.com/wiki/Fuuka_Yamagishi), the navi of SEES in Persona 3, you can ask her to change the musing in tartarus. It act as the frontend to interact with the player.
- [Juno](https://megamitensei.fandom.com/wiki/Juno), the persona of Fuuka that grants her the ability to communicate telepatically to her teamates. It act as the music player.
## Similar projects
- [Navidrome](https://www.navidrome.org)
- [Azuracast](https://www.azuracast.com/)
- [Cadence](https://github.com/kenellorando/cadence) (Use Icecast and Liquidsoap)
- [forte](https://github.com/kaangiray26/forte)
- [Simple MPD in Rust](https://dev.to/tsirysndr/how-i-built-a-simple-music-player-daemon-in-rust-with-a-cliweb-ui-51e0)