Unfortunately this is a very sparsely documented subject in optimisation literature. The only technical resource I am aware of in my field is this one. Tobias Achterberg's thesis is also a good resource for MILP solver development.
The problem is that the number of people who are proficient in solver development is so small that the probability of one of us taking the time to also write a book about it is, unfortunately, practically zero.
The one thing I will warn you about is to only read resources written by people who have actually implemented solvers that are good enough for people to use. I've found that most other resources are just full of misconceptions/mistakes.
In my opinion, the best resource by far is to try and understand the source code of a good open-source solver in your area of interest. Examples of good code include MINOTAUR (local MINLP), Couenne (Global MINLP), SCIP (for MILP & MINLP), and SoPlex (LP). There's also a bunch of other code bases like SHOT or Maingo, but those are implementations of more niche methods that are not very relevant to beginners. Do not attempt to read any CoinOR code (other than Couenne) as it's very hard to read even for professional solver developers like myself.
When it comes to understanding solver design, it is important to ask yourself (while reading source code), "why is this implemented the way it is". Many design choices in solver code appear odd at first glance, but there is always a reason (typically performance) if you dig deeper.