One of the first milestones of any software project should be to define an MVP, or Minimum Viable Product. MVPs are a great way to validate an idea. An MVP is the smallest set of features that provides value to users.
Defining an MVP will help you:
Mitigate project failure by minimizing the effort to create a viable product
Prioritize the most important features
Receive feedback early on from real users
Start the process of iterative development and delivering incremental value to users
An MVP should be made to be as small as possible while still creating utility for the end user.