? tree
.
├── adminer.dc.yaml
├── air.conf
├── assets.go
├── assets_gen.go
├── assets_note.txt
├── assets_vfsdata.go
├── db_init.sql
├── gqlgen.yml
├── graphql_generated.go
├── graphql_middleware.go
├── graphql_resolver.go
├── handlers.go
├── httputils.go
├── images
├── index.go
├── main.go
├── photos.go
├── schema.graphql
├── session_common.go
├── session_db.go
├── session_jwt.go
├── session_jwt_ver.go
├── static
│   ├── css
│   ├── favicon.ico
│   ├── js
│   └── logo.png
├── storage.go
├── templates
│   ├── change_pass.html
│   ├── list.html
│   ├── list_gql.html
│   ├── login.html
│   └── reg.html
├── templates.go
├── tmp
│   ├── air_errors.log
│   ├── build-errors.log
│   ├── dev.bin
│   ├── main.bin
│   └── release.bin
├── token_crypt.go
├── token_hash.go
├── token_jwt.go
├── token_middleware.go
├── user.go
├── user_repo.go
└── userloader_gen.go


// плюсы - нет подпакетов, все в main, ничего импортировать не надо
plain/
    main.go
    photos_handlers.go
    photos_repo.go
    photos_utils.go
    user_repo.go
    user_handlers.go
    templates.go

// надо уже импортировать код
mvc/
    main.go
    controller/
        photos/
            handlers.go
        users/
            handlers.go
    models/
        photos/
            repo.go
            utils.go
        user/
            repo.go
    view/
        templates.go


// плохо - на каждый метод чих делать пакет
mvc/
    main.go
    controller/
        photos/
            list.go
            edit.go
            rate.go
        users/
            reg/
                list.go
            login/
                login.go
            profile/
                profile.go
    models/
        photos_repo.go
        photos_utils.go
        user_repo.go
    view/
        templates.go

mvc/
    main.go
    controller/
        user.go
        photos.go
    models/
        photos_repo.go
        photos_utils.go
        user_repo.go
    view/
        templates.go


// пакет с именем utils - свалка
mvc/
    main.go
    controller/
        user.go
        photos.go
    models/
        photos_repo.go
        user_repo.go
    view/
        templates.go
    utils/
        photo_utils.go

// https://github.com/golang-standards/project-layout
├── Makefile
├── Readme.md
├── api
│   └── schema.graphql
├── bin
│   └── photolist
├── cmd
│   └── photolist
│       └── main.go
├── configs
│   ├── air.conf
│   └── gqlgen.yml
├── deployments
├── dev
├── docs
├── images
├── pkg
│   ├── assets
│   │   ├── assets.go
│   │   ├── assets_gen.go
│   │   ├── assets_note.txt
│   │   └── assets_vfsdata.go
│   ├── graphql
│   │   ├── graphql_generated.go
│   │   ├── graphql_middleware.go
│   │   └── graphql_resolver.go
│   ├── index
│   │   └── index.go
│   ├── photos
│   │   ├── handlers.go
│   │   ├── repo.go
│   │   └── utils.go
│   ├── session
│   │   ├── common.go
│   │   ├── db.go
│   │   ├── jwt.go
│   │   └── jwt_ver.go
│   ├── templates
│   │   └── templates.go
│   ├── token
│   │   ├── token_crypt.go
│   │   ├── token_hash.go
│   │   ├── token_jwt.go
│   │   └── token_middleware.go
│   ├── user
│   │   ├── user.go
│   │   ├── user_handlers.go
│   │   ├── user_repo.go
│   │   └── userloader_gen.go
│   └── utils
│       ├── httputils
│       │   └── httputils.go
│       └── randutils
│           └── randutils.go
├── static
├── templates
│   ├── change_pass.html
│   ├── list.html
│   ├── list_gql.html
│   ├── login.html
│   └── reg.html
└── tmp
    ├── air_errors.log
    ├── build-errors.log
    └── main