Look into "Hexagonal Architecture", similar/synonymous to clean/ports&adapters/onion. As someone else said, combine it with "Repository" pattern.
I use hex arch in front end and back end. It adds a couple of layers, but it makes apps much easier to test and maintain.
The best path depends you how much you like to tinker, your preferences, and your target platform. The learning curve is massive for either, and even after that it will take a lot of plugins and configuration to get close to feature parity of an IDE.
You might consider an IDE plugin at first. For example, there's a VSCode plugin that integrates actual Neovim as the editor. There's a Jetbrains (intellij, android studio, webstorm) plugin, IDEAVim, that very closely emulates Vim.
All that said, I use Neovim and prefer it over Emacs. The excellent Lua support in Neovim has eliminated the biggest complaint I had with Vim (vimscript vs LISP). Neovim has LSP support and can communicate with the same language backends that VSCode uses.
No matter what you do, learning Vim keybindings can be very useful as a lot of websites and local apps support it (e.g. gmail, github, less, lazygit).