[#5] add schema and refactor the project