This template is provided for your reference, along with the others on the project page. Note that it is written in markdown which is displayed differently here than it is on GitHub.
The introduction provides context for the project. Write a concise description of the software you will develop and its target users. Be sure to cover what the software product will, and, if necessary, will not do.
List any project definitions and acronyms introduced to the project by this plan. Be sure and define all acronyms before their use. If no acronyms or terms requiring special definition are used, this section can be left out.
List all the external systems with which the software product interacts. These are external systems/libraries that you have to interact with.
Specify the logical characteristics of each interface between the software product and its users. This is a description of how the system will interact with its users. Note that this should not be a description of the UI (that belongs in the design document), but rather a high level discussion of how the user will interact with the product.
Describe the general characteristics of the intended users of the product, including educational level, experience, and technical expertise.
These subsections contain all the software requirements at a level of detail sufficient to enable designers/developers to design/develop a system that satisfies those requirements, and testers to test that the system satisfies those requirements. This part of the document should provide a numbered (possibly hierarchical) list of simple, complete, and consistent functional and non-functional requirements.
List the quality attributes that are important for your system (e.g., reliability, security) and explain why they are important for your system and how they will be measured.