Update from obsidian - thinkpad

Affected files:
projects/personal-page-notes/Dev Stack.md
projects/project-deas.md
projects/radio.md
projects/todos.md
This commit is contained in:
Alexander Navarro 2023-09-28 19:37:00 -03:00
parent b5a88b86a7
commit 74f2cf9e49
4 changed files with 56 additions and 3 deletions

View file

@ -1,2 +1,50 @@
| Type | Tech |
| -------- | -------- | # Project Radio
- En primera instancia utilizar librerías de apoyo para cosas demasiado complejas, especificas o que requieran mucha investigación para poder tener algo funcional en poco tiempo. Luego ir remplazando estas librerías por código propio
## Music Player - Juno
Code name: Juno, like Fuuka's ultimate persona, that she use to communicate with the others
Este servicio debe ser **solo** un reproductor de música, Debe poder funcionar de manera independiente, y poder integrar distintos frontends para un futuro
Features:
- Lenguaje: Rust, que sea lo más eficiente posible para manejar posibles colas de miles de elementos y poder modificar estas colas rápidamente.
- Interacción con MPRIS
- Audio Input:
- Local file
- Remote stream?? -> Youtube lofi re-stream for example
- Audio Output:
- Localmente
- Strimear por red
- Funcionalidad cliente - servidor dinámica. Al iniciar el proceso, se deberá revisar si el socket provisto (el por defecto o custom) está corriendo ya un servidor de Juno, de ser el caso el proceso se ejecutará en modo "cliente", del contrario se ejecutará en modo "servidor"
- Modo servidor:
- Al invocarse abrirá un socket en la máquina, por defecto será un socket de unix a no ser que se especifique (un path para crar un socket en especifico o un puerto para escuchar en red)
- Por defecto el proceso terminará al terminar de reproducir todos los elementos en la cola, como es un server se pueden añadir más elementos mientras el proceso no haya terminado
- Debe tener un modo "daemon" en donde el proceso no termine al finalizar la cola y se quede esperando nuevas instrucciones
- Al iniciar el proceso en modo "daemon", se debe pasar un path (por variable de entorno o como parametro del flag "daemon") para solo poder reproducir canciones dentro de este path. Esto reducirá problemas cuando un cliente quiera agregar elementos
- El servidor debe tener una manera de entregar las canciones disponibles en el path especificado
- Modo cliente:
- Puede ejecutar modificaciones sobre la cola, operaciones básicas de un reproductor de música (play-pause, next, prev, add, remove, etc)
- Comunicación entre cliente - Servidor con gRPC
## Cliente, Frontend y orquestador - Fuuka
Code name: Fuuka, the navi of SEES, you can ask her to change the musing in tartarus.
Este servicio será el encargado de orquestrar la música con el servidor.
- Debido a la funcionalidad de indexación, es necesario un lenguaje de backend eficiente
- Rust
- Go
- Mantener una DB:
- Debe poder indexar una carpeta y todas las subcarpetas recursivamente para obtener una lista de canciones con su path y otros
- Si Juno lo soporta, lista de fuentes remotas para re-strimear, con un botón de acceso rápido (como youtube lofi or synthwave streams)
- Almacenar playlist junto con su programación
- Scheduler:
- Correr escaneo e indexación cada x tiempo
- Ejecutar programación de playlists
- Se debe maneter el frontend actualizado en todo momento en cuanto cambien los datos del servidor de Juno:
- NextJS puede realizar actualización de UI dinámicamente, pero esto nos añade un 3 servicio
- Web sockets creo que deberían bastar, implementados en Vanilla JS del lado del cliente

View file

@ -8,6 +8,8 @@ kanban-plugin: basic
- [ ] Game recomendations for non gamers - [ ] Game recomendations for non gamers
- [ ] TUI Database Admin - [ ] TUI Database Admin
- [ ] Create a hack for an old game
- [ ] Create a Simple web server
## Discarted ## Discarted

View file

@ -6,7 +6,7 @@ kanban-plugin: basic
## Reference ## Reference
- [ ] [Dev Stack](Dev%20Stack.md) - [ ] [Dev Stack and definitions](Dev%20Stack.md)
- [ ] Features<br>* Docker Service<br>* REST API<br>* Web UI<br>* HTTP Audio Stream<br>* File Scan to get the path to audio files<br>* Playlists<br>* Schedule Playlists<br>* Repeat Schedule<br>* upload files? - [ ] Features<br>* Docker Service<br>* REST API<br>* Web UI<br>* HTTP Audio Stream<br>* File Scan to get the path to audio files<br>* Playlists<br>* Schedule Playlists<br>* Repeat Schedule<br>* upload files?
- [ ] Similar projects<br>* [Navidrome](https://www.navidrome.org)<br>* [Azuracast](https://www.azuracast.com/)<br>* [Cadence](https://github.com/kenellorando/cadence) (Use Icecast and Liquidsoap)<br>* [forte](https://github.com/kaangiray26/forte) - [ ] Similar projects<br>* [Navidrome](https://www.navidrome.org)<br>* [Azuracast](https://www.azuracast.com/)<br>* [Cadence](https://github.com/kenellorando/cadence) (Use Icecast and Liquidsoap)<br>* [forte](https://github.com/kaangiray26/forte)

View file

@ -18,6 +18,7 @@ kanban-plugin: basic
- [ ] Add second config neovim config exclusive for markdown notes? - [ ] Add second config neovim config exclusive for markdown notes?
- [ ] Escribir procedimiento de crear una nueva funcionalidad<br>Agregar como nombrar cosas<br>Referenciar resolucion de problemas<br>#wiki - [ ] Escribir procedimiento de crear una nueva funcionalidad<br>Agregar como nombrar cosas<br>Referenciar resolucion de problemas<br>#wiki
- [ ] [The cult of the done](https://www.youtube.com/watch?v=bJQj1uKtnus)<br>#wiki - [ ] [The cult of the done](https://www.youtube.com/watch?v=bJQj1uKtnus)<br>#wiki
- [ ] Settear formateo remoto en dispositivos android
## Need Research ## Need Research
@ -33,6 +34,8 @@ kanban-plugin: basic
- [ ] Override methods on Typescript - [ ] Override methods on Typescript
- [ ] Investigate and try git worktree in work projects - [ ] Investigate and try git worktree in work projects
- [ ] [Escritorio](Escritorio.md) - [ ] [Escritorio](Escritorio.md)
- [ ] LogSeq (Obsidian Fork)
- [ ] Como mantener el codigo limpio mientras lo escribo
## Waiting for... ## Waiting for...