basic project architecture