iPXE makes the client-side part of it manageable; the only drawback is having to walk through the open pull-requests on github for the patches you need to get it working, and possibly having to fight some buggy uefi drivers (usually solved with snponly). Also has the advantage of making it possible to do everything secureboot + over TLS with your own certificates, rather than classical PXE which is all plaintext.
For the serverside, there are several python projects on github which provide everything you need in one package, for example pybootd.