I have no personal experience with versioning/sharing in Mathematica yet, but my group and I have come to the point where we have to consider these options, so I have been looking around a bit. I can't say that I have any definitive answer, but this is what I've learned from perusing this community's archive.
First of all, in order to share Mathematica contents among multiple users that may need to modify the code, you need some form of version control software. I noticed that you had previously asked another question along these lines a few years ago (How can I set up a versioning system within a notebook?), to which you provided an answer yourself.
Unfortunately, the consensus seems to be that notebooks are eminently unsuited to versioning: they contain a lot of metadata, presentation rules, information that is relevant only to the front end, etc.
A better approach seems to be to use *.m files to store the plain source code, and version those. There are a few examples of settings of Git that are compatible with *.m files from this site, linked below. This is probably what I personally will have to do (as soon as I gather the courage!). I don't know whether this is really suitable for the application you have in mind though.
In any case, I'll share a few posts from this site that I have saved up because I had found them interesting with respect to versioning / sharing / team collaborations: