Webb app based on Zope. Allows existing groups of people which are purchasing food together in an organized fashion (coops) to exchange all the details about the prices of the available products and to place their orders online and so on. All code developed which can be re-used and is beneficial to the Zope project must be contributed to it.
# Orders Management Web App For Food Coops
This web app must serve groups of people which organize to purchase food together. From now I will call these groups "coops". The flow the organization is as follows. Weekly, one person from the coop informs the coop of the available products to purchase and their price. I will call this person the "manager". Each member of the coop then informs the manager what he would like to order exactly. After the orders by the members have been made, the manager then buys the food products from the supplier according to the sum quantities of the orders by the members. When the food has arrived the members come to collect it physically and pay for it.
This web app must provide an infrastructure for the following things to happen on-line in it:
* The manager informs the members of the available products and their prices. These can be per unit or per weight (metric system).
* The members place their orders.
* The manager sees all the orders made by the members and also a report summarizing them all.
The app must be based on Zope and all custom code developed must be contributed to the Zope project as Products and/or patches under Zope's license (if it is beneficial as such). The code must be well-commented and follow the guidelines and rules for contributing to Zope.
The app must be easily re-deployable, using standard Zope procedures.
The app must support an unlimited number of coops.
There must be a robust permissions system based on user names and passwords. Each user gets only the permissions which are necessary for him to use the app. For example, the managers get full permissions on their coops, the coop members which are not managers get only to view and change their own orders, etc.
There must be an interface for me to add/remove coops and their managers, change their passwords and so on. I need also the ability to make anyone a manager for a coop and to make anyone an administrator of the app.
Managers invite the other coop members into the system by entering in a list of their e-mail addresses. The members get invitations to join the coop then.
Managers can choose to elect other users of the coop as managers and they can remove this role from themselves but there must be at least one manager.
All individual orders and manager summaries must be printable.
When the manager publishes the products available and the prices on them, an e-mail message is sent to all members of that coop about this. It doesn't have to contain all the information, but only a link to the page where they can make/change their orders.
Managers must be able to lock the orders so that members would not be able to make changes to their orders any more in that round. Members can still see their orders and managers can still edit member's orders after the lock.
Each round of orders is a new one and all the prices and orders from previous rounds is kept in the database, available to the manager for viewing and printing.
The app must be developed with the strings in English but there must be a way for me to translate it to Hebrew. The app must support RTL perfectly!
In the order forms the data must be validated. Some products are in grams, some in kilos and some in units - the manager enters that information.
Members must fill in their name and telephone number. Managers, of course, can see this. They must also have all this displayed in a certain page (all members' information), printable.
When the manager enters the products and their prices, he can easily add products which he has added in previous rounds along with their last prices, which he of course can then change. the manager can also remove items from this.
All printable pages print out in a nice layout on A4 pages.
Must be valid XHTML and CSS all throughout the app.
Must be easy to use and simple even for not-so-computer-oriented people, as much as possible.