When I needed to create this functionality, I followed these instructions:
I believe that with this you will be able to fulfill your first and second requirements. The third requirement, you can use a field in the database instead of using a custom state.
Thanks man. I started watching but as I read the comments on her video I realized the Countdown plugin by Copilot should do the job. I have got it to display already and I also got it to keep going despite page refresh. Just need to tweak steps 1 and 2 now