I am starting a new project (say `hello`) and I am totally confused about 
what package structure to use. 

I am going to go with a monolithic source repository which would be checked 
out under `~/src` directory in the developer machines.

I have three golang binaries available in my project.

1) hello-cli : A tool that would give me a CLI, which will be used from my 
client machines. Say something similar to the docker-cli
2) hello-daemon: A daemon to which the CLI tools will talk to. Say 
something similar to docker-daemon
3) hello-api-server: A HTTP server to which the daemon will talk. Say 
something similar to dockerhub API server.

In addition to these three golang binaries, I may have other things like a 
webui, some static assets, some integration tests etc. in multiple 
languages.

There will be some libraries that will be used by each of the golang 
binaries that will be internal only to the specific binaries and there will 
be some libraries, which will be shared across the three binaries. The 
three binaries may depend on different versions of the libraries.

Now the package structure that I thought was:

[image: Screenshot 2020-02-29 at 11.28.45 PM.png]

Will this be good or should I make any change ? I am not sure if vendoring 
would work fine here as there would be no `github.com/` etc. prefix (or 
even GOPATH) as I want to checkout under a special path (`~/src`).

I have attached the hello.zip file also. Does this package structure work ? 
Or should I do something different ?

Thanks.


-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/95932aba-93b5-48c3-836b-dfdcac373ebb%40googlegroups.com.

<<attachment: hello.zip>>

Reply via email to