I wrote a FIX engine in Common Lisp once, working for a Norwegian retail broker. Worked like a charm for many years, connected to multiple market places and brokerages. Adapting to new counterparties was certainly a bit of work, but generally far less than implementing their binary protocols. (We tried that too from time to time, usually if FIX was not an option from the exchange. Admittedly rare i later years.)
Unfortunately I wasn’t allowed to open source it, and it’s now lost in the void after a takeover. :(
Good luck to you. It’s not an impossible project. :)