Write no code
Start your project on existing software/software-as-service. Pretty much every functionality you want for a roll out is already out there, for free or for cheap. While you are at it use open source stuff.
Only after you (and your users or community) have started to climb the learning curve go out write your code, which will then be the code you need, when you need it, exactly the way you need it.