Step 1: Define the purpose of your application. Which problems does it solve? Why should anyone use your application instead of the competitors? In other words, why would anybody use your application?
Step 2: Define who your users are. Which types of people are the target base for your application? Creating personas would be a good idea here. Interviews, forms, workshops, are good methods to create these
Step 3: Define what each of these user types will do with your application. Do not make these implementation specific, try to keep these general. A good way of getting these is to have a workshop, preferably with a mixed batch of skills and backgrounds. Have everyone work in small groups to create different ideas, and describe these with a few sentences or a quick mockup.
Put all these up on a board, and classify them according to 1: their difficulty to implement, and 2: how well they fulfill the purpose of your product. After this classification you should have a group of features that are both easy to implement and fulfill the purpose of your product. These ones are high priority. The second highest priority group should either be "hard to implement but high fulfillment of purpose", or "easy to implement but low fulfillment of purpose", use your best judgement here. "hard to implement and low fulfillment of purpose" should be tossed away.
Step 4: According to the priority of your features, start working on how to fulfill these features. These are your specific implementations. A what can be fulfilled by 1 or more hows.
These 4 steps can be visualised and maintained in an impact map, see http://impactmapping.org/.
They can also be expressed as user stories; as a who I want to how so that I can what. Organize these in a product backlog according to your priority, and just start working from the top down until you have a product you're happy with!