Development/Design overview

This is a summary of the core concepts of Growstuff, for developers. It might be useful to people using the site, but mostly it's intended as an orientation guide for new devs.

We don't have to know everything
The idea here is that the people running Growstuff (the site owners/admins/moderators/whoever) shouldn't have to know everything about gardening. We shouldn't be creating content or trying to be authoritative. Instead, we should gather gardeners' experiences and present them usefully.

Aggregation
We do this through "aggregation". For instance, take the example of whether to grow a crop in the sun or the shade. We don't dictate this or have some authoritative answer in our database. Instead we ask people, when they plant that crop, whether they planted in sun or shade. If it turns out that 85% of people plant it in the sun, then we can fairly confidently say that this is a sun-loving crop.

Crops
Crops are one of the most important things on our site and in our database. A crop is a type of thing you might grow -- for instance tomatoes or walnuts or sage. You can see them in action at http://growstuff.org/crops.

Members
Members are the people who use the site. You can see them at http://growstuff.org/members. Each member has a profile page where information about them and their food gardening is shown.

Gardens
Each member generally has one or more gardens. A garden is pretty much what it sounds like -- a place where you plant and grow things. Many food gardeners will just have one garden -- their vegie garden -- however we do permit multiple gardens, for instance for those people who have both a home garden and an allotment.

Planting
Planting is what connects crops with people, via gardens. The data structure is something like this:


 * Each member has many gardens
 * Each garden has many plantings
 * Each planting relates to a specific crop

For instance, when planting something, you say "I planted tomatoes in my allotment". This connects the crop "tomato" with the garden "Allotment" belonging to you. We can then show this planting in various places -- on your profile page, on the tomatoes page, etc.

Harvests
Harvests are how we track what someone has picked from their food garden. Harvests are connected to an owner (i.e. member) and to a crop.

Posts, comments, forums
Posts/comments are the core of how we discuss things on Growstuff.

A post may belong to a forum (but doesn't have to). A post has many comments.