Design Doc Template:
Problem Definition
what problem does the feature solve?
why is it needed?
Use Cases
sequence of simple steps on how users interacts with the feature
Interaction with Current System
does this feature build on an existing feature? if so, how?
how does the user interact with the new feature from outside the system
how does the new feature interact within the system
Requirements
focus on what functionality must exist and minimize discussion of how that functionality will be implemented
list items out of scope
Design
give a high level description of the implementation
algorithms and/or data-structures involved, this may be in the form of pseudo-code
failure analysis
Future Work
what additional work is related or could be done, but is not included in this design