Thanks for the work done.<p>Current project structure felt like non-Go way to me, let me explain why, I always thought go packages should be independent (not sure about sub-packages though)<p>`encoding/json`, `encoding/gob` they do share concept of encoding/decoding, but contain totally different implementations, types, models, logic inside. whenever you change something in `encoding/gob` package, you don't need to touch `encoding/json`<p>but in proposed structure. whenever you want to add some logic, you would end up adding stuff in multiple places, starting with `domain`, then `stores`, then `delivery` (but this is exception, since this would be changed anyway as this is view layer), then other places.<p>Wouldn't it make sense if you update only specific package (except view layer)<p>let's say, you have `user` package with all necessary models, storage, business logic related to user and dependency from `core/db` package. Now you want to add avatar to user, change only in `user` package and that's all.<p>same with auth mechanism, call your package as `auth` and have a dependency on `cookies`/`session` and `user` package, if you want to add OAuth2 only change auth, no need to add yet another model to `domain`, want to add token based auth, again just change auth package set/create necessary tokens on top of `session` package using `user.Entity` or `user.GetID(authedEntity)`