From e04eedb2c44805ec43fe3149ffa233d2e2b3c27f Mon Sep 17 00:00:00 2001 From: dm Date: Thu, 7 Jan 2021 14:37:54 +0100 Subject: [PATCH 01/14] add postgres support --- config/default.json | 8 +++++++ models/db.js | 56 +++++++++++++++++++++++++++++++-------------- package.json | 1 + 3 files changed, 48 insertions(+), 17 deletions(-) diff --git a/config/default.json b/config/default.json index 2838396..3fbea80 100644 --- a/config/default.json +++ b/config/default.json @@ -7,6 +7,14 @@ "endpoint": "http://localhost:9666", "invite_code": "top-sekrit", + "storage_type": "postgres", + "storage_config": { + "host": "localhost", + "database": "spacedeck", + "username": "postgres", + "password": "postgres" + }, + "storage_local_path": "./storage", "storage_local_db": "./database.sqlite", "storage_region": "eu-central-1", diff --git a/models/db.js b/models/db.js index 8cb3d17..bdb90a7 100644 --- a/models/db.js +++ b/models/db.js @@ -6,24 +6,46 @@ function sequel_log(a,b,c) { } const Sequelize = require('sequelize'); -const sequelize = new Sequelize('database', 'username', 'password', { - host: 'localhost', - dialect: 'sqlite', +let sequelize; - pool: { - max: 5, - min: 0, - acquire: 30000, - idle: 10000 - }, - - // SQLite only - storage: config.get('storage_local_db'), - logging: sequel_log, - - // http://docs.sequelizejs.com/manual/tutorial/querying.html#operators - operatorsAliases: false -}); +if(config.has('storage_type') && config.get('storage_type') === 'postgres') { + console.log('connecting to postgres'); + let postgresConfig = config.get('storage_config'); + sequelize = new Sequelize(postgresConfig.database, postgresConfig.username, postgresConfig.password, { + host: postgresConfig.host, + dialect: 'postgres', + pool: { + max: 5, + min: 0, + acquire: 30000, + idle: 10000 + }, + logging: sequel_log, + // http://docs.sequelizejs.com/manual/tutorial/querying.html#operators + operatorsAliases: false + }); + +} else { + console.log('connecting to sqlite'); + sequelize = new Sequelize('database', 'username', 'password', { + host: 'localhost', + dialect: 'sqlite', + + pool: { + max: 5, + min: 0, + acquire: 30000, + idle: 10000 + }, + + // SQLite only + storage: config.get('storage_local_db'), + logging: sequel_log, + + // http://docs.sequelizejs.com/manual/tutorial/querying.html#operators + operatorsAliases: false + }); +} var User; var Session; diff --git a/package.json b/package.json index d53987b..5e44408 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "node-phantom-simple": "2.2.4", "node-server-screenshot": "^0.2.1", "nodemailer": "^4.6.7", + "pg": "^8.5.1", "phantomjs-prebuilt": "^2.1.16", "read-chunk": "^2.1.0", "request": "^2.88.0", From b2cf8cf3360b58e64d519b02a5f06b469248b05c Mon Sep 17 00:00:00 2001 From: dm Date: Thu, 7 Jan 2021 14:54:24 +0100 Subject: [PATCH 02/14] change to unindented config definition --- config/default.json | 10 ++++------ models/db.js | 32 ++++++++++++++++++-------------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/config/default.json b/config/default.json index 3fbea80..f9062ba 100644 --- a/config/default.json +++ b/config/default.json @@ -8,12 +8,10 @@ "invite_code": "top-sekrit", "storage_type": "postgres", - "storage_config": { - "host": "localhost", - "database": "spacedeck", - "username": "postgres", - "password": "postgres" - }, + "storage_postgres_host": "localhost", + "storage_postgres_database": "spacedeck", + "storage_postgres_username": "postgres", + "storage_postgres_password": "postgres", "storage_local_path": "./storage", "storage_local_db": "./database.sqlite", diff --git a/models/db.js b/models/db.js index bdb90a7..40eb52d 100644 --- a/models/db.js +++ b/models/db.js @@ -10,20 +10,24 @@ let sequelize; if(config.has('storage_type') && config.get('storage_type') === 'postgres') { console.log('connecting to postgres'); - let postgresConfig = config.get('storage_config'); - sequelize = new Sequelize(postgresConfig.database, postgresConfig.username, postgresConfig.password, { - host: postgresConfig.host, - dialect: 'postgres', - pool: { - max: 5, - min: 0, - acquire: 30000, - idle: 10000 - }, - logging: sequel_log, - // http://docs.sequelizejs.com/manual/tutorial/querying.html#operators - operatorsAliases: false - }); + sequelize = new Sequelize( + config.get('storage_postgres_database'), + config.get('storage_postgres_username'), + config.get('storage_postgres_password'), + { + host: config.get('storage_postgres_host'), + dialect: 'postgres', + pool: { + max: 5, + min: 0, + acquire: 30000, + idle: 10000 + }, + logging: sequel_log, + // http://docs.sequelizejs.com/manual/tutorial/querying.html#operators + operatorsAliases: false + } + ); } else { console.log('connecting to sqlite'); From 18d09b49be259bb0d328faec024661b66537ca81 Mon Sep 17 00:00:00 2001 From: dm Date: Thu, 7 Jan 2021 15:26:13 +0100 Subject: [PATCH 03/14] unify config, add postgres decimal fix --- config/default.json | 11 +++++----- models/db.js | 50 +++++++++++++-------------------------------- 2 files changed, 20 insertions(+), 41 deletions(-) diff --git a/config/default.json b/config/default.json index f9062ba..fcc459e 100644 --- a/config/default.json +++ b/config/default.json @@ -7,11 +7,12 @@ "endpoint": "http://localhost:9666", "invite_code": "top-sekrit", - "storage_type": "postgres", - "storage_postgres_host": "localhost", - "storage_postgres_database": "spacedeck", - "storage_postgres_username": "postgres", - "storage_postgres_password": "postgres", + "storage_dialect": "sqlite", + + "storage_host": "localhost", + "storage_database": "spacedeck", + "storage_username": "username", + "storage_password": "password", "storage_local_path": "./storage", "storage_local_db": "./database.sqlite", diff --git a/models/db.js b/models/db.js index 40eb52d..03de63d 100644 --- a/models/db.js +++ b/models/db.js @@ -6,50 +6,28 @@ function sequel_log(a,b,c) { } const Sequelize = require('sequelize'); -let sequelize; - -if(config.has('storage_type') && config.get('storage_type') === 'postgres') { - console.log('connecting to postgres'); - sequelize = new Sequelize( - config.get('storage_postgres_database'), - config.get('storage_postgres_username'), - config.get('storage_postgres_password'), - { - host: config.get('storage_postgres_host'), - dialect: 'postgres', - pool: { - max: 5, - min: 0, - acquire: 30000, - idle: 10000 - }, - logging: sequel_log, - // http://docs.sequelizejs.com/manual/tutorial/querying.html#operators - operatorsAliases: false - } - ); - -} else { - console.log('connecting to sqlite'); - sequelize = new Sequelize('database', 'username', 'password', { - host: 'localhost', - dialect: 'sqlite', - +const sequelize = new Sequelize( + config.get('storage_database'), + config.get('storage_username'), + config.get('storage_password'), + { + host: config.get('storage_host'), + dialect: config.get('storage_dialect'), pool: { max: 5, min: 0, acquire: 30000, idle: 10000 }, - - // SQLite only - storage: config.get('storage_local_db'), logging: sequel_log, - // http://docs.sequelizejs.com/manual/tutorial/querying.html#operators - operatorsAliases: false - }); -} + operatorsAliases: false, + // SQLite only + storage: config.get('storage_local_db') + } +); +// https://github.com/sequelize/sequelize/issues/8019#issuecomment-384316346 +Sequelize.postgres.DECIMAL.parse = function (value) { return parseFloat(value); }; var User; var Session; From 65476a0d0941fac15b90aaba9ab44120f9dc6e11 Mon Sep 17 00:00:00 2001 From: dm Date: Thu, 7 Jan 2021 15:41:37 +0100 Subject: [PATCH 04/14] remove pg dependency, add docs --- README.md | 20 ++++++++++++++++++++ package.json | 1 - 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a70e100..0816c80 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,26 @@ For advanced media conversion: By default, media files are uploaded to the ```storage``` folder. The database is stored in ```database.sqlite``` by default. +# Other databases (Not officially supported) + +## Postgres + +Add the [pg](https://www.npmjs.com/package/pg) module and change the config/default.json to + +``` +"storage_dialect": "postgres", +``` + +Adapt the other values as needed + +``` +"storage_host": "localhost", +"storage_database": "spacedeck", +"storage_username": "username", +"storage_password": "password", +``` + + # Run with Docker - configure `config/default.json` diff --git a/package.json b/package.json index 5e44408..d53987b 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,6 @@ "node-phantom-simple": "2.2.4", "node-server-screenshot": "^0.2.1", "nodemailer": "^4.6.7", - "pg": "^8.5.1", "phantomjs-prebuilt": "^2.1.16", "read-chunk": "^2.1.0", "request": "^2.88.0", From 5a9a79addb12bd5e7a15e8dca974336b9680a62e Mon Sep 17 00:00:00 2001 From: dm Date: Mon, 18 Jan 2021 20:53:54 +0100 Subject: [PATCH 05/14] allow for custom color swatches reset colors to black on deselect fix fill_color default black --- config/default.json | 3 ++- public/javascripts/spacedeck_sections.js | 21 +++++++-------------- views/spacedeck.ejs | 3 ++- 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/config/default.json b/config/default.json index 2838396..2354f70 100644 --- a/config/default.json +++ b/config/default.json @@ -26,5 +26,6 @@ "mail_smtp_secure": true, "mail_smtp_require_tls": true, "mail_smtp_user": "your.smtp.user", - "mail_smtp_pass": "your.secret.smtp.password" + "mail_smtp_pass": "your.secret.smtp.password", + "spacedeck": {} } diff --git a/public/javascripts/spacedeck_sections.js b/public/javascripts/spacedeck_sections.js index 6846a94..da1ba50 100644 --- a/public/javascripts/spacedeck_sections.js +++ b/public/javascripts/spacedeck_sections.js @@ -69,7 +69,7 @@ var SpacedeckSections = { letter_spacing: 0, stroke_color: "#000000", - fill_color: "#00000000", + fill_color: "#000000", text_color: "#000000", background_color: "#ffffff", @@ -109,7 +109,7 @@ var SpacedeckSections = { color_picker_hue: 127, color_picker_opacity: 255, - swatches: [ + swatches: ENV.options.swatches ? ENV.options.swatches : [ {id:1, hex:"#ff00ff"}, {id:2, hex:"#ffff00"}, {id:3, hex:"#00ffff"}, @@ -133,18 +133,7 @@ var SpacedeckSections = { {id:26, hex:"#d55c4b"}, {id:27, hex:"#6f4021"}, {id:29, hex:"#95a5a6"}, - {id:30, hex:"rgba(0,0,0,0)"}, - ], - - swatches_text: [ - {id:1, hex:"#9b59b6"}, - {id:2, hex:"#3498db"}, - {id:3, hex:"#2ecc71"}, - {id:4, hex:"#f1c40f"}, - {id:5, hex:"#e67e22"}, - {id:6, hex:"#d55c4b"}, - {id:8, hex:"#ffffff"}, - {id:10, hex:"#252525"}, + {id:30, hex:"rgba(0,0,0,0)"} ], fonts: [ @@ -933,6 +922,10 @@ var SpacedeckSections = { } this.hide_toolbar_props(); + // reset active_style to black for new creation of artifacts + this.active_style.text_color = "#000000"; + this.active_style.stroke_color = "#000000"; + this.active_style.fill_color = "#000000"; document.getSelection().removeAllRanges(); diff --git a/views/spacedeck.ejs b/views/spacedeck.ejs index 20b841f..71d6f31 100644 --- a/views/spacedeck.ejs +++ b/views/spacedeck.ejs @@ -21,7 +21,8 @@ webHost: location.host, webEndpoint: location.origin, apiEndpoint: location.origin, - websocketsEndpoint: location.origin.replace("https:","wss:").replace("http:","ws:") + websocketsEndpoint: location.origin.replace("https:","wss:").replace("http:","ws:"), + options: <%- JSON.stringify(config.spacedeck) %> }; From 96e9b82fbb27c4731265471c074ce8ddacb429d5 Mon Sep 17 00:00:00 2001 From: dm Date: Mon, 18 Jan 2021 21:06:54 +0100 Subject: [PATCH 06/14] add nodemon --- package.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index d53987b..e035f69 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,8 @@ "version": "1.0.0", "private": true, "scripts": { - "start": "node spacedeck.js" + "start": "node spacedeck.js", + "dev": "nodemon spacedeck.js" }, "engines": { "node": ">=10.0.0" @@ -49,6 +50,9 @@ "validator": "7.0.0", "ws": "3.3.1" }, + "devDependencies": { + "nodemon": "^2.0.6" + }, "main": "app.js", "description": "", "directories": {}, From 3d391c571ced4f964fd1760d966e1582984900ee Mon Sep 17 00:00:00 2001 From: dm Date: Wed, 20 Jan 2021 09:14:49 +0100 Subject: [PATCH 07/14] ammend docs --- README.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/README.md b/README.md index a70e100..8184ff8 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,35 @@ To install all node dependencies, run (do this once): See [config/default.json](config/default.json). Set `storage_local_path` for a local sqlite database or `storage_region`, `storage_bucket`, `storage_cdn` and `storage_endpoint` for AWS S3. `mail_provider` may be one of `console` or `smtp`. Also, omit a trailing `/` for the `endpoint`. +## Configure color swatches + +Add a custom array of swatches to your config/default.json. +**You need to include black (#000000) and transparent (rgba(0,0,0,0)) in your custom swatches palette.** + +```json +... +"spacedeck": { + "swatches": [ + {"id":8, "hex":"#000000"}, + {"id":30, "hex":"rgba(0,0,0,0)"}, + {"id":31, "hex": "#E11F26"}, + {"id":32, "hex": "#9E0F13"}, + {"id":33, "hex": "#64BCCA"}, + {"id":34, "hex": "#40808A"}, + {"id":35, "hex": "#036492"}, + {"id":36, "hex": "#005179"}, + {"id":37, "hex": "#84427E"}, + {"id":38, "hex": "#6C3468"}, + {"id":39, "hex": "#F79B84"}, + {"id":40, "hex": "#B57362"}, + {"id":41, "hex": "#E7D45A"}, + {"id":42, "hex": "#ACA044"} + ] + } +} +... +``` + # Run (web server) node spacedeck.js From ba72cf7dc83cfe8d81c417f5c3786857e170ed7f Mon Sep 17 00:00:00 2001 From: dm Date: Thu, 21 Jan 2021 08:54:29 +0100 Subject: [PATCH 08/14] use configurable default colors on reset --- README.md | 46 ++++++++++++++---------- public/javascripts/spacedeck_sections.js | 12 ++++--- 2 files changed, 35 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 8184ff8..4fbf0ce 100644 --- a/README.md +++ b/README.md @@ -47,29 +47,37 @@ See [config/default.json](config/default.json). Set `storage_local_path` for a l ## Configure color swatches -Add a custom array of swatches to your config/default.json. -**You need to include black (#000000) and transparent (rgba(0,0,0,0)) in your custom swatches palette.** +Add a custom array of swatches to your config/default.json. + +**You should include the swatch transparent (rgba(0,0,0,0)) so users can remove the color applied.** + +## Configure default colors +You can define text, stroke and fill color in your config/default.json. + +**You also should include the default colors in your custom swatches palette.** ```json ... "spacedeck": { - "swatches": [ - {"id":8, "hex":"#000000"}, - {"id":30, "hex":"rgba(0,0,0,0)"}, - {"id":31, "hex": "#E11F26"}, - {"id":32, "hex": "#9E0F13"}, - {"id":33, "hex": "#64BCCA"}, - {"id":34, "hex": "#40808A"}, - {"id":35, "hex": "#036492"}, - {"id":36, "hex": "#005179"}, - {"id":37, "hex": "#84427E"}, - {"id":38, "hex": "#6C3468"}, - {"id":39, "hex": "#F79B84"}, - {"id":40, "hex": "#B57362"}, - {"id":41, "hex": "#E7D45A"}, - {"id":42, "hex": "#ACA044"} - ] - } + "default_text_color": "#E11F26", + "default_stroke_color": "#9E0F13", + "default_fill_color": "#64BCCA", + "swatches": [ + {"id":8, "hex":"#000000"}, + {"id":30, "hex":"rgba(0,0,0,0)"}, + {"id":31, "hex": "#E11F26"}, + {"id":32, "hex": "#9E0F13"}, + {"id":33, "hex": "#64BCCA"}, + {"id":34, "hex": "#40808A"}, + {"id":35, "hex": "#036492"}, + {"id":36, "hex": "#005179"}, + {"id":37, "hex": "#84427E"}, + {"id":38, "hex": "#6C3468"}, + {"id":39, "hex": "#F79B84"}, + {"id":40, "hex": "#B57362"}, + {"id":41, "hex": "#E7D45A"}, + {"id":42, "hex": "#ACA044"} + ] } ... ``` diff --git a/public/javascripts/spacedeck_sections.js b/public/javascripts/spacedeck_sections.js index da1ba50..b21b601 100644 --- a/public/javascripts/spacedeck_sections.js +++ b/public/javascripts/spacedeck_sections.js @@ -109,6 +109,10 @@ var SpacedeckSections = { color_picker_hue: 127, color_picker_opacity: 255, + default_text_color: ENV.options.default_text_color ? ENV.options.default_text_color : "#000000", + default_stroke_color: ENV.options.default_stroke_color ? ENV.options.default_stroke_color : "#000000", + default_fill_color: ENV.options.default_fill_color ? ENV.options.default_fill_color : "#000000", + swatches: ENV.options.swatches ? ENV.options.swatches : [ {id:1, hex:"#ff00ff"}, {id:2, hex:"#ffff00"}, @@ -922,10 +926,10 @@ var SpacedeckSections = { } this.hide_toolbar_props(); - // reset active_style to black for new creation of artifacts - this.active_style.text_color = "#000000"; - this.active_style.stroke_color = "#000000"; - this.active_style.fill_color = "#000000"; + // reset active_style to defaults for new creation of artifacts + this.active_style.text_color = this.default_text_color; + this.active_style.stroke_color = this.default_stroke_color; + this.active_style.fill_color = this.default_fill_color; document.getSelection().removeAllRanges(); From 058c414ae3068a6a9dcd88d1e46a910228e74e9b Mon Sep 17 00:00:00 2001 From: dm Date: Thu, 21 Jan 2021 09:09:17 +0100 Subject: [PATCH 09/14] fix --- public/javascripts/spacedeck_sections.js | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/public/javascripts/spacedeck_sections.js b/public/javascripts/spacedeck_sections.js index b21b601..11c4b3c 100644 --- a/public/javascripts/spacedeck_sections.js +++ b/public/javascripts/spacedeck_sections.js @@ -68,9 +68,9 @@ var SpacedeckSections = { line_height: 1.5, letter_spacing: 0, - stroke_color: "#000000", - fill_color: "#000000", - text_color: "#000000", + stroke_color: ENV.options.default_stroke_color ? ENV.options.default_stroke_color : "#000000", + fill_color: ENV.options.default_fill_color ? ENV.options.default_fill_color : "#000000", + text_color: ENV.options.default_text_color ? ENV.options.default_text_color : "#000000", background_color: "#ffffff", padding: 0, @@ -109,10 +109,6 @@ var SpacedeckSections = { color_picker_hue: 127, color_picker_opacity: 255, - default_text_color: ENV.options.default_text_color ? ENV.options.default_text_color : "#000000", - default_stroke_color: ENV.options.default_stroke_color ? ENV.options.default_stroke_color : "#000000", - default_fill_color: ENV.options.default_fill_color ? ENV.options.default_fill_color : "#000000", - swatches: ENV.options.swatches ? ENV.options.swatches : [ {id:1, hex:"#ff00ff"}, {id:2, hex:"#ffff00"}, @@ -926,10 +922,6 @@ var SpacedeckSections = { } this.hide_toolbar_props(); - // reset active_style to defaults for new creation of artifacts - this.active_style.text_color = this.default_text_color; - this.active_style.stroke_color = this.default_stroke_color; - this.active_style.fill_color = this.default_fill_color; document.getSelection().removeAllRanges(); From 60667187f34c2b456ca6fe98b4273da062ff5f77 Mon Sep 17 00:00:00 2001 From: dm Date: Thu, 21 Jan 2021 23:26:08 +0100 Subject: [PATCH 10/14] disable db logs via config/default.json --- README.md | 6 ++++++ models/db.js | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a70e100..7bba6c0 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,12 @@ To install all node dependencies, run (do this once): See [config/default.json](config/default.json). Set `storage_local_path` for a local sqlite database or `storage_region`, `storage_bucket`, `storage_cdn` and `storage_endpoint` for AWS S3. `mail_provider` may be one of `console` or `smtp`. Also, omit a trailing `/` for the `endpoint`. +## Disable DB logs + +```json +"db_logs_disabled": true +``` + # Run (web server) node spacedeck.js diff --git a/models/db.js b/models/db.js index 8cb3d17..c11a9aa 100644 --- a/models/db.js +++ b/models/db.js @@ -19,7 +19,7 @@ const sequelize = new Sequelize('database', 'username', 'password', { // SQLite only storage: config.get('storage_local_db'), - logging: sequel_log, + logging: config.has('db_logs_disabled') ? false : sequel_log, // http://docs.sequelizejs.com/manual/tutorial/querying.html#operators operatorsAliases: false From a7704875c5cc8556de9d15ed3b26844b1e79b966 Mon Sep 17 00:00:00 2001 From: dm Date: Thu, 21 Jan 2021 23:43:47 +0100 Subject: [PATCH 11/14] check existance of config value --- views/spacedeck.ejs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/spacedeck.ejs b/views/spacedeck.ejs index 71d6f31..35a57a6 100644 --- a/views/spacedeck.ejs +++ b/views/spacedeck.ejs @@ -22,7 +22,7 @@ webEndpoint: location.origin, apiEndpoint: location.origin, websocketsEndpoint: location.origin.replace("https:","wss:").replace("http:","ws:"), - options: <%- JSON.stringify(config.spacedeck) %> + options: <%- config.spacedeck ? JSON.stringify(config.spacedeck) : "{}" %> }; From c1a3700baea54924653dc95e6e8b4838cbd6f79d Mon Sep 17 00:00:00 2001 From: dm Date: Sat, 6 Feb 2021 00:22:36 +0100 Subject: [PATCH 12/14] add vscode launch configuration --- .vscode/launch.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .vscode/launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..156b175 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,14 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Nodemon", + "runtimeExecutable": "${workspaceFolder}/node_modules/nodemon/bin/nodemon.js", + "skipFiles": ["/**"], + "program": "${workspaceFolder}/spacedeck.js", + "cwd": "${workspaceFolder}" + } + ] + } \ No newline at end of file From fab692787c5f40481458b4bc3408e4e090a8f893 Mon Sep 17 00:00:00 2001 From: dm Date: Sat, 6 Feb 2021 00:22:44 +0100 Subject: [PATCH 13/14] add .tool-versions file --- .tool-versions | 1 + 1 file changed, 1 insertion(+) create mode 100644 .tool-versions diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 0000000..5d95f0f --- /dev/null +++ b/.tool-versions @@ -0,0 +1 @@ +nodejs 10.23.1 From 35c747eabb2cbb972fa2c9ca5040c42faaad0205 Mon Sep 17 00:00:00 2001 From: dm Date: Sat, 6 Feb 2021 00:23:01 +0100 Subject: [PATCH 14/14] add storage & .DS_Store to .gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 600a344..dc3548e 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ public/stylesheets/*.css database.sqlite *.swp *~ - +storage/ +.DS_Store \ No newline at end of file