http://www.sleepyti.me - a calculator to let you know when to set your alarm in the morning to maximize your chances of waking up feeling refreshed / not breaking a REM cycle
The Pebble smartwatch has a feature like this as well. It tracks your sleep pattern and when you're not in deep sleep and your alarm is coming up within half an hour it'll start vibrating.
For someone who's very hard to wake up it seems to work well.