Here it is.
It’s not perfect, but it meets the user stories. I need to make a few cosmetic changes (can’t do it know as I reload my code editor) but it seems to be working.
If I’d planned a little better, the code could have been more dry, especially in the message reading/deleting stuff. But that’s what you learn.
If there is anything broken, please let me know.