diff --git a/projects/personal-page-notes/Dev Stack.md b/projects/personal-page-notes/Dev Stack.md index 385d667..f0c9d79 100644 --- a/projects/personal-page-notes/Dev Stack.md +++ b/projects/personal-page-notes/Dev Stack.md @@ -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 \ No newline at end of file diff --git a/projects/project-deas.md b/projects/project-deas.md index 457564e..fb333c9 100644 --- a/projects/project-deas.md +++ b/projects/project-deas.md @@ -8,6 +8,8 @@ kanban-plugin: basic - [ ] Game recomendations for non gamers - [ ] TUI Database Admin +- [ ] Create a hack for an old game +- [ ] Create a Simple web server ## Discarted diff --git a/projects/radio.md b/projects/radio.md index 9ae96b7..04f2980 100644 --- a/projects/radio.md +++ b/projects/radio.md @@ -6,7 +6,7 @@ kanban-plugin: basic ## Reference -- [ ] [Dev Stack](Dev%20Stack.md) +- [ ] [Dev Stack and definitions](Dev%20Stack.md) - [ ] Features
* Docker Service
* REST API
* Web UI
* HTTP Audio Stream
* File Scan to get the path to audio files
* Playlists
* Schedule Playlists
* Repeat Schedule
* upload files? - [ ] 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) diff --git a/projects/todos.md b/projects/todos.md index 249c778..24e3bf6 100644 --- a/projects/todos.md +++ b/projects/todos.md @@ -18,6 +18,7 @@ kanban-plugin: basic - [ ] Add second config neovim config exclusive for markdown notes? - [ ] Escribir procedimiento de crear una nueva funcionalidad
Agregar como nombrar cosas
Referenciar resolucion de problemas
#wiki - [ ] [The cult of the done](https://www.youtube.com/watch?v=bJQj1uKtnus)
#wiki +- [ ] Settear formateo remoto en dispositivos android ## Need Research @@ -33,6 +34,8 @@ kanban-plugin: basic - [ ] Override methods on Typescript - [ ] Investigate and try git worktree in work projects - [ ] [Escritorio](Escritorio.md) +- [ ] LogSeq (Obsidian Fork) +- [ ] Como mantener el codigo limpio mientras lo escribo ## Waiting for...