I had a buddy who designed this web app a few years ago for a client of his. He was young and relatively new, and he charged the guy $500 to do it. The guy made hundreds of thousands of dollars. Years later, all of the APIs for the app are pretty much deprecated and things are breaking. The whole app needs a redesign.
The guy approached my friend letting him know that he needed to update it. My friend said it would be a lot of work and he didn't really feel like working on it. The guy said it was urgent and this was his livelihood. My friend came back at the guy with a price because the whole system basically needed to be re-developed and he was going to probably make it better than it was before -- having almost a decade now of experience. His quote: $25k.
The guy refused. As I said before: A guy who was making hundreds of thousands of dollars off this app refused to pay my friend to update it. Of course, he could take his business elsewhere, but my friend knew the app well because he designed it.
Another story to go with this in a way: I purposely did not update a clients' website for almost 5-6 months. Guess what happened? Exactly what I thought would happen: things started breaking. My client contacted me letting me know that things were broken, thus solidifying my justification for why I charge for monthly updates. Clients think that they can pay once and thats it. Sure, go ahead. But the web is changing so fast and especially things that rely on API that you just need to be handy.
Here is the thing by not doing that: If you go in months later, you have to figure out what you did, remember what is going on, try to fix it, etc. If you are in there monthly just to maintain it and update it, you have a constant reminder of the work you have done and the general maintenance helps you keep in contact with the client.
I have had it happen: I built a website/app for a guy and he was busy doing something else... I kept the web app on a private server and it was nearly done. He contacts me over 2 years later telling me he wants it to go live, but not before having a whole bunch of changes. I had to go in there, understand where I left off, and pick up where I left off to finish for him.
Anyways, my point of these stories is this: Know that once you develop it, you cannot guarantee what it will need in the future, or any bugs that might occur, but whether it needs monthly or yearly updates, you should incorporate that into your initial price, or monthly/yearly invoices, just so you can keep checking up on it, make sure everything is working, etc.
If they need things fixed during the course of the year, you can charge them by the hour, or just come up with a fair monthly price, even if you do no work on it -- just helps you keep everything in check.
You could also come up with an affiliate plan -- pay them a percentage for referring you to other potential clients -- on work completion, of course.