How do you keep a new site invisible until it is complete?

I'm working on a pre-launch for a non-profit and they want the their site invisible to the public until they have tested all links, etc. I understand keeping pages and post in draft mode but unclear about keeping the entire domain live.