One should code in Haskell as if it were a small language like Scheme (or Standard ML, or early OCaml, or..). It's a wonderful language for that. The deep stuff isn't actually necessary.
Servant, the currently dominant API library/framework alone is already based on type level programming.