To consolidate my concepts, I am starting a Blood Donation Management System in Django. It is supposed to serve as a network of blood donors and seekers, both the donors and seekers will be able to register, and search through blood group type, and the search result will show list the list of donors/seeker along with the contact details. This way it going to serve the blood donors/seekers community.
What I want here is only a design level guidance like;
*** What apps should I create.**
*** What should the model (tables and attributes)**
*** What views should I code**
I am unable to figure out the project structure or a sketch that I can follow. Initially I want only a sketch of the design to have a road-map to follow along.
This is probably a 1-app project. I see no reason to complicate this by trying to separate parts of this into individual apps.
What data do you need to keep?
What are the real-life entities you are modeling? I can think of a couple - donors and seekers. I don’t know whether there are sufficient details associated with a “blood group type” to know if (or how) they should be modeled. You don’t identify enough functionality to know if there are other entities that need to be included.
Only you can determine that. Once you’ve got an idea of what you’re modeling, then you can identify what operations need to be performed on those models.
For example, you mention:
That implies either one or two pages right there. (“Register Donor”, “Register Seeker”)
You should go through the entire process as you envision it, and list out every action that someone will take. That effectively translates to the views needed. (Not necessarily precisely the same, but this is a starting point.)
Once you’ve identified these actions, then you can sort them into an order that makes sense, to help you develop a plan. For example, it doesn’t make any sense to build a page that will show the Donors that match to a Seeker, if you don’t have a way to enter a Donor, and a Seeker, and a blood group type.
But what’s most important is to divide this project into smaller and more managible blocks of work. Don’t try to do too much without testing and validating at every step of the way.