Hi Samul-1,
Thanks for asking these questions. They are difficult questions to answer because they depend on your situation, funding, availability, and goals. I might suggest reading some other materials to see how others reason about things. Some resources are:
- Another thread on business logic
- Two Scoops of Django - often cited book on Django organization. Great resource for beginner to intermediate devs.
- OctoEnergy programming conventions I do not work for OctoEnergy, but I like that they make their opinions public when recruiting developers. I personally like how they separate out the business logic into a separate package, and then splitting writes and reads. However, this can be overly cumbersome for small applications.
- Recent post by Alex Krupp on Software Architecture - This literally was posted this week. It’s quite extensive and there’s more discussion on the Hacker News thread.
Looking through your project, I would consider the question, how do I onboard another engineer? I see some tests, but you’re definitely lacking in that area. If this were to expand as an actual product and you bring others on, tests go a long way in preventing bugs as new devs get acquainted with the project. It may also reveal areas that you should refactor to make things easier to test (and potentially reason about).
Some other things to check out:
- Deployment checklist, specifically the HTTPS section.
- Try creating large quantities of fake data to see if your application or admin breaks anywhere. This can help you find areas that may need optimization as your userbase and content grows. You can use the Django Debug Toolbar to identify problematic SQL queries, though we’re still working on the ASGI compatibility.
Best of luck and good work so far!
-Tim