add projectmodel, rewrite path validation in utils