basic structure and gitignore