Affected files: 01. Projects/Electronic Mantainance/.gitignore 01. Projects/Electronic Mantainance/List of electronics.md 01. Projects/Juno/Queue stored in memory.md 01. Projects/Juno/README.md 01. Projects/Mental Health/Therapy/Session 005 24-05-03.md 02. Areas/Escape Latam/Comparación de Paises.md 03. Resources/Projects Ideas/mini-strap.md 04. Periodic/03. Monthly/2024-03.md 97. Ideas/Frontmatter query language (idea)/README.md 97. Ideas/Fuuka desktop client/README.md 97. Ideas/Migrate to Zellij (Someday)/Migrate to zellij.md 97. Ideas/Phisics Engine (idea)/README.md 97. Ideas/Setup Shell (Someday)/Setup shell.md 97. Ideas/Spotify Playlist Intersection (idea)/README.md 98. Holds/Escape Latam (hold)/Canada.md 98. Holds/Escape Latam (hold)/Comparación de Paises.md 98. Holds/Escape Latam (hold)/English Certification.md 98. Holds/Escape Latam (hold)/Escapar de Latam.md 98. Holds/Escape Latam (hold)/New Zeldand.md 98. Holds/Página Personal (hold)/Carta de presentación.md 98. Holds/Página Personal (hold)/Components/Lightbox.md 98. Holds/Página Personal (hold)/Components/TOC.md 98. Holds/Página Personal (hold)/Components/Table.md 98. Holds/Página Personal (hold)/Content.md 98. Holds/Página Personal (hold)/Pages/Landing Page.md 98. Holds/Página Personal (hold)/Pages/Landing Page.pdf 98. Holds/Página Personal (hold)/Pages/Portafolio List.md 98. Holds/Página Personal (hold)/Portfolio/Piloto Go.md 98. Holds/Página Personal (hold)/README.md 99. Archives/Neardearla 2024/13 consejos de Senior que le daría a mi yo Junior.md 99. Archives/Neardearla 2024/Construyendo Bajo Presión cómo armar el primer MVP de tu startup en 2024.md 99. Archives/Neardearla 2024/Código con corazón mejores prácticas de FrontEnd para encantar a tu UX.md 99. Archives/Neardearla 2024/Cómo Elegir la Base de Datos Adecuada para Tu Proyecto Una Guía entre SQL y NoSQL.md 99. Archives/Neardearla 2024/Cómo evolucionar profesionalmente en tecnología sin perder tu chispa de programar.md 99. Archives/Neardearla 2024/Desarrollo de pruebas unitarias asistido por IA.md 99. Archives/Neardearla 2024/Desde la Web al Escritorio - Tauri.md 99. Archives/Neardearla 2024/Fortaleza Digital Construyendo un Futuro Seguro con Desarrollo de Software Resiliente.md 99. Archives/Neardearla 2024/La Belleza del programa, la Felicidad del Programador.md 99. Archives/Neardearla 2024/Pasted image 20240411191813.png 99. Archives/Neardearla 2024/Pasted image 20240411192942.png 99. Archives/Neardearla 2024/Pasted image 20240413105402.png 99. Archives/Neardearla 2024/Pasted image 20240413113310.png 99. Archives/Neardearla 2024/Pasted image 20240413113444.png 99. Archives/Neardearla 2024/Pasted image 20240413113655.png 99. Archives/Neardearla 2024/Pasted image 20240413131457.png 99. Archives/Neardearla 2024/Pasted image 20240413131624.png 99. Archives/Neardearla 2024/Pasted image 20240413141003.png 99. Archives/Neardearla 2024/Pasted image 20240413161221.png 99. Archives/Neardearla 2024/Pasted image 20240413162105.png 99. Archives/Neardearla 2024/Pasted image 20240414131547.png 99. Archives/Neardearla 2024/Pasted image 20240414133536.png 99. Archives/Neardearla 2024/Pasted image 20240414133556.png 99. Archives/Neardearla 2024/Pasted image 20240414133649.png 99. Archives/Neardearla 2024/Pasted image 20240414133802.png 99. Archives/Neardearla 2024/Pasted image 20240414133818.png 99. Archives/Neardearla 2024/Pasted image 20240414133924.png 99. Archives/Neardearla 2024/Pasted image 20240414133957.png 99. Archives/Neardearla 2024/Pasted image 20240414134055.png 99. Archives/Neardearla 2024/Patrones de diseño el arma secreta de los desarrolladores expertos.md 99. Archives/Neardearla 2024/Que la fuerza de los gráficos te acompañe Aprende a dominar la visualización de datos.md 99. Archives/Neardearla 2024/Sincronización Perfecta Comunicación entre Microservicios con TypeScript y NestJs.md 99. Archives/Neardearla 2024/¿Por qué nos subestimamos? Guía práctica para negociar tu salario de forma efectiva.md
61 lines
No EOL
2.6 KiB
Markdown
61 lines
No EOL
2.6 KiB
Markdown
---
|
|
created: 2024-03-26 16:02
|
|
updated: 2024-03-26 16:09
|
|
status: Backlog
|
|
---
|
|
# Juno
|
|
|
|
## Resources
|
|
|
|
- [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)
|
|
- [Music Player (written in Rust)](https://github.com/tsirysndr/music-player/)
|
|
- [fd](https://github.com/sharkdp/fd) (for filesystem walking)
|
|
- [global config in rust](https://github.com/PhilipDaniels/rust-config-example)
|
|
- [Bind unix port in hyper server]([https://github.com/hyperium/hyper/issues/2102](https://github.com/hyperium/hyper/issues/2102))
|
|
|
|
## [Kickoff](Project%20checklists.md#Kickoff)
|
|
|
|
### Completion Criteria
|
|
|
|
This project will be completed when:
|
|
|
|
Have a working CLI music player with the following features:
|
|
- [ ] Play local files or remote streams (like youtube streams).
|
|
- [ ] Local or remote (HTTP) audio output.
|
|
- [ ] [MPRIS](https://wiki.archlinux.org/title/MPRIS) support
|
|
- [ ] Dynamic server-client design:
|
|
- [ ] On start it attach to a socket, a local unix file socket (default) or a port to allow for remote connections ([MPD](https://wiki.archlinux.org/title/Music_Player_Daemon) like).
|
|
- [ ] If a second instance is invoque on the same socket, it will act as a client to the process running on that socket, allowing to modify the playback and exiting immediately ([MPC](https://www.musicpd.org/clients/mpc/) like).
|
|
- [ ] By default the server process will end when the queue is empty unless it's ran in _"daemon"_ mode. This allows to continue using the clients to add more music later.
|
|
|
|
### Brainstorm
|
|
|
|
Regarding the Client-Server setup:
|
|
- In _"daemon"_ mode, a path is needed so the server knows where to find the music. The clients can only add files from that path.
|
|
- The server needs an endpoint to return the available songs under the provided path.
|
|
- The server needs an endpoint that return the current information of the playback
|
|
- The communication between client / other front ends and server is with gRPC
|
|
|
|
The queue should have a soft limit and a hard limit.
|
|
- Soft Limit: Cannot add more than this limit, it's also the same limit when quering the current queue.
|
|
- Hard limit: The actual limit of the query, items above this limit are truncated.
|
|
|
|
I don't remember why but this was important and useful.
|
|
|
|
Para hacer la primera operación en el server, puedo hacer un nuevo thread (con tokio ojalá) e instanciar un cliente que haga la petición.
|
|
## [Outtakes](Project%20checklists.md#Completion)
|
|
|
|
### Was the goal archived?
|
|
|
|
Yes/No, because of...
|
|
|
|
### What did go well?
|
|
|
|
- Item
|
|
|
|
### What did go wrong?
|
|
|
|
- Item |