foodsharing.de
The website foodsharing.de offers the biggest functioning platform for foodsavers to organize their pick-ups, manage their cooperations and interact with each other. It has a lot of features and is used by over 20.000 German-speaking foodsavers (as of January 2017).
This page is to describe the website, its functionalities and problems. It was written in preparation of the Berlin Hackathon in October 2016, where people started actively working on the code of foodsharing.de again, so it is mainly directed at software developers, but still readable for everyone!
Contents:
Follow the development progress on our blog.
Join our development group on Gitlab.
Description
foodsharing.de is an internet platform to coordinate foodsaving communities to collect leftover food at cooperating businesses (supermarkets, bakeries, markets, ...). It includes roughly the following functionality
- Store-Page: For each business, there is a team of foodsavers willing to collect food there. Coordination via text messaging and a pickup calendar.
- Community: The german foodsharing community is geographically hierarchical organized: Country - State - Big city or area - (city part). Each community, called area, or Bezirk, has
- a forum to exchange local information
- local working groups to coordinate different local groups
- ambassadors who - on the platform - have higher access rights to administrate the community
- local events: Foodsavers of different regions may be invited
- Foodbaskets: Put up a basket at your home location, shown on a map, for others to come by and collect the food
- Messaging system: Communicate in realtime with 1on1 or group chats
- Fairshare Points: Publically visible pages for public shelves or fridges where people can take or give food
- Global groups: Communication platformwide about specific topics
- ID card: Each foodsaver gets an ID after an ambassador verify them
- Quiz: New foodsavers have to proof their will of participation by reading some documents and answering some questions before they are able to contact ambassadors and enter a community
- Email: There is a legacy-but-still-used emailing system integrated into the platform
- Articles: A blog/news section allows groups to post news
- Newsletter: Region- and global wide email newsletters can be send
- Store chains: A store can belong to a chain that is separately administrated
- Report system: For conflicts and to be aware of issues, a report system that can be evaluated by a special report group is integrated
- Profiles: Users can present themselves
- Business cards: You can get a business card for your specific role on the platform
The platform is written in PHP5, MySQL, JavaScript and CSS using no frameworks and some parts of different libraries. It runs on nginx and uses a nodejs helper for realtime messaging via websockets. The frontend is mostly served directly via a view/presentation layer but also loads different content - rendered html as well as json - via XHR.
History and future of foodsharing.de
The foodsharing website was developed by Raphael Wintrich from 2012-2014 while it went online early. It got extended mostly on the live system without many administrative tools, no tests, schema migrations, proper deployment system. From 2014 until now, it has been mostly abandoned. While Raphael is still reachable when needed, Matthias Larisch took over the lead development for 2015 and 2016, mostly providing some backend bugfixes or very small features.
2015, it was planned that the envisioned yunity platform can replace the foodsharing platform in 2016. This goal changed, there will not be such a yunity platform according to current plannings. Mid 2016, Raphael Fellmer started sharecy.org as a second approach to provide the foodsharing community with a new platform - as well as reach some further goals. Their roadmap includes providing a platform at the end of May 2017. We - the yunity community - question this date.
I - Matthias Larisch - expect the current foodsharing platform to be used until at least H1/2018 when not even longer, when data migration etc. all is taken into account. This is why I really appreciate the current effort put in to the platform by yunity developers, existing foodsharing contributors, and you, hackathon participant.
What is to be done?
The current code works and is used by a lot of people. However, we would love to be able to fix some long existing problems and enable further feature development.
- Add unit tests to the existing codebase. The integration of codeception and PHP AspectMock has already been started, Integration- and unittests can be run
- Code cleanup: Identify unused code. There are some modules and a lot of functions which are not in use and would simplify further development
- Define a clear API: some frontend calls already use a nice XHR API, there is also an okay-working Android-Phonegap-App which uses an API.
- Refactor parts to use a PHP framework: it may make sense to use some well known, well tested underlying framework (for example slim).
- Add translation support: We already have quite some non-german speaking users. Having the platform available in other languages would allow using it also in other countries. There is already some structure to translate content but also still a lot of language strings directly in view templates.
- Open Source the code: The code should always have been open source. It is not, because we know there are security issues. Help us finding them. When we feel safe about it, let's put this thing public to enable more contributions and follow the philosophy of sharing.
How to get started?
The code is on gitlab. Create an Account, navigate to https://gitlab.com/foodsharing-dev/ and request access. You will get approved soon by Nick, Matthias or Tilmann.
It is very easy to checkout and run a local copy. See the provided Readme in the repository, it is accurate
Subpages
To the extent possible under law, the yunity wiki contributors have waived all copyright and related or neighboring rights to the content of the yunity wiki. More information...
You have an account but can't edit or create pages? Write us in the open chatroom or in our yunity Slack!