add upload and hash check backend, still draft