This app was mentioned in 11 comments, with an average of 5.00 upvotes
For the 2nd factor, there's a smartphone app that reads your movement during your sleep (you have to put your phone on the bed) and calculates the best time to wake you up during a window you can customize. I haven't used it but the reviews say it's effective.
I have android, here is a link to an app I use called SleepTime.
The way it works is you set up an alarm and place your phone on your bed. About 30 minutes before your set alarm time it checks for movement and will try to wake you during your lightest phase of sleep. If it doesn't detect that you're in light sleep, your alarm will sound at the time you originally set.
There are probably a hundred different apps that do this so feel free to research for yourself.
SleepTime wakes you when your sleep is the lightest. Ofc this sometimes means that it goes off earlier than your set time, because you could be just about to enter another sleep cycle, and won't be 'refreshed' in time for your set time.
It has done wonders for me and I can't recommend it enough. Had it for almost two years now, and hasn't let me down.
I have an iPhone, but this seems to be the android version of the one I used (it's been a while, but it's the 2nd top rated free one).
I've been using Sleeptime for the past few days on Android. It's free on the Play Store.
Use a sleep cycle alarm like Sleep Time. Sounds gimmicky but they actually work
Yeah that's basically the idea with sleep cycle alarms like Sleep Time
Try This
When you go to sleep and when you wake up in your sleep cycle have a dramatic impact on alertness. Check out sleep apps such as Sleep Time Smart Alarm or hardware devices such as the Sense Sleep monitor or Luna Smart Mattress Cover.
Check out Sleep Time Smart Alarm Clock :) https://play.google.com/store/apps/details?id=com.azumio.android.sleeptime