You can always start out by searching to see if there is already some (preferably open-source) software out there that does all or most of what you need.
If not, then it's "divide and conquer" time: break down your requirements into individual components, functions, whatever; then start deciding how to design and implement that component (possibly again looking for open-source classes, functions, packages, etc. that already do what you need to do for that component).