This is what has helped me immensely: pick a service that you use and just reimplement it for your personal use.
You'll have a clear idea of the requirements and can even open source it at the end :)
Pick anything that would benefit frkm being self-hosted or something that you currently pay for. E.g. dropbox, etc.