@bnewbold strongly agreed. @arcanicanis it is indeed a lot, but as with anything, the vast majority of developers should and will use libraries for more or less all of it. Doing it from scratch can be fun, good for learning, etc! But not necessary or recommended otherwise.
(I say this having implemented the complete ATProto PDS stack: MST, repo storage, signature chains, sync algorithms, websocket subscriptions, etc. It took much more than just DID handling, but libraries for low level bits like IPLD, DAG-CBOR, and crypto definitely helped.)