# Introduction The **jt** software (short for "journalling tool") is a helper for maintaining a journal or personal knowledge base. It has been written for the personal use of its authors, but might be useful for others. The guiding principle for jt is that having longevity for one's data and complete control over it are crucial. Because of these, the approach taken by jt is to build a static web site from source files stored in a version control system. The files will be edited with a text editor chosen by the journal writer, rather than via a custom web, desktop, or mobile application. The built journal is then served with some suitable web server. The role of jt is to make it easier to create new journal entries (new Markdown files), and to make all the common tasks of maintaining a knowledge base have minimal friction. ## Example The following example creates a new journal, which will be the default journal for the user, and a new journal entry. The entry is a draft until it's finished. ~~~sh $ jt init ~/Journal default "My private journal" $ jt new --tag meta --tag journalling "My first journal entry" ... # text editor is opened so the new entry can be written $ jt finish ~~~ # Acceptance criteria and their verification This chapter defines detailed acceptance criteria and how they're verified using *scenarios* for the [Subplot][] tool. [Subplot]: https://subplot.liw.fi/ ## Create a new local journal repository `jt` works on a local repository, and it can be created an initialised using the tool. ~~~scenario when I run jt init jrnl default "My test journal" then program finished successfully and directory jrnl exists when I run jt is-journal jrnl then program finished successfully when I run jt is-journal bogus then exit code is non-zero ~~~ --- title: "jt—a journalling tool" author: - Lars Wirzenius - Daniel Silverstone bindings: - jt.yaml - runcmd.yaml functions: - jt.py - runcmd.py ...