For those interested in the architecture: I use dependency injection at build time to share ~95% of code between desktop and web versions. Instead of maintaining separate codebases, I detect the platform and inject the appropriate service implementations.
The three-layer architecture has been particularly helpful:
Voice-activated mode is particularly nice when coding—you can keep your hands on the keyboard while dictating. The Svelte 5 runes + TanStack Query combination has been fantastic for managing real-time audio state.
For those interested in the architecture: I use dependency injection at build time to share ~95% of code between desktop and web versions. Instead of maintaining separate codebases, I detect the platform and inject the appropriate service implementations.
The three-layer architecture has been particularly helpful:
- Services: https://github.com/braden-w/whispering/tree/main/apps/app/sr...: Pure functions with platform abstraction, no UI dependencies
- Query layer: https://github.com/braden-w/whispering/tree/main/apps/app/sr... : Adds reactivity, caching, and runtime dependency injection
Voice-activated mode is particularly nice when coding—you can keep your hands on the keyboard while dictating. The Svelte 5 runes + TanStack Query combination has been fantastic for managing real-time audio state.