This looks nice!
I recently had to implement something similar on one of my projects. Other areas that would be good to address would be translation between client time, server time and GMT (in unix timestampt format). A library that offered that functionality, combined with what you've built, would be very useful!