In the process I learned quite a lot about how the Language Server Protocol works and wrote a blog post about it (see the post link). I hope other people find this interesting.
Although I don't go into it in the blog post, I found it quite challenging to synchronize the state of the code editor between the frontend, backend, and language server. I would be interested to know if anyone has suggestions for a more robust approach to synchonization the state of a code/text editor.