As part of connecting OFN to existing alternative food systems, I’m investigating how this would work with food cooperatives who use other software. In my ideal world, different groups would use whatever is most useful to them, and are still able to work together with others, and with OFN.
This is an exploration of how OFN and and other food cooperative systems may integrate. It’s not fully worked out, it may not make sense to implement it all (or at all), but hopefully provides a starting point.
Connecting to OFN as a food cooperative
While there is an option in OFN to form buying groups, there may be various reasons for food cooperatives to use other software. It would be great if OFN would integrate with these as well; for the ecosystem
because everyone is more connected, for suppliers (and shops) because they have a larger market, and for food cooperatives, because they have easier access to more suppliers.
We’ll discuss some use-cases in increasing complexity.
Discovering producers
Foodcoops may use OFN to discover producers in their neighbourhood, that they otherwise would be unaware of. These would be OFN _Producer_s, and perhaps anyone who has a Shop.
Required endpoints
- [OFN] listing and searching _Producer_s
- [OFN] listing and searching _Shop_s
- [OFN] showing _Producer_s and _Shop_s by id
It would be useful to search by name and location (distance to). Perhaps the listing and searching endpoint would work on _Enterprise_s, with the possibility to filter by ‘type’/‘features’.
At the very least, some basic info like name and location is needed, and an (OFN) link to read more and see the products (depends on #624).
Getting product information from producers
In OFN, the assortment of producers can be kept up-to-date. Food cooperatives could synchronize their product information with that in OFN.
Required endpoints
Foodcoop software needs to be able to find products by producer/shop and keep them synchronised.
- [OFN] listing and searching _Product_s by enterprise
- [OFN] listing _Product Variant_s
- [OFN] showing _Product_s and/or _Product Variant_s by id
It could be considered flatten the product + variants to only product variants (as long as there remain references to group variants together). This depends on whether variants make sense for other systems as well.
OFN would probably need to return products that are in an order cycle that is open (or will be in the future). TODO figure whether it is useful to also show products not in an order cycle.
Placing orders at OFN
If a food cooperative wants to buy from a producer in OFN, it would be useful if it could go through OFN, both for OFN and for the producer. Without that in place, ordering needs to be done either by direct contact to the producer, or by entering an order manually in OFN.
Required endpoints
- [OFN] CRUD for _Order_s, including adding/removing _Line item_s.
- ?
TODO When a producer has no shop, I’m not sure how placing an order from a food cooperative would fit in. It may be a ‘normal’ user order (including the ability to directly order articles that only make sense when group buying), but also when the Producer has no Shop. That’s something to be worked out.
Keeping order information up-to-date
When a food cooperative has their own order cycle with an OFN supplier, it may be useful to update desired quantities in real-time (when there is only so much available at the producer, for example).
TODO work out in more detail (later)
Keeping OFN profile updated
Foodcoop software often has a place to enter details like name and address. If there is a profile in OFN, it would be useful if this would be synchronised automatically.
Related work
- Lettuceshare has a CSV export lettuce_share_report.rb, #772
- OFN thread: Kandu integration
- OFN thread: Bulk group and buying (wishlist)
- OFN thread: Buying groups in OFN (section)
- OFN thread: The future of OFN in a distributed web environment
- OFN wiki: API documentation
- OFN wiki: Integration & API
- Platforms cooperation doc: Research-action project : distributed food system
- Terminology across food projects: food-dashboard’s terminology document (and its #9)
- Corresponding issue in Foodsoft: foodcoops/foodsoft#395