organize packages according to clean architecture
change to maven standard layout in order to use gradle conveniently
basic gradle setting
gradle done
not spring version
don't expose non-public api