Architecture Kata "Collective order"
Develop a web application with which interested parties can come together for a collective order.
The application should manage offers, e.g. "Order organic cranberries in 500g bags". Such offers are valid either up to a certain expiration date (e.g. 15.1.2014) and/or up to a certain order quantity threshold (e.g. 50 bags). If the order quantity is reached before the date, the order is placed. If the date is reached, an order is also placed if a minimum order quantity is reached.
The minimum order quantity guarantees a maximum price. The order quantity threshold promises a minimum price.
Interested parties enter a desired quantity for an offer. It shows how much time and how much quantity is left until an order is placed, e.g. "10 days or 27 bags left until the order is placed. The minimum order quantity has already been reached."
As long as the collection is running, interested parties can subscribe and unsubscribe.
When the collection is completed by the expiration date or when the threshold quantity is reached, interested parties are informed by email. The message can be positive because an order has been placed (including the total order quantity reached). Or negative, because the minimum order quantity has not been reached.
Invoicing takes place by invoice; by entering an offer, interested parties undertake to pay in the event of an order. When an order is placed, the interested party's data is sent by email as a CSV file to the provider for further processing.
Interested parties can only register for offers once they have logged into the system. Any user can become a provider. Each user is therefore potentially a provider of several offers and an interested party in several offers.
If an offer is closed before it expires, all interested parties will also be notified by email.
Data
- Offer: Headline, Description [1]expiration date, minimum quantity, threshold quantity, unit of measure (e.g. pieces, liters), email of the supplier
- Interested party: Email, billing address, delivery address, order quantity
- User: Username, password, e-mail provider and interested parties can only become users of the application.
Variation
Offers can be reissued after expiry. This means that an offer has a stable URL across editions, e.g. www.sammelbestellungen.de/cranberries500gand one per edition, e.g. www.sammelbestellungen.de/cranberries500g/1234.
For each offer, a list of the editions is displayed with their final results. Interested parties can only register for the current edition.
Users can register for notification of offers. They will then receive an email as soon as the offer is reissued.
[1] More detailed information on price scales can be included in the description. A link to the supplier can of course also be included there.