Architecture Kata "Appointments"

Develop a service with which appointments can be arranged electronically. The model is of course http://doodle.com.

A host would like to invite guests to an appointment. To do this, they create a meeting in the service and add possible dates to it. Appointments are individual contiguous periods of time.

Examples of time periods:

  • 12.3.2015 13:00 to 15:00
  • 12.3.2015 // without further time specification, i.e. the whole day
  • 12.3.2015 13:00 to 15.3.2015 12:00 // across days

Examples of dates:

  • 12.3.2015 13:00 to 15:00 // only one time slot
  • 12.3.2015 9:00 to 17:00 and 13.3.2015 9:00 to 17:00 and 14.3.2015 9:00 to 13:00

In addition, each meeting is of course given a title and an explanatory text. You can also enter a time by which the guests should have evaluated the proposed dates.

The host then informs the guests about the meeting. [1] You are thus invited to comment on the proposed dates.

Each guest then rates the proposed dates. In the simplest case, this can be done in binary form ("Suitable for me" or "Not suitable for me"). However, a scale for suitability might not be a bad idea either, e.g. "Fits!", "I could arrange it", "If it's absolutely necessary", "Doesn't fit at all".

When the deadline is reached (or at another time), the host decides on the final date based on the overview of the ratings; he can see who has rated which suggestions and how. The guests are automatically notified of their decision. [2]

Users of the service can view an overview of their appointments consisting of the sent and received invitations. Unrated invitations and pending appointment decisions should be highlighted.

The service can run on the web and notifications can be sent by email. However, it can also run in-house on the desktop. In this case, notifications can alternatively be displayed as a toast or by changing a tray icon.

Users can always be identified via their email address. If necessary, protection can also be provided by means of a password.

Only the host has the right to change details of the meeting and to finalize it.

Meetings can be limited to a specific group of guests or be open to anyone who knows the meeting number.


[1] Each meeting has a unique number. Guests can use this to select the meeting on duty.

[2] The decision can be reversed at any time. Of course, no date can be selected to finalize the appointment. Perhaps there was too little agreement in the ratings.

 

 

en_USEnglish