summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md48
1 files changed, 35 insertions, 13 deletions
diff --git a/README.md b/README.md
index ddf5add..e26238c 100644
--- a/README.md
+++ b/README.md
@@ -10,18 +10,24 @@ what else do you need?
## WTF?
+`binnit` is a single executable with **no dependencies**. You **don't
+need** a web server. You **don't need** a SQL server. You **don't
+need** any external library.
+
`binnit` serves pastes in the format:
- mypasteserver.org/abcdef1234567890
+ http://<server_name>/abcdef1234567890
-and stores them in a folder, one file per paste, whose filename is
-identical to the paste ID. The unique ID of a paste is obtained from
-the SHA256 of the concatenation of title, time, and content. Rendering
-is minimal, on purpose, but based on a customisable template.
+and stores them in a folder on the server, one file per paste, whose
+filename is identical to the paste ID. The unique ID of a paste is
+obtained from the SHA256 of the concatenation of title, time, and
+content. Rendering is minimal, on purpose, but based on a customisable
+template.
`binnit` is currently configured through a simple key=value
configuration file, whose name can be specified on the command line
-through the option `-c <config_file>`. The configurable options are:
+through the option `-c <config_file>`. If no config file is specified,
+`binnit` looks for `./binnit.cfg`. The configurable options are:
* server\_name (the FQDN where the service is reachable from outside)
* bind\_addr (the address to listen on)
@@ -29,8 +35,8 @@ through the option `-c <config_file>`. The configurable options are:
* paste\_dir (the folder where pastes are kept)
* templ\_dir (the folder where HTML files and templates are kept)
* max\_size (the maximum allowed length of a paste, in bytes. Larger
- pastes will be trimmed to that length)
-* log_fname (path to the logfile)
+ pastes will be trimmed to that length.)
+* log_file (path to the logfile)
## Why another pastebin?
@@ -45,17 +51,33 @@ ID. `binnit` does just and only these two things, in the simplest
possible way, without any external dependency. If you need more, then
`binnit` is not for you.
+## About minimalism
+
+> It seems that perfection is attained not when there is nothing more
+> to add, but when there is nothing more to remove (Antoine de Saint
+> Exupéry)
+
+`binnit` is intended to be truly minimal. It consists of about 500
+lines of golang source code in total, including:
+
+* ~110 lines for License statements (comments)
+* ~110 lines of core logic
+* ~90 blank lines
+* ~75 lines for template management
+* ~75 lines for config management
+* ~30 lines of pure comments
+
If you want to strip `binnit` down even further, you could consider
removing:
-* sanity checks and error management
-* logging
+* blank lines
* the external configuration file
+* the template system
+* sanity checks and error management
+* logging
* code comments
-> It seems that perfection is attained not when there is nothing more
-> to add, but when there is nothing more to remove (Antoine de Saint
-> Exupéry)
+You **CANNOT** remove the licence statements on each source file.
## LICENSE