Simple Node.js pastebin
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Go to file
Joe Biellik 95ff97627f Convert paste to UTF8 4 years ago
config Refactor paste processing, UI and configuration 5 years ago
controllers Convert paste to UTF8 4 years ago
models Store uploader IP address 4 years ago
public Cleanup lint 4 years ago
views Cleanup markup 4 years ago
.editorconfig Improve linting 4 years ago
.gitattributes Initial commit 9 years ago
.gitignore Cleanup 4 years ago
.pug-lintrc.json Improve linting 4 years ago
.xo-config.json Improve linting 4 years ago
LICENSE.md Update year 5 years ago
README.md Replace shortid with nanoid 4 years ago
app.js Use pino for production logging 4 years ago
db.js Simplify DB configuration 5 years ago
docker-compose.yml Cleanup lint 4 years ago
package-lock.json Convert paste to UTF8 4 years ago
package.json Convert paste to UTF8 4 years ago
prism-langs.js Cleanup lint 4 years ago
router.js Move index route to controller 4 years ago
server.js Add host address configuration 5 years ago

README.md

paste

License Release Version Dependencies

Simple Node.js pastebin built with Koa, MongoDB, Pug, Bootstrap and Prism.js.

Try it out at paste.fyi

Features

  • Full syntax highlighting via Prism.js
  • Automatic and configurable paste expiry
  • Full support for CLI requests with curl, Wget etc
  • CTRL+Enter hotkey for quick paste submission
  • Short and readable URLs via nanoid, e.g. /qNGDwRyx
  • Textarea grows to fit content via autosize.js
  • Runs fully containerized with Docker

CLI Usage

# Simple paste
$ echo 'Hello World' | curl -F 'paste=<-' paste.fyi
http://paste.fyi/qNGDwRyx

# Either form, multipart or raw text data is accepted
$ curl -F 'paste=Sent as form data' https://paste.fyi
$ curl -d 'paste=Sent as multipart data' https://paste.fyi
$ curl -H "Content-Type: text/plain" -d 'Sent as raw text' https://paste.fyi

# Wget or any other tool is fine too
$ wget --post-data 'paste=Hello from Wget' -qO- https://paste.fyi

# Upload a file
$ curl -F 'paste=@path/to/file.txt' https://paste.fyi

# Specify the expiry time in seconds
$ curl -F 'paste=2 minutes' -F 'expire=120' https://paste.fyi
$ curl -F 'paste=2 minutes' https://paste.fyi/?expire=120

# Specify the syntax to highlight
$ git diff README.md | curl -F 'paste=<-' https://paste.fyi/?diff
$ curl -F 'paste=@path/to/file.diff' -F 'highlight=diff' https://paste.fyi

# Redirect to content
$ curl -F 'paste=My paste' https://paste.fyi/?redirect
My paste

# Combined options
$ curl -F 'paste=My paste' -F 'expire=60' -F 'highlight=shell' https://paste.fyi
$ curl -F 'paste=My paste' 'https://paste.fyi/?expire=120&shell'

Development

  1. Clone this repo:
git clone https://github.com/JoeBiellik/paste.git && cd paste
  1. Install dependencies:
docker-compose run -e NODE_ENV= --rm --no-deps app npm install
  1. Start the app and watch for changes:
docker-compose run -e NODE_ENV= --rm --service-ports app npm run watch

Deployment

  1. Follow the first two development steps.

  2. Configure config/docker.json with any custom setting overrides

  3. Configure docker-compose.yml with Docker options and ports to use

  4. Start the production database and Node.js server:

docker-compose up