Welcome to the greatest profession!
Your questions are excellent. They point to an aspect of web work that’s really quite hard to get right. After development comes operations.
A web developer, as a freelancer, should be responsible for everything I imagine. That also means hosting and domain name.
That can be a trap, especially if the site you develop turns out to be successful.
Sure, you buy the domain for your customer and set up the web site for the initial deployment. That’s the minimum necessary work to launch the site and getting your customer to smile. (Stated more crassly: you need to do that to get paid.)
After that you have a choice.
- Continue paying for the site’s hosting, domain renewals, and github services, and bill your customer for site operations. The problem here is obvious: you need a way to get paid for your work, and for your expenses.
- Tell the customer they need to buy hosting services for ongoing operations, and move the site to their account. Transfer the domain to the customer’s domain registrar account. (That’s easy if they get an account on the same registrar you used to buy the domain.) Grant them access to the github stuff. Write a memo or README.md saying how it all works. If it’s a big project, use the github project wiki for documentation.
Does the developer also charges the monthly/annual maintenance?
If you do the maintenance work, charge for it. Charge a base annual fee that more than covers whatever you will owe for hosting and domain renewals. Insist on getting paid for this yearly fee up front. AND, establish the expectation that you will charge by the hour for updates, bug fixes, and emergencies. This stuff should be spelled out in an agreement letter or contract.
In these cases you should still put the hosting / domain / github on separate accounts that you can easily transfer to your customer if they ask you to.
Also, if a website needs constant updates
That’s the customer’s choice. If you do it you must set expectations that you will be paid for it.
you must offer tools for the client to change on their own?
You should always do that. That’s a good reason that emerging ecommerce sites deploy on Shopify or Squarespace, rather than some random virtual machine on AWS or Azure. Those companies have support people and tools so your customers can handle their own routine updates.
Will I set up client accounts in a hosting service that I choose?
Yes, in consultation with your client. If it’s a nodejs / react web site, using a simple-to-deploy service like Heroku is a good idea. It’s easy to hand off maintenance to somebody else.
Or is the client who chooses?
Only if you offer your client two or three competent choices and ask them to pick one. You don’t want to have to explain to your customer why cheap-and-nasty.com isn’t a good choice, and you definitely don’t want them to choose a bad service.
Or I will just host all the websites under one professional account of mine?
Not unless you charge at least $1000 per year paid up front. Seriously. Time trap here. And hosting the stuff yourself provides a high-value service to your client.
Something else to watch out for: When sites become successful and scale up they need routine tuning: database optimization, load balancing, and the like.
As a freelancer, try to work yourself out of every job you do. You need to be able to move on to the next project. Operations is a different job from development.
There’s a lot to absorb here. Don’t be intimidated by the complexity. Just get paid for it.