plaintext-everything
A curated list of awesome plain-text tools.
I like to keep everything under version control as plain-text. This is a list of utilities that allow you to do that. Unmaintained tools are striked out.
Note: * denotes that the linked item is not a library or tool, but an article or blog post.
DNS
- clouddns (Cloudfront)
- namesync (Cloudflare)
- Terraform has providers for CloudFlare, UltraDNS, and PowerDNS
Configuration
- etckeeper. The Arch Wiki has a nice guide on usage.
- NixOS is a completely declarative OS that uses
nix
, the purely functional package manager - RANCID - RANCID monitors a device's configuration, including software and hardware (cards, serial numbers, etc) and uses a version-control-system to maintain history of changes.
- Oxidised - Oxidized is a network device configuration backup tool. It's a RANCID replacement!
- *Blog post about Oxidised
- In general, most configuration management software will keep everything in plain-text.
Terraform
Terraform lets you manage a lot of things in plain-text, including Cloud Assets, Databases, Networking, configuration for various Web services, your CI/CD configuration, and even your Google Calendar. A full list of providers is on the Terraform Registry.
Passwords
- *Question on StackOverflow
- *John Resig's blog post
- pass - Standard unix password manager (encrypt, then commit).
- ansible-vault - Encrypted storage for ansible.
- sops - Encrypts files for git.
Dotfiles
- *dotfiles.github.io - List of various dotfile resources, curated by github
- *Arch Wiki Guide on using version control for dotfiles
- gnu stow
Editors
- *http://www.terminally-incoherent.com/blog/2012/03/12/putting-your-vim-files-under-version-control/
- Editorconfig - Keep your coding styles in a .editorconfig file.
Media
- Git Large File Storage - Replaces large fileswith text pointers inside Git, while storing the file contents on a remote server. Maintained by github
Encrypted Storage
- *HN Thread for blackbox, with various alternatives suggested
- git-crypt - git-crypt enables transparent encryption and decryption of files in a git repository
- *Blog post on git-crypt
- transcrypt - transparently encrypt files within a git repository
- blackbox - use decryption keys per user, meaning that there is no single shared password
Designers
- pixelapse - Visual version control and collaboration workflow
- *Adobe Version Cue - Blog post explaining version control to designers
- kactus.io - Version control for designers (Sketch+Git for now)
- SnowFS - a fast, scalable version control file storage for graphic files. There is a commercial offering as well.
Music
- lilypond - version control for sheet music. Think Latex for sheet music
- tunemachine - Version control for spotify playlists.
Database
- *Jeff Atwood's blog post
- GNU Recutils - set of tools and libraries to access human-editable, plain text databases called recfiles. The data is stored as a sequence of records, each record containing an arbitrary number of named fields.
Database Schema
- flyway - Version control for your database.
- MyBatis
- Liquibase - Source Control for your database
- Rumba RDBM - Database schema migration tool, plain-SQL, and declarative schema definition supported.
Backups
- bup - Very efficient backup system based on the git packfile format, providing fast incremental saves and global deduplication (among and within files, including virtual machine images)
Writing
- Draft - Easy version control and collaboration for writers.
- Penflip - GitHub for collaborative writers.
- GitBook - Book publishing platform based on git and markdown.
- CriticMarkup - a way for authors and editors to track changes to documents in plain text.
Journaling
- Journal.TXT - Single-Text File Journals.
- journal-cli - Index Your Markdown-Based Journal With Yaml Front Matter!
Todo
- todo.txt - Pretty well known text file format with applications on many platforms.
- *Todo list in version control - Based on using notational velocity and tracking it in git.
Food
Fork the Cookbook - GitHub for recipesdiy.soylent - Soylent recipes can be tracked and include changelogs. They can also be forked.- CookLang - Recipe Markup Language
Diagrams & Flowcharts
- Web Sequence Diagrams - Generates imagess from your plain text descriptions. Has an API for plugin support, so you can embed easily.
- Kanga Modelling - UML diagram generator in plain text. Written in .NET
- yuml.me - Class UML diagrams, described in plain text, and easily embeddable.
- Mermaid - Mermaid lets you create diagrams and visualizations using text and code.
- Kroki - Kroki provides a unified API for all the diagram libraries including BlockDiag (BlockDiag, SeqDiag, ActDiag, NwDiag, PacketDiag, RackDiag), BPMN, Bytefield, C4 (with PlantUML), Ditaa, Erd, Excalidraw, GraphViz, Mermaid, Nomnoml, Pikchr, PlantUML, SvgBob, UMLet, Vega, Vega-Lite, WaveDrom... and more.
- ditaa - converts diagrams drawn using ascii art, into proper bitmap graphics.
- erd - takes a plain text description of entities, their attributes and the relationships between entities and produces a visual diagram modeling the description using GraphViz and Dot.
- Svgbob Editor - Convert your ascii diagram scribbles into happy little SVG
Visualization
- Sparklines are possible in plain-text (specifically these 8 characters: '▁▂▃▄▅▆▇█').
- Tables-Generator lets you generate plain-text tables.
Presentations
Finance
Tools that let you manage finances, but keep your books in plain-text.
- *plain text accounting - umbrella site for the plain text accounting community.
- ledger - Ledger is a powerful, double-entry accounting system that is accessed from the UNIX command-line
- hledger - cross-platform accounting software for both power users and folks new to accounting.
- beancount - A double-entry bookkeeping computer language that lets you define financial transaction records in a text file, read them in memory, generate a variety of reports from them, and provides a web interface.
- transity - A transaction-first plain-text account tool that uses YAML to store your transactions.
plainbudget - Minimalist plaintext budgeting tool.
Typesetting
Tools that let you create professional looking documents, but keep your books in plain-text.
- LaTeX
- SILE - a typesetting system written in Lua and using the HarfBuzz font shaper. It’s input syntax is somewhat inspired by LaTeX.
- groff - is a typesetting system that creates formatted output when given plain text mixed with formatting commands. Primarily used for man pages, it has been used for books as well.
- rinohtype - a Python library that transforms a structured document into a professionally typeset PDF guided by a document template and style sheet.
- pandoc - If you need to convert files from one markup format into another, pandoc is your swiss-army knife.
- *Sustainable Authorship in Plain Text using Pandoc and Markdown
- *Unicode Nearly Plain-Text Encoding of Mathematics - With a few conventions, Unicode1can encode manymathematical expressions in readable nearly plain text. Technically thisformat is a “lightly marked up format”; hence the use of “nearly”.
- MathML - MathML is a low-level specification for mathematical and scientific content on the Web and beyond.
- *A list of MathML Tools
- AsciiDoctor - AsciiDoctor is a fast text processor & publishing toolchain for converting AsciiDoc to HTML5, DocBook & more.
Miscellaneous
- klog - klog is a plain-text file format and a command line tool for time tracking.
diffscuss - plain-text code review system.- *The Plain Person’s Guide to Plain Text Social Science [PDF Version].
- *Improving Health Care with Plain-Text Medical Records and Git
- Poor Man's Issue Tracker - a loosely defined set of conventions for using the filesystem as an issue tracker.
- bug - bug writes code problem reports to plain text files as per the poor man's issue tracker conventions. Issues are stored as human readable plaintext files, they branch and merge along with the rest of your code, and you can resolve conflicts using your standard tools.
Specification
- OpenAPI Specification - a standard, language-agnostic interface to RESTful APIs which allows both humans and computers to discover and understand the capabilities of the service without access to source code, documentation, or through network traffic inspection.
- *OpenAPI.Tools - List of various tools that use the OpenAPI Specification including Convertors, Validators, Documentation, Mock Servers, SDK Generators, Text Editors and more.
- MSON - A description format for describing data structures in common markup formats such as JSON, XML or YAML.