Thanks for the work done.
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)
`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`
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.
Wouldn't it make sense if you update only specific package (except view layer)
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.
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)`