diff --git a/.dockerignore b/.dockerignore index e64b70da3f..37da97c59f 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,8 +1,8 @@ /logs/ /target/ /var/ -/web/node_modules/ -/web/public/ +/frontend/node_modules/ +/frontend/public/ /.vscode/ /.idea/ /bin/ diff --git a/.gitignore b/.gitignore index ec8cdf7908..3eb5f67e70 100644 --- a/.gitignore +++ b/.gitignore @@ -8,9 +8,9 @@ debug debug.test .vscode .idea/ -/web/node_modules/ -/web/public/ -/web/coverage +/frontend/node_modules/ +/frontend/public/ +/frontend/coverage *.prof *.test /rest-client.env.json diff --git a/Dockerfile b/Dockerfile index a52f40c829..2890bf9906 100644 --- a/Dockerfile +++ b/Dockerfile @@ -64,9 +64,9 @@ ARG CI ENV HUSKY_SKIP_INSTALL=true RUN apk add --no-cache --update git -ADD web/package.json /srv/web/package.json -ADD web/package-lock.json /srv/web/package-lock.json -RUN cd /srv/web && CI=true npm ci +ADD frontend/package.json /srv/frontend/package.json +ADD frontend/package-lock.json /srv/frontend/package-lock.json +RUN cd /srv/frontend && CI=true npm ci FROM node:10.11-alpine as build-frontend @@ -74,9 +74,9 @@ ARG CI ARG SKIP_FRONTEND_TEST ARG NODE_ENV=production -COPY --from=build-frontend-deps /srv/web/node_modules /srv/web/node_modules -ADD web /srv/web -RUN cd /srv/web && \ +COPY --from=build-frontend-deps /srv/frontend/node_modules /srv/frontend/node_modules +ADD frontend /srv/frontend +RUN cd /srv/frontend && \ if [ -z "$SKIP_FRONTEND_TEST" ] ; then npx run-p lint test build ; \ else echo "skip frontend tests and lint" ; npm run build ; fi && \ rm -rf ./node_modules @@ -93,7 +93,7 @@ ADD backend/scripts/import.sh /usr/local/bin/import RUN chmod +x /entrypoint.sh /usr/local/bin/backup /usr/local/bin/restore /usr/local/bin/import COPY --from=build-backend /build/backend/remark42 /srv/remark42 -COPY --from=build-frontend /srv/web/public/ /srv/web +COPY --from=build-frontend /srv/frontend/public/ /srv/web RUN chown -R app:app /srv RUN ln -s /srv/remark42 /usr/bin/remark42 diff --git a/Dockerfile.artifacts b/Dockerfile.artifacts index faf143e702..f5c8668785 100644 --- a/Dockerfile.artifacts +++ b/Dockerfile.artifacts @@ -9,19 +9,20 @@ ARG DRONE_BRANCH ENV SKIP_FRONTEND_TEST=true RUN apk add --no-cache --update git -ADD web/package.json /srv/web/package.json -ADD web/package-lock.json /srv/web/package-lock.json -RUN cd /srv/web && CI=true npm ci +ADD frontend/package.json /srv/frontend/package.json +ADD frontend/package-lock.json /srv/frontend/package-lock.json +RUN cd /srv/frontend && CI=true npm ci FROM node:10.11-alpine as build-frontend ARG CI ARG NODE_ENV=production ENV SKIP_FRONTEND_TEST=true +ENV HUSKY_SKIP_INSTALL=true -COPY --from=build-frontend-deps /srv/web/node_modules /srv/web/node_modules -ADD web /srv/web -RUN cd /srv/web && \ +COPY --from=build-frontend-deps /srv/frontend/node_modules /srv/frontend/node_modules +ADD frontend /srv/frontend +RUN cd /srv/frontend && \ npm run build && \ rm -rf ./node_modules @@ -35,7 +36,7 @@ WORKDIR /go/src/github.com/umputun/remark/backend ADD backend /go/src/github.com/umputun/remark/backend ADD README.md /go/src/github.com/umputun/remark/ ADD LICENSE /go/src/github.com/umputun/remark/ -COPY --from=build-frontend /srv/web/public/ web +COPY --from=build-frontend /srv/frontend/public/ web RUN \ export WEB_ROOT=/go/src/github.com/umputun/remark/backend/web && \ diff --git a/README.md b/README.md index 2ed34d7299..378a68e1d8 100644 --- a/README.md +++ b/README.md @@ -450,9 +450,9 @@ To run backend with mongodb store mongo container should be started first - `doc * install [Node.js 8](https://nodejs.org/en/) or higher; * install [NPM 6.1.0](https://www.npmjs.com/package/npm); -* run `npm install` inside `./web`; +* run `npm install` inside `./frontend`; * run `npm run build` there; -* result files will be saved in `./web/public`. +* result files will be saved in `./frontend/public`. **Note** Running `npm install` will set up precommit hooks into your git repository. It used to reformat your frontend code using `prettier` and lint with `eslint` before every commit. @@ -475,7 +475,7 @@ Developer build running by `webpack-dev-server` supports devtools for [React](ht #### Frontend guide -Frontend guide can be found here: [./FRONTEND.MAN.md](./FRONTEND.MAN.md) +Frontend guide can be found here: [./frontend/README.md](./frontend/README.md) ## API diff --git a/web/.babelrc b/frontend/.babelrc similarity index 100% rename from web/.babelrc rename to frontend/.babelrc diff --git a/web/.eslintrc.js b/frontend/.eslintrc.js similarity index 100% rename from web/.eslintrc.js rename to frontend/.eslintrc.js diff --git a/web/.prettierignore b/frontend/.prettierignore similarity index 100% rename from web/.prettierignore rename to frontend/.prettierignore diff --git a/web/.prettierrc.js b/frontend/.prettierrc.js similarity index 100% rename from web/.prettierrc.js rename to frontend/.prettierrc.js diff --git a/FRONTEND.MAN.md b/frontend/Readme.md similarity index 72% rename from FRONTEND.MAN.md rename to frontend/Readme.md index e90e536f6e..a1f4f31d0f 100644 --- a/FRONTEND.MAN.md +++ b/frontend/Readme.md @@ -1,7 +1,9 @@ +# Frontend guide + ### Code Style * project uses typescript to statically analyze code -* project uses `eslint` to check frontend code. You can manually run `npm run lint` from `./web` directory to check style. +* project uses `eslint` to check frontend code. You can manually run via `npm run lint`. * git hooks (via husky) installed automatically on `npm install` and check and try to fix code style if possible, otherwise commit will be rejected * if you want IDE integration, you need `eslint` plugin to be installed. @@ -9,7 +11,7 @@ * although styles have `scss` extension, it is actually pack of post-css plugins, so syntax differs, for example in `calc` function. * component styles use BEM notation (at least it should): `block__element_modifier`. Also there are `mix` classes: `block_modifier`. -* component base style resides in the component's root directory with name of component converted to kebab-case. For example `ListComments` style is located in `./web/app/components/list-comments/list-comments/scss` +* component base style resides in the component's root directory with name of component converted to kebab-case. For example `ListComments` style is located in `./app/components/list-comments/list-comments/scss` * component's element style resides in its own subdirectory, with name consisting of full elements selector, for example `ListComments` `item` element is placed in `__item` directory under name `./list-comments__item.scss` * each style should be `require`d in `index.ts` of component's root directory @@ -17,11 +19,15 @@ * imports for typescript, javascript files should be without extension: `./index`, not `./index.ts` * if file resides in same directory or in subdirectory import should be relative: `./types/something` -* otherwise it should start from `@app` namespace: `@app/common/store` which mapped to `/web/app/common/store.ts` in webpack, tsconfig and jest +* otherwise it should start from `@app` namespace: `@app/common/store` which mapped to `/app/common/store.ts` in webpack, tsconfig and jest ### Testing * project uses `jest` as test harness. * jest check files that match regex `\.test\.(j|t)s(x?)$`, i.e `comment.test.tsx`, `comment.test.js` -* you should run tests via `npm run test` from `./web` directory before pushing to master to avoid failed build -* example tests can be found in `./web/app/store/user/reducers.test.ts`, `./web/app/components/auth-panel/auth-panel.test.tsx` \ No newline at end of file +* tests are running on push attempt +* example tests can be found in `./app/store/user/reducers.test.ts`, `./app/components/auth-panel/auth-panel.test.tsx` + +### Notes + +* Frontend part being bundled on docker env gets placed on `/src/web` and is available via `http://{host}/web`. for example `embed.js` entry point will be availabale at `http://{host}/web/embed.js` \ No newline at end of file diff --git a/web/app/@types/__webpack_public_path__.d.ts b/frontend/app/@types/__webpack_public_path__.d.ts similarity index 100% rename from web/app/@types/__webpack_public_path__.d.ts rename to frontend/app/@types/__webpack_public_path__.d.ts diff --git a/web/app/@types/bem-react-helper/index.d.ts b/frontend/app/@types/bem-react-helper/index.d.ts similarity index 100% rename from web/app/@types/bem-react-helper/index.d.ts rename to frontend/app/@types/bem-react-helper/index.d.ts diff --git a/web/app/@types/markdown-toolbar-element/index.d.ts b/frontend/app/@types/markdown-toolbar-element/index.d.ts similarity index 100% rename from web/app/@types/markdown-toolbar-element/index.d.ts rename to frontend/app/@types/markdown-toolbar-element/index.d.ts diff --git a/web/app/common/accessibility.ts b/frontend/app/common/accessibility.ts similarity index 100% rename from web/app/common/accessibility.ts rename to frontend/app/common/accessibility.ts diff --git a/web/app/common/api.ts b/frontend/app/common/api.ts similarity index 100% rename from web/app/common/api.ts rename to frontend/app/common/api.ts diff --git a/web/app/common/closest-polyfill.js b/frontend/app/common/closest-polyfill.js similarity index 100% rename from web/app/common/closest-polyfill.js rename to frontend/app/common/closest-polyfill.js diff --git a/web/app/common/config-types.ts b/frontend/app/common/config-types.ts similarity index 100% rename from web/app/common/config-types.ts rename to frontend/app/common/config-types.ts diff --git a/web/app/common/constants.ts b/frontend/app/common/constants.ts similarity index 100% rename from web/app/common/constants.ts rename to frontend/app/common/constants.ts diff --git a/web/app/common/cookies.ts b/frontend/app/common/cookies.ts similarity index 100% rename from web/app/common/cookies.ts rename to frontend/app/common/cookies.ts diff --git a/web/app/common/copy.ts b/frontend/app/common/copy.ts similarity index 100% rename from web/app/common/copy.ts rename to frontend/app/common/copy.ts diff --git a/web/app/common/fetcher.test.ts b/frontend/app/common/fetcher.test.ts similarity index 100% rename from web/app/common/fetcher.test.ts rename to frontend/app/common/fetcher.test.ts diff --git a/web/app/common/fetcher.ts b/frontend/app/common/fetcher.ts similarity index 100% rename from web/app/common/fetcher.ts rename to frontend/app/common/fetcher.ts diff --git a/web/app/common/local-storage.ts b/frontend/app/common/local-storage.ts similarity index 100% rename from web/app/common/local-storage.ts rename to frontend/app/common/local-storage.ts diff --git a/web/app/common/polyfills.ts b/frontend/app/common/polyfills.ts similarity index 100% rename from web/app/common/polyfills.ts rename to frontend/app/common/polyfills.ts diff --git a/web/app/common/settings.ts b/frontend/app/common/settings.ts similarity index 100% rename from web/app/common/settings.ts rename to frontend/app/common/settings.ts diff --git a/web/app/common/static_store.ts b/frontend/app/common/static_store.ts similarity index 100% rename from web/app/common/static_store.ts rename to frontend/app/common/static_store.ts diff --git a/web/app/common/types.ts b/frontend/app/common/types.ts similarity index 100% rename from web/app/common/types.ts rename to frontend/app/common/types.ts diff --git a/web/app/common/user-info-settings.ts b/frontend/app/common/user-info-settings.ts similarity index 100% rename from web/app/common/user-info-settings.ts rename to frontend/app/common/user-info-settings.ts diff --git a/web/app/components/auth-panel/__anonymous-login-form/auth-panel__anonymous-login-form.scss b/frontend/app/components/auth-panel/__anonymous-login-form/auth-panel__anonymous-login-form.scss similarity index 100% rename from web/app/components/auth-panel/__anonymous-login-form/auth-panel__anonymous-login-form.scss rename to frontend/app/components/auth-panel/__anonymous-login-form/auth-panel__anonymous-login-form.scss diff --git a/web/app/components/auth-panel/__anonymous-login-form/auth-panel__anonymous-login-form.tsx b/frontend/app/components/auth-panel/__anonymous-login-form/auth-panel__anonymous-login-form.tsx similarity index 100% rename from web/app/components/auth-panel/__anonymous-login-form/auth-panel__anonymous-login-form.tsx rename to frontend/app/components/auth-panel/__anonymous-login-form/auth-panel__anonymous-login-form.tsx diff --git a/web/app/components/auth-panel/__anonymous-login-form/index.ts b/frontend/app/components/auth-panel/__anonymous-login-form/index.ts similarity index 100% rename from web/app/components/auth-panel/__anonymous-login-form/index.ts rename to frontend/app/components/auth-panel/__anonymous-login-form/index.ts diff --git a/web/app/components/auth-panel/__column/auth-panel__column.scss b/frontend/app/components/auth-panel/__column/auth-panel__column.scss similarity index 100% rename from web/app/components/auth-panel/__column/auth-panel__column.scss rename to frontend/app/components/auth-panel/__column/auth-panel__column.scss diff --git a/web/app/components/auth-panel/__pseudo-link/auth-panel__pseudo-link.scss b/frontend/app/components/auth-panel/__pseudo-link/auth-panel__pseudo-link.scss similarity index 100% rename from web/app/components/auth-panel/__pseudo-link/auth-panel__pseudo-link.scss rename to frontend/app/components/auth-panel/__pseudo-link/auth-panel__pseudo-link.scss diff --git a/web/app/components/auth-panel/__readonly-label/auth-panel__readonly-label.scss b/frontend/app/components/auth-panel/__readonly-label/auth-panel__readonly-label.scss similarity index 100% rename from web/app/components/auth-panel/__readonly-label/auth-panel__readonly-label.scss rename to frontend/app/components/auth-panel/__readonly-label/auth-panel__readonly-label.scss diff --git a/web/app/components/auth-panel/__select-label/auth-panel__select-label.scss b/frontend/app/components/auth-panel/__select-label/auth-panel__select-label.scss similarity index 100% rename from web/app/components/auth-panel/__select-label/auth-panel__select-label.scss rename to frontend/app/components/auth-panel/__select-label/auth-panel__select-label.scss diff --git a/web/app/components/auth-panel/__select/auth-panel__select.scss b/frontend/app/components/auth-panel/__select/auth-panel__select.scss similarity index 100% rename from web/app/components/auth-panel/__select/auth-panel__select.scss rename to frontend/app/components/auth-panel/__select/auth-panel__select.scss diff --git a/web/app/components/auth-panel/__sign-out/auth-panel__sign-out.scss b/frontend/app/components/auth-panel/__sign-out/auth-panel__sign-out.scss similarity index 100% rename from web/app/components/auth-panel/__sign-out/auth-panel__sign-out.scss rename to frontend/app/components/auth-panel/__sign-out/auth-panel__sign-out.scss diff --git a/web/app/components/auth-panel/__sort/auth-panel__sort.scss b/frontend/app/components/auth-panel/__sort/auth-panel__sort.scss similarity index 100% rename from web/app/components/auth-panel/__sort/auth-panel__sort.scss rename to frontend/app/components/auth-panel/__sort/auth-panel__sort.scss diff --git a/web/app/components/auth-panel/__user-id/auth-panel__user-id.scss b/frontend/app/components/auth-panel/__user-id/auth-panel__user-id.scss similarity index 100% rename from web/app/components/auth-panel/__user-id/auth-panel__user-id.scss rename to frontend/app/components/auth-panel/__user-id/auth-panel__user-id.scss diff --git a/web/app/components/auth-panel/__user-id/auth-panel__user-id.tsx b/frontend/app/components/auth-panel/__user-id/auth-panel__user-id.tsx similarity index 100% rename from web/app/components/auth-panel/__user-id/auth-panel__user-id.tsx rename to frontend/app/components/auth-panel/__user-id/auth-panel__user-id.tsx diff --git a/web/app/components/auth-panel/__user-id/index.ts b/frontend/app/components/auth-panel/__user-id/index.ts similarity index 100% rename from web/app/components/auth-panel/__user-id/index.ts rename to frontend/app/components/auth-panel/__user-id/index.ts diff --git a/web/app/components/auth-panel/_logged-in/auth-panel_logged-in.scss b/frontend/app/components/auth-panel/_logged-in/auth-panel_logged-in.scss similarity index 100% rename from web/app/components/auth-panel/_logged-in/auth-panel_logged-in.scss rename to frontend/app/components/auth-panel/_logged-in/auth-panel_logged-in.scss diff --git a/web/app/components/auth-panel/_theme/_dark/auth-panel_theme_dark.scss b/frontend/app/components/auth-panel/_theme/_dark/auth-panel_theme_dark.scss similarity index 100% rename from web/app/components/auth-panel/_theme/_dark/auth-panel_theme_dark.scss rename to frontend/app/components/auth-panel/_theme/_dark/auth-panel_theme_dark.scss diff --git a/web/app/components/auth-panel/_theme/_light/auth-panel_theme_light.scss b/frontend/app/components/auth-panel/_theme/_light/auth-panel_theme_light.scss similarity index 100% rename from web/app/components/auth-panel/_theme/_light/auth-panel_theme_light.scss rename to frontend/app/components/auth-panel/_theme/_light/auth-panel_theme_light.scss diff --git a/web/app/components/auth-panel/auth-panel.scss b/frontend/app/components/auth-panel/auth-panel.scss similarity index 100% rename from web/app/components/auth-panel/auth-panel.scss rename to frontend/app/components/auth-panel/auth-panel.scss diff --git a/web/app/components/auth-panel/auth-panel.test.tsx b/frontend/app/components/auth-panel/auth-panel.test.tsx similarity index 100% rename from web/app/components/auth-panel/auth-panel.test.tsx rename to frontend/app/components/auth-panel/auth-panel.test.tsx diff --git a/web/app/components/auth-panel/auth-panel.tsx b/frontend/app/components/auth-panel/auth-panel.tsx similarity index 100% rename from web/app/components/auth-panel/auth-panel.tsx rename to frontend/app/components/auth-panel/auth-panel.tsx diff --git a/web/app/components/auth-panel/index.ts b/frontend/app/components/auth-panel/index.ts similarity index 100% rename from web/app/components/auth-panel/index.ts rename to frontend/app/components/auth-panel/index.ts diff --git a/web/app/components/avatar-icon/_default/avatar-icon_default.scss b/frontend/app/components/avatar-icon/_default/avatar-icon_default.scss similarity index 100% rename from web/app/components/avatar-icon/_default/avatar-icon_default.scss rename to frontend/app/components/avatar-icon/_default/avatar-icon_default.scss diff --git a/web/app/components/avatar-icon/anonymous-icon.svg b/frontend/app/components/avatar-icon/anonymous-icon.svg similarity index 100% rename from web/app/components/avatar-icon/anonymous-icon.svg rename to frontend/app/components/avatar-icon/anonymous-icon.svg diff --git a/web/app/components/avatar-icon/avatar-icon.scss b/frontend/app/components/avatar-icon/avatar-icon.scss similarity index 100% rename from web/app/components/avatar-icon/avatar-icon.scss rename to frontend/app/components/avatar-icon/avatar-icon.scss diff --git a/web/app/components/avatar-icon/avatar-icon.svg b/frontend/app/components/avatar-icon/avatar-icon.svg similarity index 100% rename from web/app/components/avatar-icon/avatar-icon.svg rename to frontend/app/components/avatar-icon/avatar-icon.svg diff --git a/web/app/components/avatar-icon/avatar-icon.tsx b/frontend/app/components/avatar-icon/avatar-icon.tsx similarity index 100% rename from web/app/components/avatar-icon/avatar-icon.tsx rename to frontend/app/components/avatar-icon/avatar-icon.tsx diff --git a/web/app/components/avatar-icon/index.ts b/frontend/app/components/avatar-icon/index.ts similarity index 100% rename from web/app/components/avatar-icon/index.ts rename to frontend/app/components/avatar-icon/index.ts diff --git a/web/app/components/blocked-users/__action/blocked-users__action.scss b/frontend/app/components/blocked-users/__action/blocked-users__action.scss similarity index 100% rename from web/app/components/blocked-users/__action/blocked-users__action.scss rename to frontend/app/components/blocked-users/__action/blocked-users__action.scss diff --git a/web/app/components/blocked-users/__list-item/_view/_invisible/blocked-users__list-item_view_invisible.scss b/frontend/app/components/blocked-users/__list-item/_view/_invisible/blocked-users__list-item_view_invisible.scss similarity index 100% rename from web/app/components/blocked-users/__list-item/_view/_invisible/blocked-users__list-item_view_invisible.scss rename to frontend/app/components/blocked-users/__list-item/_view/_invisible/blocked-users__list-item_view_invisible.scss diff --git a/web/app/components/blocked-users/__list-item/blocked-users__list-item.scss b/frontend/app/components/blocked-users/__list-item/blocked-users__list-item.scss similarity index 100% rename from web/app/components/blocked-users/__list-item/blocked-users__list-item.scss rename to frontend/app/components/blocked-users/__list-item/blocked-users__list-item.scss diff --git a/web/app/components/blocked-users/__list/blocked-users__list.scss b/frontend/app/components/blocked-users/__list/blocked-users__list.scss similarity index 100% rename from web/app/components/blocked-users/__list/blocked-users__list.scss rename to frontend/app/components/blocked-users/__list/blocked-users__list.scss diff --git a/web/app/components/blocked-users/__username/blocked-users__username.scss b/frontend/app/components/blocked-users/__username/blocked-users__username.scss similarity index 100% rename from web/app/components/blocked-users/__username/blocked-users__username.scss rename to frontend/app/components/blocked-users/__username/blocked-users__username.scss diff --git a/web/app/components/blocked-users/_theme/_dark/blocked-users_theme_dark.scss b/frontend/app/components/blocked-users/_theme/_dark/blocked-users_theme_dark.scss similarity index 100% rename from web/app/components/blocked-users/_theme/_dark/blocked-users_theme_dark.scss rename to frontend/app/components/blocked-users/_theme/_dark/blocked-users_theme_dark.scss diff --git a/web/app/components/blocked-users/_theme/_light/blocked-users_theme_light.scss b/frontend/app/components/blocked-users/_theme/_light/blocked-users_theme_light.scss similarity index 100% rename from web/app/components/blocked-users/_theme/_light/blocked-users_theme_light.scss rename to frontend/app/components/blocked-users/_theme/_light/blocked-users_theme_light.scss diff --git a/web/app/components/blocked-users/blocked-users.scss b/frontend/app/components/blocked-users/blocked-users.scss similarity index 100% rename from web/app/components/blocked-users/blocked-users.scss rename to frontend/app/components/blocked-users/blocked-users.scss diff --git a/web/app/components/blocked-users/blocked-users.tsx b/frontend/app/components/blocked-users/blocked-users.tsx similarity index 100% rename from web/app/components/blocked-users/blocked-users.tsx rename to frontend/app/components/blocked-users/blocked-users.tsx diff --git a/web/app/components/blocked-users/index.ts b/frontend/app/components/blocked-users/index.ts similarity index 100% rename from web/app/components/blocked-users/index.ts rename to frontend/app/components/blocked-users/index.ts diff --git a/web/app/components/button/_focused/button_focused.scss b/frontend/app/components/button/_focused/button_focused.scss similarity index 100% rename from web/app/components/button/_focused/button_focused.scss rename to frontend/app/components/button/_focused/button_focused.scss diff --git a/web/app/components/button/_kind/_link/button_kind_link.scss b/frontend/app/components/button/_kind/_link/button_kind_link.scss similarity index 100% rename from web/app/components/button/_kind/_link/button_kind_link.scss rename to frontend/app/components/button/_kind/_link/button_kind_link.scss diff --git a/web/app/components/button/_kind/_text/button_kind_text.scss b/frontend/app/components/button/_kind/_text/button_kind_text.scss similarity index 100% rename from web/app/components/button/_kind/_text/button_kind_text.scss rename to frontend/app/components/button/_kind/_text/button_kind_text.scss diff --git a/web/app/components/button/button.scss b/frontend/app/components/button/button.scss similarity index 100% rename from web/app/components/button/button.scss rename to frontend/app/components/button/button.scss diff --git a/web/app/components/button/button.tsx b/frontend/app/components/button/button.tsx similarity index 100% rename from web/app/components/button/button.tsx rename to frontend/app/components/button/button.tsx diff --git a/web/app/components/button/index.ts b/frontend/app/components/button/index.ts similarity index 100% rename from web/app/components/button/index.ts rename to frontend/app/components/button/index.ts diff --git a/web/app/components/comment/__action/_type/_collapse/comment__action_type_collapse.scss b/frontend/app/components/comment/__action/_type/_collapse/comment__action_type_collapse.scss similarity index 100% rename from web/app/components/comment/__action/_type/_collapse/comment__action_type_collapse.scss rename to frontend/app/components/comment/__action/_type/_collapse/comment__action_type_collapse.scss diff --git a/web/app/components/comment/__action/_type/_delete/comment__action_type_delete.scss b/frontend/app/components/comment/__action/_type/_delete/comment__action_type_delete.scss similarity index 100% rename from web/app/components/comment/__action/_type/_delete/comment__action_type_delete.scss rename to frontend/app/components/comment/__action/_type/_delete/comment__action_type_delete.scss diff --git a/web/app/components/comment/__action/_type/_edit/comment__action_type_edit.scss b/frontend/app/components/comment/__action/_type/_edit/comment__action_type_edit.scss similarity index 100% rename from web/app/components/comment/__action/_type/_edit/comment__action_type_edit.scss rename to frontend/app/components/comment/__action/_type/_edit/comment__action_type_edit.scss diff --git a/web/app/components/comment/__action/comment__action.scss b/frontend/app/components/comment/__action/comment__action.scss similarity index 100% rename from web/app/components/comment/__action/comment__action.scss rename to frontend/app/components/comment/__action/comment__action.scss diff --git a/web/app/components/comment/__body/comment__body.scss b/frontend/app/components/comment/__body/comment__body.scss similarity index 100% rename from web/app/components/comment/__body/comment__body.scss rename to frontend/app/components/comment/__body/comment__body.scss diff --git a/web/app/components/comment/__control/_select-label/comment__control_select-label.scss b/frontend/app/components/comment/__control/_select-label/comment__control_select-label.scss similarity index 100% rename from web/app/components/comment/__control/_select-label/comment__control_select-label.scss rename to frontend/app/components/comment/__control/_select-label/comment__control_select-label.scss diff --git a/web/app/components/comment/__control/_select/comment__control_select.scss b/frontend/app/components/comment/__control/_select/comment__control_select.scss similarity index 100% rename from web/app/components/comment/__control/_select/comment__control_select.scss rename to frontend/app/components/comment/__control/_select/comment__control_select.scss diff --git a/web/app/components/comment/__control/_view/_inactive/comment__control_view_inactive.scss b/frontend/app/components/comment/__control/_view/_inactive/comment__control_view_inactive.scss similarity index 100% rename from web/app/components/comment/__control/_view/_inactive/comment__control_view_inactive.scss rename to frontend/app/components/comment/__control/_view/_inactive/comment__control_view_inactive.scss diff --git a/web/app/components/comment/__control/comment__control.scss b/frontend/app/components/comment/__control/comment__control.scss similarity index 100% rename from web/app/components/comment/__control/comment__control.scss rename to frontend/app/components/comment/__control/comment__control.scss diff --git a/web/app/components/comment/__controls/comment__controls.scss b/frontend/app/components/comment/__controls/comment__controls.scss similarity index 100% rename from web/app/components/comment/__controls/comment__controls.scss rename to frontend/app/components/comment/__controls/comment__controls.scss diff --git a/web/app/components/comment/__edit-timer/comment__edit-timer.scss b/frontend/app/components/comment/__edit-timer/comment__edit-timer.scss similarity index 100% rename from web/app/components/comment/__edit-timer/comment__edit-timer.scss rename to frontend/app/components/comment/__edit-timer/comment__edit-timer.scss diff --git a/web/app/components/comment/__info/comment__info.scss b/frontend/app/components/comment/__info/comment__info.scss similarity index 100% rename from web/app/components/comment/__info/comment__info.scss rename to frontend/app/components/comment/__info/comment__info.scss diff --git a/web/app/components/comment/__input/comment__input.scss b/frontend/app/components/comment/__input/comment__input.scss similarity index 100% rename from web/app/components/comment/__input/comment__input.scss rename to frontend/app/components/comment/__input/comment__input.scss diff --git a/web/app/components/comment/__link-to-parent/_focused/comment__link-to-parent__focused.svg b/frontend/app/components/comment/__link-to-parent/_focused/comment__link-to-parent__focused.svg similarity index 100% rename from web/app/components/comment/__link-to-parent/_focused/comment__link-to-parent__focused.svg rename to frontend/app/components/comment/__link-to-parent/_focused/comment__link-to-parent__focused.svg diff --git a/web/app/components/comment/__link-to-parent/comment__link-to-parent.scss b/frontend/app/components/comment/__link-to-parent/comment__link-to-parent.scss similarity index 100% rename from web/app/components/comment/__link-to-parent/comment__link-to-parent.scss rename to frontend/app/components/comment/__link-to-parent/comment__link-to-parent.scss diff --git a/web/app/components/comment/__link-to-parent/comment__link-to-parent.svg b/frontend/app/components/comment/__link-to-parent/comment__link-to-parent.svg similarity index 100% rename from web/app/components/comment/__link-to-parent/comment__link-to-parent.svg rename to frontend/app/components/comment/__link-to-parent/comment__link-to-parent.svg diff --git a/web/app/components/comment/__score-value/comment__score-value.scss b/frontend/app/components/comment/__score-value/comment__score-value.scss similarity index 100% rename from web/app/components/comment/__score-value/comment__score-value.scss rename to frontend/app/components/comment/__score-value/comment__score-value.scss diff --git a/web/app/components/comment/__score/comment__score.scss b/frontend/app/components/comment/__score/comment__score.scss similarity index 100% rename from web/app/components/comment/__score/comment__score.scss rename to frontend/app/components/comment/__score/comment__score.scss diff --git a/web/app/components/comment/__status/comment__status.scss b/frontend/app/components/comment/__status/comment__status.scss similarity index 100% rename from web/app/components/comment/__status/comment__status.scss rename to frontend/app/components/comment/__status/comment__status.scss diff --git a/web/app/components/comment/__text/comment__text.scss b/frontend/app/components/comment/__text/comment__text.scss similarity index 100% rename from web/app/components/comment/__text/comment__text.scss rename to frontend/app/components/comment/__text/comment__text.scss diff --git a/web/app/components/comment/__time/comment__time.scss b/frontend/app/components/comment/__time/comment__time.scss similarity index 100% rename from web/app/components/comment/__time/comment__time.scss rename to frontend/app/components/comment/__time/comment__time.scss diff --git a/web/app/components/comment/__user-id/comment__user-id.scss b/frontend/app/components/comment/__user-id/comment__user-id.scss similarity index 100% rename from web/app/components/comment/__user-id/comment__user-id.scss rename to frontend/app/components/comment/__user-id/comment__user-id.scss diff --git a/web/app/components/comment/__username/comment__username.scss b/frontend/app/components/comment/__username/comment__username.scss similarity index 100% rename from web/app/components/comment/__username/comment__username.scss rename to frontend/app/components/comment/__username/comment__username.scss diff --git a/web/app/components/comment/__verification/_active/comment__verification_active.scss b/frontend/app/components/comment/__verification/_active/comment__verification_active.scss similarity index 100% rename from web/app/components/comment/__verification/_active/comment__verification_active.scss rename to frontend/app/components/comment/__verification/_active/comment__verification_active.scss diff --git a/web/app/components/comment/__verification/_active/comment__verification_active.svg b/frontend/app/components/comment/__verification/_active/comment__verification_active.svg similarity index 100% rename from web/app/components/comment/__verification/_active/comment__verification_active.svg rename to frontend/app/components/comment/__verification/_active/comment__verification_active.svg diff --git a/web/app/components/comment/__verification/_clickable/comment__verification_clickable.scss b/frontend/app/components/comment/__verification/_clickable/comment__verification_clickable.scss similarity index 100% rename from web/app/components/comment/__verification/_clickable/comment__verification_clickable.scss rename to frontend/app/components/comment/__verification/_clickable/comment__verification_clickable.scss diff --git a/web/app/components/comment/__verification/comment__verification.scss b/frontend/app/components/comment/__verification/comment__verification.scss similarity index 100% rename from web/app/components/comment/__verification/comment__verification.scss rename to frontend/app/components/comment/__verification/comment__verification.scss diff --git a/web/app/components/comment/__verification/comment__verification.svg b/frontend/app/components/comment/__verification/comment__verification.svg similarity index 100% rename from web/app/components/comment/__verification/comment__verification.svg rename to frontend/app/components/comment/__verification/comment__verification.svg diff --git a/web/app/components/comment/__vote/_disabled/comment__vote_disabled.scss b/frontend/app/components/comment/__vote/_disabled/comment__vote_disabled.scss similarity index 100% rename from web/app/components/comment/__vote/_disabled/comment__vote_disabled.scss rename to frontend/app/components/comment/__vote/_disabled/comment__vote_disabled.scss diff --git a/web/app/components/comment/__vote/_disabled/comment__vote_disabled.svg b/frontend/app/components/comment/__vote/_disabled/comment__vote_disabled.svg similarity index 100% rename from web/app/components/comment/__vote/_disabled/comment__vote_disabled.svg rename to frontend/app/components/comment/__vote/_disabled/comment__vote_disabled.svg diff --git a/web/app/components/comment/__vote/_selected/comment__vote_selected.scss b/frontend/app/components/comment/__vote/_selected/comment__vote_selected.scss similarity index 100% rename from web/app/components/comment/__vote/_selected/comment__vote_selected.scss rename to frontend/app/components/comment/__vote/_selected/comment__vote_selected.scss diff --git a/web/app/components/comment/__vote/_type/_down/comment__vote_type_down.scss b/frontend/app/components/comment/__vote/_type/_down/comment__vote_type_down.scss similarity index 100% rename from web/app/components/comment/__vote/_type/_down/comment__vote_type_down.scss rename to frontend/app/components/comment/__vote/_type/_down/comment__vote_type_down.scss diff --git a/web/app/components/comment/__vote/_type/_down/comment__vote_type_down.svg b/frontend/app/components/comment/__vote/_type/_down/comment__vote_type_down.svg similarity index 100% rename from web/app/components/comment/__vote/_type/_down/comment__vote_type_down.svg rename to frontend/app/components/comment/__vote/_type/_down/comment__vote_type_down.svg diff --git a/web/app/components/comment/__vote/_type/_up/comment__vote_type_up.scss b/frontend/app/components/comment/__vote/_type/_up/comment__vote_type_up.scss similarity index 100% rename from web/app/components/comment/__vote/_type/_up/comment__vote_type_up.scss rename to frontend/app/components/comment/__vote/_type/_up/comment__vote_type_up.scss diff --git a/web/app/components/comment/__vote/_type/_up/comment__vote_type_up.svg b/frontend/app/components/comment/__vote/_type/_up/comment__vote_type_up.svg similarity index 100% rename from web/app/components/comment/__vote/_type/_up/comment__vote_type_up.svg rename to frontend/app/components/comment/__vote/_type/_up/comment__vote_type_up.svg diff --git a/web/app/components/comment/__vote/comment__vote.scss b/frontend/app/components/comment/__vote/comment__vote.scss similarity index 100% rename from web/app/components/comment/__vote/comment__vote.scss rename to frontend/app/components/comment/__vote/comment__vote.scss diff --git a/web/app/components/comment/__vote/comment__vote.svg b/frontend/app/components/comment/__vote/comment__vote.svg similarity index 100% rename from web/app/components/comment/__vote/comment__vote.svg rename to frontend/app/components/comment/__vote/comment__vote.svg diff --git a/web/app/components/comment/_collapsed/comment_collapsed.scss b/frontend/app/components/comment/_collapsed/comment_collapsed.scss similarity index 100% rename from web/app/components/comment/_collapsed/comment_collapsed.scss rename to frontend/app/components/comment/_collapsed/comment_collapsed.scss diff --git a/web/app/components/comment/_editing/comment_editing.scss b/frontend/app/components/comment/_editing/comment_editing.scss similarity index 100% rename from web/app/components/comment/_editing/comment_editing.scss rename to frontend/app/components/comment/_editing/comment_editing.scss diff --git a/web/app/components/comment/_level/comment_level.scss b/frontend/app/components/comment/_level/comment_level.scss similarity index 100% rename from web/app/components/comment/_level/comment_level.scss rename to frontend/app/components/comment/_level/comment_level.scss diff --git a/web/app/components/comment/_replying/comment_replying.scss b/frontend/app/components/comment/_replying/comment_replying.scss similarity index 100% rename from web/app/components/comment/_replying/comment_replying.scss rename to frontend/app/components/comment/_replying/comment_replying.scss diff --git a/web/app/components/comment/_theme/_dark/comment_theme_dark.scss b/frontend/app/components/comment/_theme/_dark/comment_theme_dark.scss similarity index 100% rename from web/app/components/comment/_theme/_dark/comment_theme_dark.scss rename to frontend/app/components/comment/_theme/_dark/comment_theme_dark.scss diff --git a/web/app/components/comment/_theme/_light/comment_theme_light.scss b/frontend/app/components/comment/_theme/_light/comment_theme_light.scss similarity index 100% rename from web/app/components/comment/_theme/_light/comment_theme_light.scss rename to frontend/app/components/comment/_theme/_light/comment_theme_light.scss diff --git a/web/app/components/comment/_useless/comment_useless.scss b/frontend/app/components/comment/_useless/comment_useless.scss similarity index 100% rename from web/app/components/comment/_useless/comment_useless.scss rename to frontend/app/components/comment/_useless/comment_useless.scss diff --git a/web/app/components/comment/_view/_admin/comment_view_admin.scss b/frontend/app/components/comment/_view/_admin/comment_view_admin.scss similarity index 100% rename from web/app/components/comment/_view/_admin/comment_view_admin.scss rename to frontend/app/components/comment/_view/_admin/comment_view_admin.scss diff --git a/web/app/components/comment/_view/_preview/comment_view_preview.scss b/frontend/app/components/comment/_view/_preview/comment_view_preview.scss similarity index 100% rename from web/app/components/comment/_view/_preview/comment_view_preview.scss rename to frontend/app/components/comment/_view/_preview/comment_view_preview.scss diff --git a/web/app/components/comment/_view/_user/comment_view_user.scss b/frontend/app/components/comment/_view/_user/comment_view_user.scss similarity index 100% rename from web/app/components/comment/_view/_user/comment_view_user.scss rename to frontend/app/components/comment/_view/_user/comment_view_user.scss diff --git a/web/app/components/comment/comment.scss b/frontend/app/components/comment/comment.scss similarity index 100% rename from web/app/components/comment/comment.scss rename to frontend/app/components/comment/comment.scss diff --git a/web/app/components/comment/comment.test.tsx b/frontend/app/components/comment/comment.test.tsx similarity index 100% rename from web/app/components/comment/comment.test.tsx rename to frontend/app/components/comment/comment.test.tsx diff --git a/web/app/components/comment/comment.tsx b/frontend/app/components/comment/comment.tsx similarity index 100% rename from web/app/components/comment/comment.tsx rename to frontend/app/components/comment/comment.tsx diff --git a/web/app/components/comment/connected-comment.ts b/frontend/app/components/comment/connected-comment.ts similarity index 100% rename from web/app/components/comment/connected-comment.ts rename to frontend/app/components/comment/connected-comment.ts diff --git a/web/app/components/comment/index.ts b/frontend/app/components/comment/index.ts similarity index 100% rename from web/app/components/comment/index.ts rename to frontend/app/components/comment/index.ts diff --git a/web/app/components/comment/styles.ts b/frontend/app/components/comment/styles.ts similarity index 100% rename from web/app/components/comment/styles.ts rename to frontend/app/components/comment/styles.ts diff --git a/web/app/components/countdown/index.tsx b/frontend/app/components/countdown/index.tsx similarity index 100% rename from web/app/components/countdown/index.tsx rename to frontend/app/components/countdown/index.tsx diff --git a/web/app/components/dropdown/__content/dropdown__content.scss b/frontend/app/components/dropdown/__content/dropdown__content.scss similarity index 100% rename from web/app/components/dropdown/__content/dropdown__content.scss rename to frontend/app/components/dropdown/__content/dropdown__content.scss diff --git a/web/app/components/dropdown/__item/dropdown__item.scss b/frontend/app/components/dropdown/__item/dropdown__item.scss similarity index 100% rename from web/app/components/dropdown/__item/dropdown__item.scss rename to frontend/app/components/dropdown/__item/dropdown__item.scss diff --git a/web/app/components/dropdown/__item/dropdown__item.tsx b/frontend/app/components/dropdown/__item/dropdown__item.tsx similarity index 100% rename from web/app/components/dropdown/__item/dropdown__item.tsx rename to frontend/app/components/dropdown/__item/dropdown__item.tsx diff --git a/web/app/components/dropdown/__item/index.ts b/frontend/app/components/dropdown/__item/index.ts similarity index 100% rename from web/app/components/dropdown/__item/index.ts rename to frontend/app/components/dropdown/__item/index.ts diff --git a/web/app/components/dropdown/__items/dropdown__items.scss b/frontend/app/components/dropdown/__items/dropdown__items.scss similarity index 100% rename from web/app/components/dropdown/__items/dropdown__items.scss rename to frontend/app/components/dropdown/__items/dropdown__items.scss diff --git a/web/app/components/dropdown/__title/dropdown__title.scss b/frontend/app/components/dropdown/__title/dropdown__title.scss similarity index 100% rename from web/app/components/dropdown/__title/dropdown__title.scss rename to frontend/app/components/dropdown/__title/dropdown__title.scss diff --git a/web/app/components/dropdown/_active/dropdown_active.scss b/frontend/app/components/dropdown/_active/dropdown_active.scss similarity index 100% rename from web/app/components/dropdown/_active/dropdown_active.scss rename to frontend/app/components/dropdown/_active/dropdown_active.scss diff --git a/web/app/components/dropdown/_theme/_dark/dropdown_theme_dark.scss b/frontend/app/components/dropdown/_theme/_dark/dropdown_theme_dark.scss similarity index 100% rename from web/app/components/dropdown/_theme/_dark/dropdown_theme_dark.scss rename to frontend/app/components/dropdown/_theme/_dark/dropdown_theme_dark.scss diff --git a/web/app/components/dropdown/_theme/_light/dropdown_theme_light.scss b/frontend/app/components/dropdown/_theme/_light/dropdown_theme_light.scss similarity index 100% rename from web/app/components/dropdown/_theme/_light/dropdown_theme_light.scss rename to frontend/app/components/dropdown/_theme/_light/dropdown_theme_light.scss diff --git a/web/app/components/dropdown/dropdown.scss b/frontend/app/components/dropdown/dropdown.scss similarity index 100% rename from web/app/components/dropdown/dropdown.scss rename to frontend/app/components/dropdown/dropdown.scss diff --git a/web/app/components/dropdown/dropdown.tsx b/frontend/app/components/dropdown/dropdown.tsx similarity index 100% rename from web/app/components/dropdown/dropdown.tsx rename to frontend/app/components/dropdown/dropdown.tsx diff --git a/web/app/components/dropdown/index.ts b/frontend/app/components/dropdown/index.ts similarity index 100% rename from web/app/components/dropdown/index.ts rename to frontend/app/components/dropdown/index.ts diff --git a/web/app/components/input/__actions/input__actions.scss b/frontend/app/components/input/__actions/input__actions.scss similarity index 100% rename from web/app/components/input/__actions/input__actions.scss rename to frontend/app/components/input/__actions/input__actions.scss diff --git a/web/app/components/input/__button/_type/_preview/input__button_type_preview.scss b/frontend/app/components/input/__button/_type/_preview/input__button_type_preview.scss similarity index 100% rename from web/app/components/input/__button/_type/_preview/input__button_type_preview.scss rename to frontend/app/components/input/__button/_type/_preview/input__button_type_preview.scss diff --git a/web/app/components/input/__button/_type/_send/input__button_type_send.scss b/frontend/app/components/input/__button/_type/_send/input__button_type_send.scss similarity index 100% rename from web/app/components/input/__button/_type/_send/input__button_type_send.scss rename to frontend/app/components/input/__button/_type/_send/input__button_type_send.scss diff --git a/web/app/components/input/__button/input__button.scss b/frontend/app/components/input/__button/input__button.scss similarity index 100% rename from web/app/components/input/__button/input__button.scss rename to frontend/app/components/input/__button/input__button.scss diff --git a/web/app/components/input/__control-panel/input__control-panel.scss b/frontend/app/components/input/__control-panel/input__control-panel.scss similarity index 100% rename from web/app/components/input/__control-panel/input__control-panel.scss rename to frontend/app/components/input/__control-panel/input__control-panel.scss diff --git a/web/app/components/input/__counter/input__counter.scss b/frontend/app/components/input/__counter/input__counter.scss similarity index 100% rename from web/app/components/input/__counter/input__counter.scss rename to frontend/app/components/input/__counter/input__counter.scss diff --git a/web/app/components/input/__error/input__error.scss b/frontend/app/components/input/__error/input__error.scss similarity index 100% rename from web/app/components/input/__error/input__error.scss rename to frontend/app/components/input/__error/input__error.scss diff --git a/web/app/components/input/__field-wrapper/input__field-wrapper.scss b/frontend/app/components/input/__field-wrapper/input__field-wrapper.scss similarity index 100% rename from web/app/components/input/__field-wrapper/input__field-wrapper.scss rename to frontend/app/components/input/__field-wrapper/input__field-wrapper.scss diff --git a/web/app/components/input/__field/input__field.scss b/frontend/app/components/input/__field/input__field.scss similarity index 100% rename from web/app/components/input/__field/input__field.scss rename to frontend/app/components/input/__field/input__field.scss diff --git a/web/app/components/input/__markdown-link/input__markdown-link.scss b/frontend/app/components/input/__markdown-link/input__markdown-link.scss similarity index 100% rename from web/app/components/input/__markdown-link/input__markdown-link.scss rename to frontend/app/components/input/__markdown-link/input__markdown-link.scss diff --git a/web/app/components/input/__markdown-toolbar/input__markdown-toolbar.scss b/frontend/app/components/input/__markdown-toolbar/input__markdown-toolbar.scss similarity index 100% rename from web/app/components/input/__markdown-toolbar/input__markdown-toolbar.scss rename to frontend/app/components/input/__markdown-toolbar/input__markdown-toolbar.scss diff --git a/web/app/components/input/__markdown/input__markdown.scss b/frontend/app/components/input/__markdown/input__markdown.scss similarity index 100% rename from web/app/components/input/__markdown/input__markdown.scss rename to frontend/app/components/input/__markdown/input__markdown.scss diff --git a/web/app/components/input/__preview-wrapper/input__preview-wrapper.scss b/frontend/app/components/input/__preview-wrapper/input__preview-wrapper.scss similarity index 100% rename from web/app/components/input/__preview-wrapper/input__preview-wrapper.scss rename to frontend/app/components/input/__preview-wrapper/input__preview-wrapper.scss diff --git a/web/app/components/input/__preview/input__preview.scss b/frontend/app/components/input/__preview/input__preview.scss similarity index 100% rename from web/app/components/input/__preview/input__preview.scss rename to frontend/app/components/input/__preview/input__preview.scss diff --git a/web/app/components/input/__rss-link/input__rss-link.scss b/frontend/app/components/input/__rss-link/input__rss-link.scss similarity index 100% rename from web/app/components/input/__rss-link/input__rss-link.scss rename to frontend/app/components/input/__rss-link/input__rss-link.scss diff --git a/web/app/components/input/__rss/input__rss.scss b/frontend/app/components/input/__rss/input__rss.scss similarity index 100% rename from web/app/components/input/__rss/input__rss.scss rename to frontend/app/components/input/__rss/input__rss.scss diff --git a/web/app/components/input/_theme/_dark/input_theme_dark.scss b/frontend/app/components/input/_theme/_dark/input_theme_dark.scss similarity index 100% rename from web/app/components/input/_theme/_dark/input_theme_dark.scss rename to frontend/app/components/input/_theme/_dark/input_theme_dark.scss diff --git a/web/app/components/input/_theme/_light/input_theme_light.scss b/frontend/app/components/input/_theme/_light/input_theme_light.scss similarity index 100% rename from web/app/components/input/_theme/_light/input_theme_light.scss rename to frontend/app/components/input/_theme/_light/input_theme_light.scss diff --git a/web/app/components/input/index.ts b/frontend/app/components/input/index.ts similarity index 100% rename from web/app/components/input/index.ts rename to frontend/app/components/input/index.ts diff --git a/web/app/components/input/input.scss b/frontend/app/components/input/input.scss similarity index 100% rename from web/app/components/input/input.scss rename to frontend/app/components/input/input.scss diff --git a/web/app/components/input/input.tsx b/frontend/app/components/input/input.tsx similarity index 100% rename from web/app/components/input/input.tsx rename to frontend/app/components/input/input.tsx diff --git a/web/app/components/input/markdown-toolbar-icons/bold-icon.tsx b/frontend/app/components/input/markdown-toolbar-icons/bold-icon.tsx similarity index 100% rename from web/app/components/input/markdown-toolbar-icons/bold-icon.tsx rename to frontend/app/components/input/markdown-toolbar-icons/bold-icon.tsx diff --git a/web/app/components/input/markdown-toolbar-icons/code-icon.tsx b/frontend/app/components/input/markdown-toolbar-icons/code-icon.tsx similarity index 100% rename from web/app/components/input/markdown-toolbar-icons/code-icon.tsx rename to frontend/app/components/input/markdown-toolbar-icons/code-icon.tsx diff --git a/web/app/components/input/markdown-toolbar-icons/header-icon.tsx b/frontend/app/components/input/markdown-toolbar-icons/header-icon.tsx similarity index 100% rename from web/app/components/input/markdown-toolbar-icons/header-icon.tsx rename to frontend/app/components/input/markdown-toolbar-icons/header-icon.tsx diff --git a/web/app/components/input/markdown-toolbar-icons/italic-icon.tsx b/frontend/app/components/input/markdown-toolbar-icons/italic-icon.tsx similarity index 100% rename from web/app/components/input/markdown-toolbar-icons/italic-icon.tsx rename to frontend/app/components/input/markdown-toolbar-icons/italic-icon.tsx diff --git a/web/app/components/input/markdown-toolbar-icons/link-icon.tsx b/frontend/app/components/input/markdown-toolbar-icons/link-icon.tsx similarity index 100% rename from web/app/components/input/markdown-toolbar-icons/link-icon.tsx rename to frontend/app/components/input/markdown-toolbar-icons/link-icon.tsx diff --git a/web/app/components/input/markdown-toolbar-icons/ordered-list-icon.tsx b/frontend/app/components/input/markdown-toolbar-icons/ordered-list-icon.tsx similarity index 100% rename from web/app/components/input/markdown-toolbar-icons/ordered-list-icon.tsx rename to frontend/app/components/input/markdown-toolbar-icons/ordered-list-icon.tsx diff --git a/web/app/components/input/markdown-toolbar-icons/quote-icon.tsx b/frontend/app/components/input/markdown-toolbar-icons/quote-icon.tsx similarity index 100% rename from web/app/components/input/markdown-toolbar-icons/quote-icon.tsx rename to frontend/app/components/input/markdown-toolbar-icons/quote-icon.tsx diff --git a/web/app/components/input/markdown-toolbar-icons/unordered-list-icon.tsx b/frontend/app/components/input/markdown-toolbar-icons/unordered-list-icon.tsx similarity index 100% rename from web/app/components/input/markdown-toolbar-icons/unordered-list-icon.tsx rename to frontend/app/components/input/markdown-toolbar-icons/unordered-list-icon.tsx diff --git a/web/app/components/input/markdown-toolbar.tsx b/frontend/app/components/input/markdown-toolbar.tsx similarity index 100% rename from web/app/components/input/markdown-toolbar.tsx rename to frontend/app/components/input/markdown-toolbar.tsx diff --git a/web/app/components/input/styles.ts b/frontend/app/components/input/styles.ts similarity index 100% rename from web/app/components/input/styles.ts rename to frontend/app/components/input/styles.ts diff --git a/web/app/components/input/textarea-autosize.tsx b/frontend/app/components/input/textarea-autosize.tsx similarity index 100% rename from web/app/components/input/textarea-autosize.tsx rename to frontend/app/components/input/textarea-autosize.tsx diff --git a/web/app/components/list-comments/__item/list-comments__item.scss b/frontend/app/components/list-comments/__item/list-comments__item.scss similarity index 100% rename from web/app/components/list-comments/__item/list-comments__item.scss rename to frontend/app/components/list-comments/__item/list-comments__item.scss diff --git a/web/app/components/list-comments/index.ts b/frontend/app/components/list-comments/index.ts similarity index 100% rename from web/app/components/list-comments/index.ts rename to frontend/app/components/list-comments/index.ts diff --git a/web/app/components/list-comments/list-comments.scss b/frontend/app/components/list-comments/list-comments.scss similarity index 100% rename from web/app/components/list-comments/list-comments.scss rename to frontend/app/components/list-comments/list-comments.scss diff --git a/web/app/components/list-comments/list-comments.tsx b/frontend/app/components/list-comments/list-comments.tsx similarity index 100% rename from web/app/components/list-comments/list-comments.tsx rename to frontend/app/components/list-comments/list-comments.tsx diff --git a/web/app/components/preloader/index.ts b/frontend/app/components/preloader/index.ts similarity index 100% rename from web/app/components/preloader/index.ts rename to frontend/app/components/preloader/index.ts diff --git a/web/app/components/preloader/preloader.test.tsx b/frontend/app/components/preloader/preloader.test.tsx similarity index 100% rename from web/app/components/preloader/preloader.test.tsx rename to frontend/app/components/preloader/preloader.test.tsx diff --git a/web/app/components/preloader/preloader.tsx b/frontend/app/components/preloader/preloader.tsx similarity index 100% rename from web/app/components/preloader/preloader.tsx rename to frontend/app/components/preloader/preloader.tsx diff --git a/web/app/components/raw-content/_theme/_dark/raw-content_theme_dark.scss b/frontend/app/components/raw-content/_theme/_dark/raw-content_theme_dark.scss similarity index 100% rename from web/app/components/raw-content/_theme/_dark/raw-content_theme_dark.scss rename to frontend/app/components/raw-content/_theme/_dark/raw-content_theme_dark.scss diff --git a/web/app/components/raw-content/_theme/_light/raw-content_theme_light.scss b/frontend/app/components/raw-content/_theme/_light/raw-content_theme_light.scss similarity index 100% rename from web/app/components/raw-content/_theme/_light/raw-content_theme_light.scss rename to frontend/app/components/raw-content/_theme/_light/raw-content_theme_light.scss diff --git a/web/app/components/raw-content/index.ts b/frontend/app/components/raw-content/index.ts similarity index 100% rename from web/app/components/raw-content/index.ts rename to frontend/app/components/raw-content/index.ts diff --git a/web/app/components/raw-content/raw-content.scss b/frontend/app/components/raw-content/raw-content.scss similarity index 100% rename from web/app/components/raw-content/raw-content.scss rename to frontend/app/components/raw-content/raw-content.scss diff --git a/web/app/components/root/__copyright/root__copyright.scss b/frontend/app/components/root/__copyright/root__copyright.scss similarity index 100% rename from web/app/components/root/__copyright/root__copyright.scss rename to frontend/app/components/root/__copyright/root__copyright.scss diff --git a/web/app/components/root/__input/root__input.scss b/frontend/app/components/root/__input/root__input.scss similarity index 100% rename from web/app/components/root/__input/root__input.scss rename to frontend/app/components/root/__input/root__input.scss diff --git a/web/app/components/root/__pinned-comment/root__pinned-comment.scss b/frontend/app/components/root/__pinned-comment/root__pinned-comment.scss similarity index 100% rename from web/app/components/root/__pinned-comment/root__pinned-comment.scss rename to frontend/app/components/root/__pinned-comment/root__pinned-comment.scss diff --git a/web/app/components/root/__pinned-comments/root__pinned-comments.scss b/frontend/app/components/root/__pinned-comments/root__pinned-comments.scss similarity index 100% rename from web/app/components/root/__pinned-comments/root__pinned-comments.scss rename to frontend/app/components/root/__pinned-comments/root__pinned-comments.scss diff --git a/web/app/components/root/__preloader/root__preloader.scss b/frontend/app/components/root/__preloader/root__preloader.scss similarity index 100% rename from web/app/components/root/__preloader/root__preloader.scss rename to frontend/app/components/root/__preloader/root__preloader.scss diff --git a/web/app/components/root/__show-more/root__show-more.scss b/frontend/app/components/root/__show-more/root__show-more.scss similarity index 100% rename from web/app/components/root/__show-more/root__show-more.scss rename to frontend/app/components/root/__show-more/root__show-more.scss diff --git a/web/app/components/root/__thread/root__thread.scss b/frontend/app/components/root/__thread/root__thread.scss similarity index 100% rename from web/app/components/root/__thread/root__thread.scss rename to frontend/app/components/root/__thread/root__thread.scss diff --git a/web/app/components/root/__threads/root__threads.scss b/frontend/app/components/root/__threads/root__threads.scss similarity index 100% rename from web/app/components/root/__threads/root__threads.scss rename to frontend/app/components/root/__threads/root__threads.scss diff --git a/web/app/components/root/_theme/_dark/root_theme_dark.scss b/frontend/app/components/root/_theme/_dark/root_theme_dark.scss similarity index 100% rename from web/app/components/root/_theme/_dark/root_theme_dark.scss rename to frontend/app/components/root/_theme/_dark/root_theme_dark.scss diff --git a/web/app/components/root/_theme/_light/root_theme_light.scss b/frontend/app/components/root/_theme/_light/root_theme_light.scss similarity index 100% rename from web/app/components/root/_theme/_light/root_theme_light.scss rename to frontend/app/components/root/_theme/_light/root_theme_light.scss diff --git a/web/app/components/root/index.ts b/frontend/app/components/root/index.ts similarity index 100% rename from web/app/components/root/index.ts rename to frontend/app/components/root/index.ts diff --git a/web/app/components/root/root.scss b/frontend/app/components/root/root.scss similarity index 100% rename from web/app/components/root/root.scss rename to frontend/app/components/root/root.scss diff --git a/web/app/components/root/root.tsx b/frontend/app/components/root/root.tsx similarity index 100% rename from web/app/components/root/root.tsx rename to frontend/app/components/root/root.tsx diff --git a/web/app/components/thread/index.ts b/frontend/app/components/thread/index.ts similarity index 100% rename from web/app/components/thread/index.ts rename to frontend/app/components/thread/index.ts diff --git a/web/app/components/thread/thread.tsx b/frontend/app/components/thread/thread.tsx similarity index 100% rename from web/app/components/thread/thread.tsx rename to frontend/app/components/thread/thread.tsx diff --git a/web/app/components/user-info/__avatar/user-info__avatar.scss b/frontend/app/components/user-info/__avatar/user-info__avatar.scss similarity index 100% rename from web/app/components/user-info/__avatar/user-info__avatar.scss rename to frontend/app/components/user-info/__avatar/user-info__avatar.scss diff --git a/web/app/components/user-info/__id/user-info__id.scss b/frontend/app/components/user-info/__id/user-info__id.scss similarity index 100% rename from web/app/components/user-info/__id/user-info__id.scss rename to frontend/app/components/user-info/__id/user-info__id.scss diff --git a/web/app/components/user-info/__preloader/user-info__preloader.scss b/frontend/app/components/user-info/__preloader/user-info__preloader.scss similarity index 100% rename from web/app/components/user-info/__preloader/user-info__preloader.scss rename to frontend/app/components/user-info/__preloader/user-info__preloader.scss diff --git a/web/app/components/user-info/__title/user-info__title.scss b/frontend/app/components/user-info/__title/user-info__title.scss similarity index 100% rename from web/app/components/user-info/__title/user-info__title.scss rename to frontend/app/components/user-info/__title/user-info__title.scss diff --git a/web/app/components/user-info/index.ts b/frontend/app/components/user-info/index.ts similarity index 100% rename from web/app/components/user-info/index.ts rename to frontend/app/components/user-info/index.ts diff --git a/web/app/components/user-info/last-comments-list.tsx b/frontend/app/components/user-info/last-comments-list.tsx similarity index 100% rename from web/app/components/user-info/last-comments-list.tsx rename to frontend/app/components/user-info/last-comments-list.tsx diff --git a/web/app/components/user-info/user-info.scss b/frontend/app/components/user-info/user-info.scss similarity index 100% rename from web/app/components/user-info/user-info.scss rename to frontend/app/components/user-info/user-info.scss diff --git a/web/app/components/user-info/user-info.tsx b/frontend/app/components/user-info/user-info.tsx similarity index 100% rename from web/app/components/user-info/user-info.tsx rename to frontend/app/components/user-info/user-info.tsx diff --git a/web/app/components/with-theme/index.ts b/frontend/app/components/with-theme/index.ts similarity index 100% rename from web/app/components/with-theme/index.ts rename to frontend/app/components/with-theme/index.ts diff --git a/web/app/counter.ts b/frontend/app/counter.ts similarity index 100% rename from web/app/counter.ts rename to frontend/app/counter.ts diff --git a/web/app/deleteme.ts b/frontend/app/deleteme.ts similarity index 100% rename from web/app/deleteme.ts rename to frontend/app/deleteme.ts diff --git a/web/app/embed.ts b/frontend/app/embed.ts similarity index 100% rename from web/app/embed.ts rename to frontend/app/embed.ts diff --git a/web/app/last-comments.tsx b/frontend/app/last-comments.tsx similarity index 100% rename from web/app/last-comments.tsx rename to frontend/app/last-comments.tsx diff --git a/web/app/remark.tsx b/frontend/app/remark.tsx similarity index 100% rename from web/app/remark.tsx rename to frontend/app/remark.tsx diff --git a/web/app/store/actions.ts b/frontend/app/store/actions.ts similarity index 100% rename from web/app/store/actions.ts rename to frontend/app/store/actions.ts diff --git a/web/app/store/comments/actions.ts b/frontend/app/store/comments/actions.ts similarity index 100% rename from web/app/store/comments/actions.ts rename to frontend/app/store/comments/actions.ts diff --git a/web/app/store/comments/getters.ts b/frontend/app/store/comments/getters.ts similarity index 100% rename from web/app/store/comments/getters.ts rename to frontend/app/store/comments/getters.ts diff --git a/web/app/store/comments/reducers.ts b/frontend/app/store/comments/reducers.ts similarity index 100% rename from web/app/store/comments/reducers.ts rename to frontend/app/store/comments/reducers.ts diff --git a/web/app/store/comments/types.ts b/frontend/app/store/comments/types.ts similarity index 100% rename from web/app/store/comments/types.ts rename to frontend/app/store/comments/types.ts diff --git a/web/app/store/comments/utils.ts b/frontend/app/store/comments/utils.ts similarity index 100% rename from web/app/store/comments/utils.ts rename to frontend/app/store/comments/utils.ts diff --git a/web/app/store/index.ts b/frontend/app/store/index.ts similarity index 100% rename from web/app/store/index.ts rename to frontend/app/store/index.ts diff --git a/web/app/store/post_info/actions.ts b/frontend/app/store/post_info/actions.ts similarity index 100% rename from web/app/store/post_info/actions.ts rename to frontend/app/store/post_info/actions.ts diff --git a/web/app/store/post_info/reducers.ts b/frontend/app/store/post_info/reducers.ts similarity index 100% rename from web/app/store/post_info/reducers.ts rename to frontend/app/store/post_info/reducers.ts diff --git a/web/app/store/post_info/types.ts b/frontend/app/store/post_info/types.ts similarity index 100% rename from web/app/store/post_info/types.ts rename to frontend/app/store/post_info/types.ts diff --git a/web/app/store/reducers.ts b/frontend/app/store/reducers.ts similarity index 100% rename from web/app/store/reducers.ts rename to frontend/app/store/reducers.ts diff --git a/web/app/store/sort/actions.ts b/frontend/app/store/sort/actions.ts similarity index 100% rename from web/app/store/sort/actions.ts rename to frontend/app/store/sort/actions.ts diff --git a/web/app/store/sort/reducers.ts b/frontend/app/store/sort/reducers.ts similarity index 100% rename from web/app/store/sort/reducers.ts rename to frontend/app/store/sort/reducers.ts diff --git a/web/app/store/sort/types.ts b/frontend/app/store/sort/types.ts similarity index 100% rename from web/app/store/sort/types.ts rename to frontend/app/store/sort/types.ts diff --git a/web/app/store/theme/actions.ts b/frontend/app/store/theme/actions.ts similarity index 100% rename from web/app/store/theme/actions.ts rename to frontend/app/store/theme/actions.ts diff --git a/web/app/store/theme/reducers.ts b/frontend/app/store/theme/reducers.ts similarity index 100% rename from web/app/store/theme/reducers.ts rename to frontend/app/store/theme/reducers.ts diff --git a/web/app/store/theme/types.ts b/frontend/app/store/theme/types.ts similarity index 100% rename from web/app/store/theme/types.ts rename to frontend/app/store/theme/types.ts diff --git a/web/app/store/thread/actions.ts b/frontend/app/store/thread/actions.ts similarity index 100% rename from web/app/store/thread/actions.ts rename to frontend/app/store/thread/actions.ts diff --git a/web/app/store/thread/getters.ts b/frontend/app/store/thread/getters.ts similarity index 100% rename from web/app/store/thread/getters.ts rename to frontend/app/store/thread/getters.ts diff --git a/web/app/store/thread/reducers.test.ts b/frontend/app/store/thread/reducers.test.ts similarity index 100% rename from web/app/store/thread/reducers.test.ts rename to frontend/app/store/thread/reducers.test.ts diff --git a/web/app/store/thread/reducers.ts b/frontend/app/store/thread/reducers.ts similarity index 100% rename from web/app/store/thread/reducers.ts rename to frontend/app/store/thread/reducers.ts diff --git a/web/app/store/thread/types.ts b/frontend/app/store/thread/types.ts similarity index 100% rename from web/app/store/thread/types.ts rename to frontend/app/store/thread/types.ts diff --git a/web/app/store/thread/utils.ts b/frontend/app/store/thread/utils.ts similarity index 100% rename from web/app/store/thread/utils.ts rename to frontend/app/store/thread/utils.ts diff --git a/web/app/store/user-info/actions.ts b/frontend/app/store/user-info/actions.ts similarity index 100% rename from web/app/store/user-info/actions.ts rename to frontend/app/store/user-info/actions.ts diff --git a/web/app/store/user-info/reducers.ts b/frontend/app/store/user-info/reducers.ts similarity index 100% rename from web/app/store/user-info/reducers.ts rename to frontend/app/store/user-info/reducers.ts diff --git a/web/app/store/user-info/types.ts b/frontend/app/store/user-info/types.ts similarity index 100% rename from web/app/store/user-info/types.ts rename to frontend/app/store/user-info/types.ts diff --git a/web/app/store/user/actions.ts b/frontend/app/store/user/actions.ts similarity index 100% rename from web/app/store/user/actions.ts rename to frontend/app/store/user/actions.ts diff --git a/web/app/store/user/reducers.test.ts b/frontend/app/store/user/reducers.test.ts similarity index 100% rename from web/app/store/user/reducers.test.ts rename to frontend/app/store/user/reducers.test.ts diff --git a/web/app/store/user/reducers.ts b/frontend/app/store/user/reducers.ts similarity index 100% rename from web/app/store/user/reducers.ts rename to frontend/app/store/user/reducers.ts diff --git a/web/app/store/user/types.ts b/frontend/app/store/user/types.ts similarity index 100% rename from web/app/store/user/types.ts rename to frontend/app/store/user/types.ts diff --git a/web/app/testUtils/index.ts b/frontend/app/testUtils/index.ts similarity index 100% rename from web/app/testUtils/index.ts rename to frontend/app/testUtils/index.ts diff --git a/web/app/testUtils/mockStyles.js b/frontend/app/testUtils/mockStyles.js similarity index 100% rename from web/app/testUtils/mockStyles.js rename to frontend/app/testUtils/mockStyles.js diff --git a/web/app/utils/debounce.ts b/frontend/app/utils/debounce.ts similarity index 100% rename from web/app/utils/debounce.ts rename to frontend/app/utils/debounce.ts diff --git a/web/app/utils/debug-node.ts b/frontend/app/utils/debug-node.ts similarity index 100% rename from web/app/utils/debug-node.ts rename to frontend/app/utils/debug-node.ts diff --git a/web/app/utils/derequire.ts b/frontend/app/utils/derequire.ts similarity index 100% rename from web/app/utils/derequire.ts rename to frontend/app/utils/derequire.ts diff --git a/web/app/utils/email.ts b/frontend/app/utils/email.ts similarity index 100% rename from web/app/utils/email.ts rename to frontend/app/utils/email.ts diff --git a/web/app/utils/errorUtils.ts b/frontend/app/utils/errorUtils.ts similarity index 100% rename from web/app/utils/errorUtils.ts rename to frontend/app/utils/errorUtils.ts diff --git a/web/app/utils/exclude.ts b/frontend/app/utils/exclude.ts similarity index 100% rename from web/app/utils/exclude.ts rename to frontend/app/utils/exclude.ts diff --git a/web/app/utils/isUserAnonymous.ts b/frontend/app/utils/isUserAnonymous.ts similarity index 100% rename from web/app/utils/isUserAnonymous.ts rename to frontend/app/utils/isUserAnonymous.ts diff --git a/web/app/utils/noop.ts b/frontend/app/utils/noop.ts similarity index 100% rename from web/app/utils/noop.ts rename to frontend/app/utils/noop.ts diff --git a/web/app/utils/replaceSelection.ts b/frontend/app/utils/replaceSelection.ts similarity index 100% rename from web/app/utils/replaceSelection.ts rename to frontend/app/utils/replaceSelection.ts diff --git a/web/app/utils/sleep.ts b/frontend/app/utils/sleep.ts similarity index 100% rename from web/app/utils/sleep.ts rename to frontend/app/utils/sleep.ts diff --git a/web/app/utils/ttl-to-time.ts b/frontend/app/utils/ttl-to-time.ts similarity index 100% rename from web/app/utils/ttl-to-time.ts rename to frontend/app/utils/ttl-to-time.ts diff --git a/web/comments.ejs b/frontend/comments.ejs similarity index 100% rename from web/comments.ejs rename to frontend/comments.ejs diff --git a/web/counter.ejs b/frontend/counter.ejs similarity index 100% rename from web/counter.ejs rename to frontend/counter.ejs diff --git a/web/deleteme.html b/frontend/deleteme.html similarity index 100% rename from web/deleteme.html rename to frontend/deleteme.html diff --git a/web/iframe.html b/frontend/iframe.html similarity index 100% rename from web/iframe.html rename to frontend/iframe.html diff --git a/web/index.ejs b/frontend/index.ejs similarity index 100% rename from web/index.ejs rename to frontend/index.ejs diff --git a/web/jest.config.js b/frontend/jest.config.js similarity index 100% rename from web/jest.config.js rename to frontend/jest.config.js diff --git a/web/last-comments.ejs b/frontend/last-comments.ejs similarity index 100% rename from web/last-comments.ejs rename to frontend/last-comments.ejs diff --git a/web/markdown-help.html b/frontend/markdown-help.html similarity index 100% rename from web/markdown-help.html rename to frontend/markdown-help.html diff --git a/web/package-lock.json b/frontend/package-lock.json similarity index 100% rename from web/package-lock.json rename to frontend/package-lock.json diff --git a/web/package.json b/frontend/package.json similarity index 100% rename from web/package.json rename to frontend/package.json diff --git a/web/privacy.html b/frontend/privacy.html similarity index 100% rename from web/privacy.html rename to frontend/privacy.html diff --git a/web/remark.image b/frontend/remark.image similarity index 100% rename from web/remark.image rename to frontend/remark.image diff --git a/web/tsconfig.json b/frontend/tsconfig.json similarity index 100% rename from web/tsconfig.json rename to frontend/tsconfig.json diff --git a/web/webpack.config.js b/frontend/webpack.config.js similarity index 100% rename from web/webpack.config.js rename to frontend/webpack.config.js