1. Project description. Plain simple explanation what your project does, etc. You might think it's an obvious and redundant thing. But it's not. It does help you to nail the project, define critical points and set all the team members with the same vision in mind. It should be 1/2 of the page.
2. User path. Describe how user finds you, sign up, start using it, what gets out of your project, why returns, and why be proud to tell others about it. If you build a marketplace/platform - build these stories for all types of users you have. This one is super important. It helps you to define bottlenecks, interface elements, user behavior, strong/week points, etc. It also can help you to describe your project to your potential users, so you could check if they are cool about using it. You might find you need to pivot without writing a line of code.
3. UI - describe it in the list form with several levels. It will help you to understand the real complexity of what you are building and delete unnecessary things.
4. Features list. You know how to do that already.
5. Tech specs. I guess you know how to do that too if this is not your first project.
6. Draw the UI on a paper. It will help the designer, and you will see some obvious things you should delete/add.
Medium - we use gdocs. Mind maps work well too because you can present the user path in a visual format and play with it changing pages/actions.
It sounds a lot, but man it saves so much time and resources down the road. If you need more advice - ping me at alexey(at)devteam.space - happy to help, good luck!