summaryrefslogtreecommitdiffhomepage
path: root/README.md
diff options
context:
space:
mode:
authorChloe Kudryavtsev <toast@toastin.space>2019-02-27 22:08:07 -0500
committerChloe Kudryavtsev <toast@toastin.space>2019-02-27 22:08:07 -0500
commitbaa5b36b2bf6a5f7d12fe887ff655c05eb33a3b6 (patch)
treef23c687c11c5553400717dd16bb8d7417e5de842 /README.md
parentAdd lang=x query example (diff)
Add README
Diffstat (limited to 'README.md')
-rw-r--r--README.md34
1 files changed, 34 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..4ae11a7
--- /dev/null
+++ b/README.md
@@ -0,0 +1,34 @@
+Burning Rubber Paste
+====================
+
+`brpaste` is a small and fast pastebin service.
+It provides a lightweight REST-like interface and client-side syntax highlighting (if desired).
+It's small and fast because it relies on redis to perform the actual storage.
+
+### Speed
+Redis is [fast](https://redis.io/topics/benchmarks).
+D is [pretty fast](https://github.com/kostya/benchmarks).
+D is in the general range of C++ and Rust, significantly beating out common other choices (such as python, nodejs and lua).
+However, D is (subjectively) a much more friendly syntax than either C++ or Rust (note: this is written as someone that's spent a good portion of their life writing C++ professionally).
+Further, D is safe (it includes a garbage collector, and more robust RAII than C++ does, as well as more compile-time tests than C++).
+Rust would be another good choice for writing this.
+
+### Configuration
+There is no configuration within `brpaste`, besides the basics (what addresses to listen on, what port to listen on, how to connect to redis).
+This is because the actual job being done is relatively minimal.
+However, because redis is used, your instance can be greatly configured.
+For instance, you could make all your pastes expire in 10 minutes.
+Or you could make them never expire.
+The hosted instance over at https://p.toastin.space limits memory usage to 250mb, and expires the least frequently used keys first.
+This is the recommended configuration.
+
+### Deployment Difficulty
+`brpaste` is distributed as a single binary file.
+All other files (such as html) are baked into the binary.
+It is planned to offer statically linked to musl versions in the future.
+This is possible thanks to the `diet` templates (inspired by pugjs) provided by vibe-d, which are computed at compile-time.
+
+### Other Utilities
+For server-side helpers and utilities (such as openrc scripts, systemd unit files, and anything else of the sort), see the `server/` directory.
+For client-side helpers and utilities (such as a `sprunge(1)`-like script, an `anypaste` plugin, and anything else of the sort), see the `client/` directory.
+For documentation, see the `doc/` directory, but do note that you will need a compliant asciidoc parser to compile it.