From 83e72e7ed683b7b681412462567075c5e2793090 Mon Sep 17 00:00:00 2001 From: b1ek Date: Sat, 4 Mar 2023 11:09:05 +1000 Subject: [PATCH] base --- .gitignore | 9 +++++++++ index.js | 35 +++++++++++++++++++++++++++++++++++ middleware/index.js | 4 ++++ package.json | 18 ++++++++++++++++++ public/static/main.css | 19 +++++++++++++++++++ routes/index.js | 6 ++++++ routes/main.js | 11 +++++++++++ views/main.pug | 8 ++++++++ views/template/main.pug | 17 +++++++++++++++++ 9 files changed, 127 insertions(+) create mode 100644 .gitignore create mode 100644 index.js create mode 100644 middleware/index.js create mode 100644 package.json create mode 100644 public/static/main.css create mode 100644 routes/index.js create mode 100644 routes/main.js create mode 100644 views/main.pug create mode 100644 views/template/main.pug diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f0f9da2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +node_modules +.env +package-lock.json + +# code +!*.js +!*.pug +!*.css +!*.md \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..67e003a --- /dev/null +++ b/index.js @@ -0,0 +1,35 @@ +require('dotenv').config({}); +if (process.env.APP_DEBUG) { + process.env.DEBUG = '*/*'; +} + +const { APP_PORT } = process.env; + +const express = require('express'); +const app = express(); + +const routes = require('./routes'); +const middleware = require('./middleware'); + +app.use(middleware); +app.use(routes); +app.use(express.static('public')); + +app.set('view engine', 'pug'); +app.set('views', './views'); + +const server = app.listen(APP_PORT, () => { + console.log('Running on port ' + APP_PORT); +}); + +function graceful_exit() { + console.log('Exiting...'); + server.closeAllConnections(); + server.close((err) => { + if (err) console.error(err); + process.exit(0); + }) +} + +process.on('SIGINT', graceful_exit); +process.on('SIGTERM', graceful_exit); \ No newline at end of file diff --git a/middleware/index.js b/middleware/index.js new file mode 100644 index 0000000..935c3d3 --- /dev/null +++ b/middleware/index.js @@ -0,0 +1,4 @@ +const express = require('express'); +const router = express.Router(); + +module.exports = router; \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..e83b067 --- /dev/null +++ b/package.json @@ -0,0 +1,18 @@ +{ + "name": "blek-bin", + "version": "0.0.1", + "description": "A privacy-respecting, js-free alternative to pastebin", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "dev": "node index.js" + }, + "author": "b1ek", + "license": "MIT", + "dependencies": { + "dotenv": "^16.0.3", + "express": "^4.18.2", + "express-async-handler": "^1.2.0", + "pug": "^3.0.2" + } +} diff --git a/public/static/main.css b/public/static/main.css new file mode 100644 index 0000000..b30518c --- /dev/null +++ b/public/static/main.css @@ -0,0 +1,19 @@ +body { + background-color: antiquewhite; + font-family: monospace; +} +textarea { + background-color: rgb(248, 241, 232); + border: 1px solid #6c6f6c; + border-radius: 4px; + box-shadow: 0 2px 2px #20402030; + padding: 4px 8px +} +textarea:hover { + box-shadow: 0 2px 4px #20402040; +} + +.data { + width: 400px; + height: 240px +} \ No newline at end of file diff --git a/routes/index.js b/routes/index.js new file mode 100644 index 0000000..d39da75 --- /dev/null +++ b/routes/index.js @@ -0,0 +1,6 @@ +const express = require('express'); +const router = express.Router(); + +router.use(require('./main')); + +module.exports = router; \ No newline at end of file diff --git a/routes/main.js b/routes/main.js new file mode 100644 index 0000000..886055d --- /dev/null +++ b/routes/main.js @@ -0,0 +1,11 @@ +const express = require('express'); +const router = express.Router(); +const handler = require('express-async-handler'); + +async function index(req, res) { + res.render('main', {maxlen: process.env.MAXLEN}); +} + +router.get('/', handler(index)); + +module.exports = router; \ No newline at end of file diff --git a/views/main.pug b/views/main.pug new file mode 100644 index 0000000..b080fa3 --- /dev/null +++ b/views/main.pug @@ -0,0 +1,8 @@ +extends template/main.pug + +block content + form(action='/upload' method='POST') + p(align='center') + textarea(name='text' class='data' placeholder='Put your text in here!' + (maxlen ? ` (Max length is ${maxlen} bytes)` : '')) + br + input(type='submit' value='Upload!') \ No newline at end of file diff --git a/views/template/main.pug b/views/template/main.pug new file mode 100644 index 0000000..7ae1c29 --- /dev/null +++ b/views/template/main.pug @@ -0,0 +1,17 @@ +block root + + +doctype html +html(lang='en_US') + head + title blek! Bin#{title ? title : ''} + link(rel='stylesheet' href='/static/main.css') + body + h1(align='center') blek! Bin + p(align='center') + a(href='https://git.blek.codes/blek/bin') Source + | | + a(href='http://blek.codes/project/blek_bin') Project page + hr + block content +