rishikanthc / Scriberr

Self-hosted AI audio transcription
https://scriberr.app
MIT License
443 stars 17 forks source link

Simplify and improve event/state management #18

Open rishikanthc opened 2 weeks ago

rishikanthc commented 2 weeks ago

The current design of the app uses a slightly cumbersome method to handle events and states. Primarily, state changes are propagated via event bubbling which is supported by Svelte. This becomes quickly messy as you nest more components down deep as you have to propagate it up all the way to the top level component where the state change is handled.

Proposal

Using svelte custom stores would be a way more elegant approach to doing this. This way each component can independently update the require data and the store is refresh and all dependent components will auto update to the latest values.

Thoughts and ideas appreciated

ucffool commented 2 weeks ago

Might need to use the new CLI to auto-update the code base to Svelte5 runes to make that process a lot easier/possible. It was in the presentation but I can't find docs detailing the process.

rishikanthc commented 1 week ago

Yeah I was thinking about this too. But I'm concerned if it might be too early to switch to svelte5 considering it just released.
For eg. I'm using bits-ui framework which hasn't upgraded to svelte5 yet. So one line of thought is, it might be better to wait until libraries in the ecosystem start picking up svelte5 so we have better compatibility?

But you're right, svelte5 claims that it makes reactivity easier. So it might me worthwhile to first switch to svelte 5 and then fix this.