I’m working on a library that handles communication build on top of MQTT (using the Erlang lib emqtt). The library part uses PubSub to send notifications to the users of the library.
To work with the protocol we have a pair of Phoenix apps, that both uses the library, and acts as client/server. So they communicate with each other via MQTT but have a web front end for user interaction. So far, they are used only in dev mode on localhost, so no need for deployment yet.
I currently have the two apps as separate repos, but need a way to share code, which can later be extracted as a library.
Would an umbrella app with 3 apps - client, server and library - be a good way to structure this? I suppose this would mean that only one instance of the library would be run, and then shared between the client and server?
Or would it be better to use a single repo with separate mix projects? In that scenario the client and server apps could depend on the library using a relative file path?