[#1] define database models
[#3] implement key based authentication