Building a music engraving system from scratch
noteuniverse.com
noteuniverse.com
If it's not too late, I'd encourage you to try MNX as your internal notation format (https://mnx.formats.music/docs/). It's getting pretty stable and it's much easier to deal with than MusicXML, being in JSON and not requiring a state machine to deal with MusicXML's forward/backward elements, etc.