All Projects → dyne → binnit

dyne / binnit

Licence: AGPL-3.0 license
minimal no-fuss pastebin service clone in golang

Programming Languages

go
31211 projects - #10 most used programming language
HTML
75241 projects
Makefile
30231 projects

Projects that are alternatives of or similar to binnit

Pastebin
Modern pastebin written in golang
Stars: ✭ 111 (+311.11%)
Mutual labels:  web-app, pastebin, pastebin-service
PasteBinApp
iOS app for PasteBin
Stars: ✭ 27 (+0%)
Mutual labels:  pastebin, pastebin-service
rustypaste
A minimal file upload/pastebin service.
Stars: ✭ 102 (+277.78%)
Mutual labels:  pastebin, pastebin-service
rentry
Markdown pastebin from command line
Stars: ✭ 252 (+833.33%)
Mutual labels:  pastebin, pastebin-service
pasting
Publishing tool made in nodejs using deta.
Stars: ✭ 17 (-37.04%)
Mutual labels:  pastebin, pastebin-service
kikder-dating-swipe-app
❤️ Kik App, you know? 💑 Kikder™ is a dating webapp that integrates the Kik, uses the HorOrNot game and the Tinder swipe. The F.A.S.T. Game Approach! The web app uses a custom lightweight MVC framework.
Stars: ✭ 21 (-22.22%)
Mutual labels:  web-app
Imagery-Apps
Example JavaScript source code for ArcGIS imagery apps (Landsat Explorer and Sentinel Explorer) that you can expand or customize.
Stars: ✭ 24 (-11.11%)
Mutual labels:  web-app
webapp-nordic-thingy
Thingy:52 reference web app
Stars: ✭ 54 (+100%)
Mutual labels:  web-app
web
Web client for üWave, the self-hosted collaborative listening platform.
Stars: ✭ 62 (+129.63%)
Mutual labels:  web-app
peeps-generator
Build and customize your open peeps illustrations right away!
Stars: ✭ 32 (+18.52%)
Mutual labels:  web-app
nnmm
A super tiny pastebin/url minifier "microservice"
Stars: ✭ 77 (+185.19%)
Mutual labels:  pastebin
EMAGNET
Automated hacking tool that will find leaked databases with 97.1% accurate to grab mail + password together from recent uploads from https://pastebin.com. Bruteforce support for spotify accounts, instagram accounts, ssh servers, microsoft rdp clients and gmail accounts
Stars: ✭ 1,427 (+5185.19%)
Mutual labels:  pastebin
bf256
Brainfuck compiler under 256 bytes in size.
Stars: ✭ 21 (-22.22%)
Mutual labels:  minimalism
dominion-card-generator
a web-app to generate mockups of fan-cards for the card game dominion easily
Stars: ✭ 20 (-25.93%)
Mutual labels:  web-app
uranus
[W.I.P] An ecosystem of crawlers for detecting: leaks, sensitive data exposure and attempts exfiltration of data
Stars: ✭ 22 (-18.52%)
Mutual labels:  pastebin
Virtual-Room
A virtual room where friends share videos among them in real time directly over the web browser, with synchronized playback and a video chat at the same time.
Stars: ✭ 31 (+14.81%)
Mutual labels:  web-app
LoIDE
Web-based IDE for Logic Programming
Stars: ✭ 21 (-22.22%)
Mutual labels:  web-app
AtCoderClans
【非公式】AtCoderがもっと楽しくなるリンク集です。有志による非公式サービス・ツール・ライブラリ・記事などをまとめています。
Stars: ✭ 74 (+174.07%)
Mutual labels:  web-app
mp
Hybrid music player
Stars: ✭ 12 (-55.56%)
Mutual labels:  web-app
ocsigen-start
Ocsigen-start: an Eliom application skeleton ready to use to build your own application with users, (pre)registration, notifications, etc.
Stars: ✭ 70 (+159.26%)
Mutual labels:  web-app

binnit -- minimal pastebin clone in golang

That's just it. A minimalist, no-fuss pastebin clone server in golang. It supports only two operations:

  • store a new paste, through a POST request
  • retrieve a paste using its unique ID, through a GET request

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:

http://<server_name>/abcdef1234567890

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>. 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)
  • bind_port (the port to bind)
  • 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_file (path to the logfile)

As with other pastebin-like services, you can send a paste to binnit using curl. For instance, if your binnit server is running on http://servername.net, you can paste a file there using:

curl -F 'paste=<myfile' http://servername.net

and obtain on output the ID associated to the newly created paste. Similarly

mylongcommand | curl -F 'paste=<-' http://servername.net

will paste the output of mylongcommand to http://servername.net, and show on output the ID of the new paste.

Why another pastebin?

There are hundreds of pastebin-like servers in the wild. But the overwhelming majority of them is overbloated software, depending on lots of libraries/frameworks/tools, providing a whole lot of useless features, and implying a useless amount of complexity.

A paste server must be able to do two things, 1) create a new paste and return its ID, and 2) retrieve an existing paste using its ID. binnit does just and only these two things, in the simplest possible way, without any external dependency. If you need more than that, then binnit is not for you. But do you really need anything more?

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:

  • blank lines
  • the external configuration file
  • the template system
  • sanity checks and error management
  • logging
  • code comments

You CANNOT remove the licence statements on each source file.

LICENSE

binnit is Copyright (2017) by Vincenzo "KatolaZ" Nicosia.

binnit is free software. You can use, modify, and redistribute it under the terms of the GNU Affero General Public Licence, version 3 of the Licence or, at your option, any later version. Please see LICENSE.md for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].