Doc on Cardano address structure, validation, key operations, mnemonic?

I’m working on a Python lib for Cardano and would like to implement features like address validation and basic key operations. Is there a good doc describing such things? Address structure, encoding and validation is my primary concern. Key operations like pubkey derivation or key <> mnemonic encoding would be also very welcome.

Of course I can resort to reading source code, but that would mean some additional overhead as I’m not familiar with Haskell.