-
Notifications
You must be signed in to change notification settings - Fork 45
jump the queue design
When visiting public (free) or private (paid) events there are often large queues creating significant waiting times. Ideally the organizer of the event would like to streamline the entry of people. That would be possible by allowing people privileged access or, alternatively, offer an incentive for people to arrive in time or to get into line more efficiently. A way of doing this would be to have a website or application which would allow visitors to "Jump the Queue". This document describes the design for such an application: “JumpTheQueue”.
Note
|
Note that the document is intended to reflect a hypothetical but real use case. The design reflects this by trying to be complete. But the implementation is simplified in order to serve as an example. Where implementation differs from design, this is noted with an icon or symbol like : ⇒ and a comment about the nature of the difference. |
As a < type of user >, I want < some goal > so that < some reason >
As a visitor to an event I want to be able to visit a website or use an app - called JumpTheQueue, which provides me with a code (and optional date/time) after registration so that I can get a privileged access to the event
As a user of JumpTheQueue, I want to register with my name, password, username, Phone number so that I comply with the requirements to obtain the access code
As a user of JumpTheQueue, I accept that the organiser of the event can store my personal data so they can send me commercial notices (“spam”)
As a visitor of JumpTheQueue i want to be able to see the ticket number that is currently being attended and be able to join the queue.
As a visitor of JumpTheQueue with a ticket, i want to see which ticket number is being attended and my ticket number. Optionally, I want to know the estimate time that remains in order to get attended.
As a user of JumpTheQueue, I have to confirm either Email or Phone number by replying to a message send to the account if entered so the data can be verified.
⇒ this is not further developed nor implemented
As a visitor , I want to go the the privileged access queue with my valid (i.e. validated) access code so I can get direct access.
⇒ this is not further developed nor implemented
The basic flow of the application can be:
-
Fill in a form to give your name and private data and then press a button with “Register”
-
In case of validation errors, an error message will be shown
-
If there are no errors then an Access Code will be generated which will be shown on a next page. The access code can optionally be provided with proposed access time.
-
From this page you can show a view of the current Queue, with the list of people queued
⇒ the Event item is not further developed nor implemented
- Definition
< function name > = < parameters > => < *pure* function >
- or
< function name > = trivial : < trivial description >
isnull = (v) => v === null notnull = (v) => !isnull(v) isempty = (s: string) => s.length === 0 notempty = (s: string) => !notempty(s) isEmailAddress = trivial: notnull + notempty + consists of <name>@<domain.toplevel> isTelephoneNumber = trivial: notnull + notempty + consists of sequence of numbers or spaces (i.e. “4 84 28 81”)
- Definition
type < alias > :: < type defs > with predicated: < list of predicates >
- or
type < alias > :: trivial: < trivial description >
type ID :: trivial: Unique Atomic Identifier type NamedItem :: string with predicates: notnull, notempty type EmailAddress :: string with predicates: isEmailAddress type TelephoneNumber :: string with predicates: isTelephoneNumber type Option<T> :: None | T type Result<T> :: Error | T type Error :: trivial: Error information with code & error description
Visitor (Entity) | |
---|---|
Field |
Type |
Id |
ID |
Username |
NamedItem |
Name |
NamedItem |
Password |
NamedItem |
PhoneNumber |
Option<TelephoneNumber> |
AcceptedComercial |
boolean |
AcceptedTerms |
boolean |
UserType |
boolean |
AccessCode (Entity) | |
---|---|
Field |
Type |
Id |
ID |
Ticketnumber |
NamedItem |
StartTime |
Option<DateTime> |
EndTime |
Option<DateTime> |
StartTime |
Option<DateTime> |
Visitor |
NamedItem |
Queue |
NamedItem |
DailyQueue (Entity) | |
---|---|
Field |
Type |
Id |
ID |
Name |
NamedItem |
Logo |
NamedItem |
AttentionTime |
Option<DateTime> |
MinAttentionTime |
Option<DateTime> |
Active |
boolean |
Customers |
NamedItem |
There must be a 1 - 1 relationship between a Visitor and an VisitorTicker.
Next chapter: devon4j Getting Started
This documentation is licensed under the Creative Commons License (Attribution-NoDerivatives 4.0 International).