There are several problems with this question. First, it is not a practical programming problem within the scope defined by the help center. A question like this might be on-topic for Software Engineering, were it not for the other problems. A second problem is that it is too broad: it contains multiple questions in one. A third problem is that "best practices" is extremely vague and open-ended, resulting in a poor question for any Stack Exchange Q&A site. A fourth problem is that it asks for software recommendations, which are off-topic for both Stack Overflow and Software Engineering. — Cody Gray ♦ just now