Lab #2. SRS
Purpose
The purpose of this document is to present a detailed description of the open-source software zk. It will explain the purpose and features of the software, the interfaces of the software, what the software will do and the constraints under which it must operate. This document is intended for users of the software and also potential developers.
Document conventions
Intended audience and reading suggestions
Audience is expected to be familiar with:
- Zettelkasten methodology (https://zettelkasten.de)
- Rust programming language (https://rust-lang.org)
- Linux command-line
Project scope
zk is intended to be the layer between the Zettelkasten and the user's editor.
Thus, the following features are out of scope for this project:
- Implementing a domain-specific Markdown editor
- Implementing a domain-specific text format to replace Markdown
Product perspective
Product features
zk allows users to:
- create notes using their preferred Markdown editor
- interleave notes using special reference syntax
- build a static website hosting their notes
- visualize notes as a graph in their web browser
Product features
zk exposes the following commands:
- `zk init` - initialize a Zettelkasten
- `zk new` - create a new post
- `zk build` - build a website
- `zk stats` - print statistics about the Zettelkasten
User classes and characteristics
- Users new to Zettelkasten methodology, who want to use zk as a learning tool to help them flesh out their Zettelkasten structure
- Proficient Zettlers, who are in need of a flexible, yet simple utility to augment their workflow
Operating environment
- ​Windows XP+
- Mac OS X
- Linux
- Other targets supported by Rust (?)
Design and implementation constraints
User documentation
Assumptions and dependencies
User interfaces
zk initially should have a CLI with subcommands described previously.
After the MVP, web UI (as part of `zk build`) will be added.