diff --git a/shared/naturalcrit/codeEditor/autocompleteEmoji.js b/client/components/codeEditor/autocompleteEmoji.js
similarity index 89%
rename from shared/naturalcrit/codeEditor/autocompleteEmoji.js
rename to client/components/codeEditor/autocompleteEmoji.js
index c7efa172b..ae7f2628f 100644
--- a/shared/naturalcrit/codeEditor/autocompleteEmoji.js
+++ b/client/components/codeEditor/autocompleteEmoji.js
@@ -1,7 +1,7 @@
-import diceFont from '../../../themes/fonts/iconFonts/diceFont.js';
-import elderberryInn from '../../../themes/fonts/iconFonts/elderberryInn.js';
-import fontAwesome from '../../../themes/fonts/iconFonts/fontAwesome.js';
-import gameIcons from '../../../themes/fonts/iconFonts/gameIcons.js';
+import diceFont from 'themes/fonts/iconFonts/diceFont.js';
+import elderberryInn from 'themes/fonts/iconFonts/elderberryInn.js';
+import fontAwesome from 'themes/fonts/iconFonts/fontAwesome.js';
+import gameIcons from 'themes/fonts/iconFonts/gameIcons.js';
const emojis = {
...diceFont,
diff --git a/shared/naturalcrit/codeEditor/close-tag.js b/client/components/codeEditor/close-tag.js
similarity index 100%
rename from shared/naturalcrit/codeEditor/close-tag.js
rename to client/components/codeEditor/close-tag.js
diff --git a/shared/naturalcrit/codeEditor/codeEditor.jsx b/client/components/codeEditor/codeEditor.jsx
similarity index 100%
rename from shared/naturalcrit/codeEditor/codeEditor.jsx
rename to client/components/codeEditor/codeEditor.jsx
diff --git a/shared/naturalcrit/codeEditor/codeEditor.less b/client/components/codeEditor/codeEditor.less
similarity index 100%
rename from shared/naturalcrit/codeEditor/codeEditor.less
rename to client/components/codeEditor/codeEditor.less
diff --git a/shared/naturalcrit/codeEditor/fold-css.js b/client/components/codeEditor/fold-css.js
similarity index 100%
rename from shared/naturalcrit/codeEditor/fold-css.js
rename to client/components/codeEditor/fold-css.js
diff --git a/shared/naturalcrit/codeEditor/fold-pages.js b/client/components/codeEditor/fold-pages.js
similarity index 100%
rename from shared/naturalcrit/codeEditor/fold-pages.js
rename to client/components/codeEditor/fold-pages.js
diff --git a/shared/homebrewery/renderWarnings/renderWarnings.jsx b/client/components/renderWarnings/renderWarnings.jsx
similarity index 93%
rename from shared/homebrewery/renderWarnings/renderWarnings.jsx
rename to client/components/renderWarnings/renderWarnings.jsx
index e9c5f6f57..6b8ea8184 100644
--- a/shared/homebrewery/renderWarnings/renderWarnings.jsx
+++ b/client/components/renderWarnings/renderWarnings.jsx
@@ -3,7 +3,7 @@ const React = require('react');
const createClass = require('create-react-class');
const _ = require('lodash');
-import Dialog from '../../../client/components/dialog.jsx';
+import Dialog from '../dialog.jsx';
const RenderWarnings = createClass({
displayName : 'RenderWarnings',
@@ -25,7 +25,7 @@ const RenderWarnings = createClass({
if(!isChrome){
return
Built for Chrome
- Other browsers have not been tested for compatiblilty. If you
+ Other browsers have not been tested for compatibility. If you
experience issues with your document not rendering or printing
properly, please try using the latest version of Chrome before
submitting a bug report.
diff --git a/shared/homebrewery/renderWarnings/renderWarnings.less b/client/components/renderWarnings/renderWarnings.less
similarity index 100%
rename from shared/homebrewery/renderWarnings/renderWarnings.less
rename to client/components/renderWarnings/renderWarnings.less
diff --git a/shared/naturalcrit/svg/homebrew.svg.jsx b/client/components/svg/cauldron.svg.jsx
similarity index 100%
rename from shared/naturalcrit/svg/homebrew.svg.jsx
rename to client/components/svg/cauldron.svg.jsx
diff --git a/shared/naturalcrit/svg/naturalcrit.svg.jsx b/client/components/svg/naturalcrit-d20.svg.jsx
similarity index 100%
rename from shared/naturalcrit/svg/naturalcrit.svg.jsx
rename to client/components/svg/naturalcrit-d20.svg.jsx
diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx
index a19d33375..7e6681c57 100644
--- a/client/homebrew/brewRenderer/brewRenderer.jsx
+++ b/client/homebrew/brewRenderer/brewRenderer.jsx
@@ -4,13 +4,13 @@ const React = require('react');
const { useState, useRef, useMemo, useEffect } = React;
const _ = require('lodash');
-const MarkdownLegacy = require('naturalcrit/markdownLegacy.js');
-import Markdown from 'naturalcrit/markdown.js';
+const MarkdownLegacy = require('markdownLegacy.js');
+import Markdown from 'markdown.js';
const ErrorBar = require('./errorBar/errorBar.jsx');
const ToolBar = require('./toolBar/toolBar.jsx');
//TODO: move to the brew renderer
-const RenderWarnings = require('homebrewery/renderWarnings/renderWarnings.jsx');
+const RenderWarnings = require('client/components/renderWarnings/renderWarnings.jsx');
const NotificationPopup = require('./notificationPopup/notificationPopup.jsx');
const Frame = require('react-frame-component').default;
const dedent = require('dedent-tabs').default;
diff --git a/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx b/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx
index 38a85e0c7..ad8f9140a 100644
--- a/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx
+++ b/client/homebrew/brewRenderer/notificationPopup/notificationPopup.jsx
@@ -1,7 +1,7 @@
require('./notificationPopup.less');
import React, { useEffect, useState } from 'react';
import request from '../../utils/request-middleware.js';
-import Markdown from 'naturalcrit/markdown.js';
+import Markdown from 'markdown.js';
import Dialog from '../../../components/dialog.jsx';
diff --git a/client/homebrew/editor/editor.jsx b/client/homebrew/editor/editor.jsx
index d6fdf3f08..a00c47403 100644
--- a/client/homebrew/editor/editor.jsx
+++ b/client/homebrew/editor/editor.jsx
@@ -4,9 +4,9 @@ const React = require('react');
const createClass = require('create-react-class');
const _ = require('lodash');
const dedent = require('dedent-tabs').default;
-import Markdown from '../../../shared/naturalcrit/markdown.js';
+import Markdown from '../../../shared/markdown.js';
-const CodeEditor = require('naturalcrit/codeEditor/codeEditor.jsx');
+const CodeEditor = require('client/components/codeEditor/codeEditor.jsx');
const SnippetBar = require('./snippetbar/snippetbar.jsx');
const MetadataEditor = require('./metadataEditor/metadataEditor.jsx');
diff --git a/client/homebrew/pages/accountPage/accountPage.jsx b/client/homebrew/pages/accountPage/accountPage.jsx
index b69eb6e3e..412cf7812 100644
--- a/client/homebrew/pages/accountPage/accountPage.jsx
+++ b/client/homebrew/pages/accountPage/accountPage.jsx
@@ -1,7 +1,7 @@
const React = require('react');
const moment = require('moment');
const UIPage = require('../basePages/uiPage/uiPage.jsx');
-const NaturalCritIcon = require('naturalcrit/svg/naturalcrit.svg.jsx');
+const NaturalCritIcon = require('client/components/svg/naturalcrit-d20.svg.jsx');
let SAVEKEY = '';
diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx
index 524f31ac9..cb696a758 100644
--- a/client/homebrew/pages/editPage/editPage.jsx
+++ b/client/homebrew/pages/editPage/editPage.jsx
@@ -4,7 +4,7 @@ import './editPage.less';
// Common imports
import React, { useState, useEffect, useRef } from 'react';
import request from '../../utils/request-middleware.js';
-import Markdown from 'naturalcrit/markdown.js';
+import Markdown from 'markdown.js';
import _ from 'lodash';
import { DEFAULT_BREW_LOAD } from '../../../../server/brewDefaults.js';
diff --git a/client/homebrew/pages/errorPage/errorPage.jsx b/client/homebrew/pages/errorPage/errorPage.jsx
index 4ac73da8c..1b7b19e2f 100644
--- a/client/homebrew/pages/errorPage/errorPage.jsx
+++ b/client/homebrew/pages/errorPage/errorPage.jsx
@@ -1,7 +1,7 @@
require('./errorPage.less');
const React = require('react');
const UIPage = require('../basePages/uiPage/uiPage.jsx');
-import Markdown from '../../../../shared/naturalcrit/markdown.js';
+import Markdown from '../../../../shared/markdown.js';
const ErrorIndex = require('./errors/errorIndex.js');
const ErrorPage = ({ brew })=>{
diff --git a/client/homebrew/pages/homePage/homePage.jsx b/client/homebrew/pages/homePage/homePage.jsx
index 82c5b7084..8e2dd9a18 100644
--- a/client/homebrew/pages/homePage/homePage.jsx
+++ b/client/homebrew/pages/homePage/homePage.jsx
@@ -4,7 +4,7 @@ import './homePage.less';
// Common imports
import React, { useState, useEffect, useRef } from 'react';
import request from '../../utils/request-middleware.js';
-import Markdown from 'naturalcrit/markdown.js';
+import Markdown from 'markdown.js';
import _ from 'lodash';
import { DEFAULT_BREW } from '../../../../server/brewDefaults.js';
diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx
index a8a7306e4..bb3933cce 100644
--- a/client/homebrew/pages/newPage/newPage.jsx
+++ b/client/homebrew/pages/newPage/newPage.jsx
@@ -4,7 +4,7 @@ import './newPage.less';
// Common imports
import React, { useState, useEffect, useRef } from 'react';
import request from '../../utils/request-middleware.js';
-import Markdown from 'naturalcrit/markdown.js';
+import Markdown from 'markdown.js';
import _ from 'lodash';
import { DEFAULT_BREW } from '../../../../server/brewDefaults.js';
diff --git a/package.json b/package.json
index 36b467438..bb1fed2a9 100644
--- a/package.json
+++ b/package.json
@@ -44,7 +44,9 @@
"phb": "node --experimental-require-module scripts/phb.js",
"prod": "set NODE_ENV=production && npm run build",
"postinstall": "npm run build",
- "start": "node --experimental-require-module server.js"
+ "start": "node --experimental-require-module server.js",
+ "docker:build": "docker build -t ${DOCKERID}/homebrewery:$npm_package_version .",
+ "docker:publish": "docker login && docker push ${DOCKERID}/homebrewery:$npm_package_version"
},
"author": "stolksdorf",
"license": "MIT",
diff --git a/server/homebrew.api.js b/server/homebrew.api.js
index 2cedb5972..4d4f5a911 100644
--- a/server/homebrew.api.js
+++ b/server/homebrew.api.js
@@ -4,7 +4,7 @@ import { model as HomebrewModel } from './homebrew.model.js';
import express from 'express';
import zlib from 'zlib';
import GoogleActions from './googleActions.js';
-import Markdown from '../shared/naturalcrit/markdown.js';
+import Markdown from '../shared/markdown.js';
import yaml from 'js-yaml';
import asyncHandler from 'express-async-handler';
import { nanoid } from 'nanoid';
diff --git a/shared/naturalcrit/markdown.js b/shared/markdown.js
similarity index 98%
rename from shared/naturalcrit/markdown.js
rename to shared/markdown.js
index c48539008..412be27a7 100644
--- a/shared/naturalcrit/markdown.js
+++ b/shared/markdown.js
@@ -16,10 +16,10 @@ import { gfmHeadingId as MarkedGFMHeadingId, resetHeadings as MarkedGFMResetHead
import { markedEmoji as MarkedEmojis } from 'marked-emoji';
//Icon fonts included so they can appear in emoji autosuggest dropdown
-import diceFont from '../../themes/fonts/iconFonts/diceFont.js';
-import elderberryInn from '../../themes/fonts/iconFonts/elderberryInn.js';
-import gameIcons from '../../themes/fonts/iconFonts/gameIcons.js';
-import fontAwesome from '../../themes/fonts/iconFonts/fontAwesome.js';
+import diceFont from '../themes/fonts/iconFonts/diceFont.js';
+import elderberryInn from '../themes/fonts/iconFonts/elderberryInn.js';
+import gameIcons from '../themes/fonts/iconFonts/gameIcons.js';
+import fontAwesome from '../themes/fonts/iconFonts/fontAwesome.js';
const renderer = new Marked.Renderer();
const tokenizer = new Marked.Tokenizer();
diff --git a/shared/naturalcrit/markdownLegacy.js b/shared/markdownLegacy.js
similarity index 100%
rename from shared/naturalcrit/markdownLegacy.js
rename to shared/markdownLegacy.js
diff --git a/shared/naturalcrit/nav/nav.jsx b/shared/naturalcrit/nav/nav.jsx
index 50dff4c33..16f194716 100644
--- a/shared/naturalcrit/nav/nav.jsx
+++ b/shared/naturalcrit/nav/nav.jsx
@@ -5,7 +5,7 @@ const createClass = require('create-react-class');
const _ = require('lodash');
const cx = require('classnames');
-const NaturalCritIcon = require('naturalcrit/svg/naturalcrit.svg.jsx');
+const NaturalCritIcon = require('client/components/svg/naturalcrit-d20.svg.jsx');
const Nav = {
base : createClass({
diff --git a/shared/naturalcrit/svg/combat.svg.jsx b/shared/naturalcrit/svg/combat.svg.jsx
deleted file mode 100644
index fc92b4df4..000000000
--- a/shared/naturalcrit/svg/combat.svg.jsx
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = function(props){
- return ;
-};
diff --git a/tests/markdown/basic.test.js b/tests/markdown/basic.test.js
index aaa2adf58..ddceb9197 100644
--- a/tests/markdown/basic.test.js
+++ b/tests/markdown/basic.test.js
@@ -1,6 +1,6 @@
-import Markdown from 'naturalcrit/markdown.js';
+import Markdown from 'markdown.js';
test('Processes the markdown within an HTML block if its just a class wrapper', function() {
const source = '*Bold text*
';
diff --git a/tests/markdown/definition-lists.test.js b/tests/markdown/definition-lists.test.js
index 144dad880..12499d559 100644
--- a/tests/markdown/definition-lists.test.js
+++ b/tests/markdown/definition-lists.test.js
@@ -1,6 +1,6 @@
-import Markdown from 'naturalcrit/markdown.js';
+import Markdown from 'markdown.js';
describe('Inline Definition Lists', ()=>{
test('No Term 1 Definition', function() {
diff --git a/tests/markdown/emojis.test.js b/tests/markdown/emojis.test.js
index e70ebb673..e21eec414 100644
--- a/tests/markdown/emojis.test.js
+++ b/tests/markdown/emojis.test.js
@@ -1,4 +1,4 @@
-import Markdown from 'naturalcrit/markdown.js';
+import Markdown from 'markdown.js';
const dedent = require('dedent-tabs').default;
// Marked.js adds line returns after closing tags on some default tokens.
diff --git a/tests/markdown/hard-breaks.test.js b/tests/markdown/hard-breaks.test.js
index 63bfaef9c..068b2053a 100644
--- a/tests/markdown/hard-breaks.test.js
+++ b/tests/markdown/hard-breaks.test.js
@@ -1,6 +1,6 @@
-import Markdown from 'naturalcrit/markdown.js';
+import Markdown from 'markdown.js';
describe('Hard Breaks', ()=>{
test('Single Break', function() {
diff --git a/tests/markdown/mustache-syntax.test.js b/tests/markdown/mustache-syntax.test.js
index d17518411..5743f7903 100644
--- a/tests/markdown/mustache-syntax.test.js
+++ b/tests/markdown/mustache-syntax.test.js
@@ -1,7 +1,7 @@
/* eslint-disable max-lines */
const dedent = require('dedent-tabs').default;
-import Markdown from 'naturalcrit/markdown.js';
+import Markdown from 'markdown.js';
// Marked.js adds line returns after closing tags on some default tokens.
// This removes those line returns for comparison sake.
diff --git a/tests/markdown/non-breaking-spaces.test.js b/tests/markdown/non-breaking-spaces.test.js
index e498645a6..9da59b047 100644
--- a/tests/markdown/non-breaking-spaces.test.js
+++ b/tests/markdown/non-breaking-spaces.test.js
@@ -1,6 +1,6 @@
-import Markdown from 'naturalcrit/markdown.js';
+import Markdown from 'markdown.js';
describe('Non-Breaking Spaces Interactions', ()=>{
test('I am actually a single-line definition list!', function() {
diff --git a/tests/markdown/paragraph-justification.test.js b/tests/markdown/paragraph-justification.test.js
index 7876f5a26..f5a5b12ab 100644
--- a/tests/markdown/paragraph-justification.test.js
+++ b/tests/markdown/paragraph-justification.test.js
@@ -1,6 +1,6 @@
-import Markdown from 'naturalcrit/markdown.js';
+import Markdown from 'markdown.js';
describe('Justification', ()=>{
test('Left Justify', function() {
diff --git a/tests/markdown/variables.test.js b/tests/markdown/variables.test.js
index ea98fe56c..64232078f 100644
--- a/tests/markdown/variables.test.js
+++ b/tests/markdown/variables.test.js
@@ -1,7 +1,7 @@
/* eslint-disable max-lines */
const dedent = require('dedent-tabs').default;
-import Markdown from 'naturalcrit/markdown.js';
+import Markdown from 'markdown.js';
// Marked.js adds line returns after closing tags on some default tokens.
// This removes those line returns for comparison sake.
diff --git a/themes/V3/Blank/snippets/footer.gen.js b/themes/V3/Blank/snippets/footer.gen.js
index 9384baed7..417085642 100644
--- a/themes/V3/Blank/snippets/footer.gen.js
+++ b/themes/V3/Blank/snippets/footer.gen.js
@@ -1,4 +1,4 @@
-import Markdown from '../../../../shared/naturalcrit/markdown.js';
+import Markdown from '../../../../shared/markdown.js';
module.exports = {
createFooterFunc : function(headerSize=1){