I would suggest for future projects to create a style.css page to control all of your CSS and then use the classes to control what you do.
To get the white box around all the elements, you should put the image inside of your "main" div since the padding should go around the image as well.
For flex, you should have an additional Div for the container (white box) so that you can set it and make sure the flex-direction is set to Column. This will stack everything on top of each other. You can then use align-items and justify-content to make sure it's centered then set a width and a min-height of 100%. This would center the box.
Keep going, you look like you are getting some things down!
I liked your solution, I don't know if I would do anything different. It does have a different font than what the project had but I do not see that as an issue.