Just a tip, the one that I rely on the most of the time i can.
Be practical! If you have no current requirements, don’t introduce complexity into your application for it now. Don’t write code for anything you don’t already have requirements for!
Too many times, in an effort to avoid future enhancement problems, we try to plan for everything.
Even though you might need a someday support mobile devices or live in the cloud, if you have no current requirements, don’t introduce complexity into your application for it now.
Just use a layered design, try to do your best when writing the code , and embrace refactoring, you will be able to incorporate future requirements without a major overhaul.
Of course, this sounds nice in a post, but the real world is a different history, just try to keep in mind these words to avoid as much as possible the hell!