diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..481c36c2 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,79 @@ +module.exports = { + env: { + browser: true, + es6: true, + }, + extends: [ + "plugin:react/recommended", + "plugin:react-hooks/recommended", + "airbnb", + "prettier", + "prettier/@typescript-eslint", + "prettier/react", + ], + globals: { + Atomics: "readonly", + SharedArrayBuffer: "readonly", + }, + parser: "@typescript-eslint/parser", + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + ecmaVersion: 2018, + sourceType: "module", + }, + plugins: ["react", "@typescript-eslint", "prettier"], + rules: { + "react/prop-types": "off", + "react/jsx-filename-extension": "off", + "react/jsx-props-no-spreading": "off", + "react/no-did-update-set-state": "off", + "import/extensions": "off", + "no-unused-vars": "off", + camelcase: "off", + "prettier/prettier": "warn", + "lines-between-class-members": [ + "error", + "always", + { exceptAfterSingleLine: true }, + ], + "jsx-a11y/label-has-associated-control": [ + "error", + { + assert: "either", + }, + ], + "react/static-property-placement": "off", + "class-methods-use-this": "off", + "react/no-unused-class-component-methods": "off", + "default-param-last": "off", + }, + settings: { + "import/resolver": { + node: { + extensions: [".js", ".jsx", ".ts", ".tsx"], + }, + }, + }, + overrides: [ + { + // Configuration specific to Typescript files. + // These are defined mostly when the ESLint rules don't support typescript + // Usually there is an equivalent typescript rule from typescript-eslint + files: ["**/*.ts", "**/*.tsx"], + rules: { + // Disabling no-undef rule for typescript files + // "The checks it provides are already provided by TypeScript without the need for configuration" + // see https://typescript-eslint.io/docs/linting/troubleshooting/#i-get-errors-from-the-no-undef-rule-about-global-variables-not-being-defined-even-though-there-are-no-typescript-errors + "no-undef": "off", + // see https://typescript-eslint.io/rules/no-use-before-define/ + "no-use-before-define": "off", + "@typescript-eslint/no-use-before-define": "warn", + "react/require-default-props": "off", + "no-shadow": "off", + "@typescript-eslint/no-shadow": "error", + }, + }, + ], +}; diff --git a/.stylelintrc.js b/.stylelintrc.js new file mode 100644 index 00000000..bdd35218 --- /dev/null +++ b/.stylelintrc.js @@ -0,0 +1,14 @@ +module.exports = { + extends: "stylelint-config-recommended-less", + customSyntax: "postcss-less", + plugins: ["stylelint-prettier"], + rules: { + "prettier/prettier": true, + "no-descending-specificity": null, + "function-calc-no-unspaced-operator": null, + }, + ignoreFiles: [ + "**/static/css/theme/bootstrap/*", + "**/static/css/theme/bootstrap/mixins/*", + ], +} diff --git a/Dockerfile b/Dockerfile index 6246c46d..7dc7afb6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,24 +1,19 @@ -FROM metabrainz/python:3.8-20210115 +ARG PYTHON_BASE_IMAGE_VERSION=3.8-20210115 +ARG NODE_VERSION=16-alpine +FROM metabrainz/python:$PYTHON_BASE_IMAGE_VERSION as metabrainz-dev -# remove expired let's encrypt certificate and install new ones -RUN apt-get update \ - && apt-get install -y --no-install-recommends ca-certificates \ - && rm -rf /usr/share/ca-certificates/mozilla/DST_Root_CA_X3.crt \ - && update-ca-certificates \ - && rm -rf /var/lib/apt/lists/* - -############## -# MetaBrainz # -############## +ARG PYTHON_BASE_IMAGE_VERSION -RUN mkdir /code -WORKDIR /code +LABEL org.label-schema.vcs-url="https://github.com/metabrainz/metabrainz.org.git" \ + org.label-schema.vcs-ref="" \ + org.label-schema.schema-version="1.0.0-rc1" \ + org.label-schema.vendor="MetaBrainz Foundation" \ + org.label-schema.name="MetaBrainz" \ + org.metabrainz.based-on-image="metabrainz/python:$PYTHON_BASE_IMAGE_VERSION" -# Node and dependencies -RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - -RUN apt-get install -y nodejs -COPY ./package.json /code/ -RUN npm install +ENV DOCKERIZE_VERSION v0.6.1 +RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ + && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz # Python dependencies RUN apt-get update \ @@ -31,30 +26,80 @@ RUN apt-get update \ libxml2-dev \ libxslt1-dev \ libssl-dev \ + wget \ && rm -rf /var/lib/apt/lists/* + +# While WORKDIR will create a directory if it doesn't already exist, we do it explicitly here +# so that we know what user it is created as: https://github.com/moby/moby/issues/36677 +RUN mkdir -p /code/metabrainz /static + +WORKDIR /code + COPY requirements.txt /code/ RUN pip3 install pip==21.0.1 RUN pip install --no-cache-dir -r requirements.txt -RUN pip install --no-cache-dir uWSGI==2.0.15 COPY . /code/ -RUN ./node_modules/.bin/lessc ./metabrainz/static/css/main.less > ./metabrainz/static/css/main.css -RUN ./node_modules/.bin/lessc ./metabrainz/static/css/theme/boostrap/boostrap.less > ./metabrainz/static/css/theme/boostrap/boostrap.css -RUN ./node_modules/.bin/lessc ./metabrainz/static/fonts/font_awesome/less/font-awesome.less > ./metabrainz/static/fonts/font_awesome/less/font-awesome.css -############ -# Services # -############ +##################################################################################################### +# NOTE: The javascript files are continously watched and compiled using this image in developement. # +##################################################################################################### +FROM node:$NODE_VERSION as metabrainz-frontend-dev + +ARG NODE_VERSION + +LABEL org.label-schema.vcs-url="https://github.com/metabrainz/metabrainz.org.git" \ + org.label-schema.vcs-ref="" \ + org.label-schema.schema-version="1.0.0-rc1" \ + org.label-schema.vendor="MetaBrainz Foundation" \ + org.label-schema.name="MetaBrainz Static Builder" \ + org.metabrainz.based-on-image="node:$NODE_VERSION" + +RUN mkdir /code +WORKDIR /code + +COPY package.json package-lock.json /code/ +RUN npm install + +COPY webpack.config.js babel.config.js tsconfig.json .eslintrc.js .stylelintrc.js /code/ + + +######################################################################### +# NOTE: The javascript files for production are compiled in this image. # +######################################################################### +FROM metabrainz-frontend-dev as metabrainz-frontend-prod + +# Compile front-end (static) files +COPY ./frontend /code/frontend +RUN npm run build:prod + + +########################################### +# NOTE: The production image starts here. # +########################################### +FROM metabrainz-dev as metabrainz-prod -# Consul Template service is already set up with the base image. -# Just need to copy the configuration. COPY ./docker/prod/consul-template-uwsgi.conf /etc/ COPY ./docker/prod/uwsgi.service /etc/service/uwsgi/run RUN chmod 755 /etc/service/uwsgi/run COPY ./docker/prod/uwsgi.ini /etc/uwsgi/uwsgi.ini -EXPOSE 13031 +# copy the compiled js files and static assets from image to prod +COPY --from=metabrainz-frontend-prod /code/frontend/robots.txt /static/ +COPY --from=metabrainz-frontend-prod /code/frontend/fonts /static/fonts +COPY --from=metabrainz-frontend-prod /code/frontend/img /static/img +COPY --from=metabrainz-frontend-prod /code/frontend/js/lib /static/js/lib +COPY --from=metabrainz-frontend-prod /code/frontend/dist /static/dist + +# Now install our code, which may change frequently +COPY docker /code/metabrainz/ + +WORKDIR /code/metabrainz +# Ensure we use the right files and folders by removing duplicates +RUN rm -rf ./frontend/ +RUN rm -f /code/metabrainz/metabrainz/config.py /code/metabrainz/metabrainz/config.pyc ARG GIT_COMMIT_SHA +LABEL org.label-schema.vcs-ref=$GIT_COMMIT_SHA ENV GIT_SHA ${GIT_COMMIT_SHA} diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 00000000..d0ffb1a7 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,33 @@ +module.exports = { + sourceType: "unambiguous", + presets: [ + [ + "@babel/preset-typescript", + { + allowDeclareFields: true, + }, + ], + "@babel/preset-react", + [ + "@babel/preset-env", + { + useBuiltIns: "usage", + corejs: { version: "3.26", proposals: true }, + targets: { + node: "16", + browsers: ["> 0.2%", "last 2 versions", "not dead", "Firefox >= 44"], + }, + }, + ], + ], + plugins: [ + [ + "@babel/plugin-transform-typescript", + { + allowDeclareFields: true, + }, + ], + "@babel/plugin-proposal-class-properties", + "@babel/plugin-transform-runtime", + ], +}; diff --git a/develop.sh b/develop.sh index 937b272d..599cd5a9 100755 --- a/develop.sh +++ b/develop.sh @@ -8,8 +8,15 @@ set -e cd "$(dirname "${BASH_SOURCE[0]}")" +echo "Checking docker compose version" +if docker compose version &> /dev/null; then + DOCKER_COMPOSE_CMD="docker compose" +else + DOCKER_COMPOSE_CMD="docker-compose" +fi + function invoke_docker_compose { - exec docker-compose -f docker/docker-compose.dev.yml \ + exec $DOCKER_COMPOSE_CMD -f docker/docker-compose.dev.yml \ -p metabrainz \ "$@" } diff --git a/docker/Dockerfile.dev b/docker/Dockerfile.dev deleted file mode 100644 index 5f6be2ef..00000000 --- a/docker/Dockerfile.dev +++ /dev/null @@ -1,32 +0,0 @@ -FROM metabrainz/python:3.8-20210115 - -# Node -RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - && \ - apt-get install -y nodejs && rm -rf /var/lib/apt/lists/* - -# Python dependencies -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - build-essential \ - git \ - libpq-dev \ - libtiff5-dev \ - libffi-dev \ - libxml2-dev \ - libxslt1-dev \ - libssl-dev \ - wget \ - && rm -rf /var/lib/apt/lists/* - -ENV DOCKERIZE_VERSION v0.6.1 -RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ - && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz - -RUN mkdir /code -WORKDIR /code - -COPY requirements.txt /code/ -RUN pip3 install pip==21.0.1 -RUN pip install --no-cache-dir -r requirements.txt - -COPY . /code/ diff --git a/docker/docker-compose.dev.yml b/docker/docker-compose.dev.yml index 41837906..18a281ad 100644 --- a/docker/docker-compose.dev.yml +++ b/docker/docker-compose.dev.yml @@ -1,5 +1,5 @@ # Docker Compose file for development -version: "2" +version: "3.8" volumes: db: @@ -9,13 +9,15 @@ services: web: build: context: .. - dockerfile: ./docker/Dockerfile.dev + dockerfile: Dockerfile + target: metabrainz-dev command: python /code/manage.py runserver -h 0.0.0.0 -p 80 volumes: - ../data/replication_packets:/data/replication_packets - ../data/json_dumps:/data/json_dumps - ../data/logos:/code/metabrainz/static/img/user_logos - ..:/code + - ../frontend:/static ports: - "8000:80" depends_on: @@ -33,3 +35,13 @@ services: redis: image: redis:3.2.1 + + static_builder: + build: + context: .. + dockerfile: Dockerfile + target: metabrainz-frontend-dev + command: npm run build:dev + user: ${STATIC_BUILD_USER:-node} + volumes: + - ../frontend:/code/frontend:z diff --git a/docker/docker-compose.test.yml b/docker/docker-compose.test.yml index 377e0822..c41446da 100644 --- a/docker/docker-compose.test.yml +++ b/docker/docker-compose.test.yml @@ -1,11 +1,13 @@ # Docker Compose file for testing -version: "2" +version: "3.8" + services: web: build: context: .. - dockerfile: ./docker/Dockerfile.dev + dockerfile: Dockerfile + target: metabrainz-dev volumes: - ..:/code depends_on: diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/metabrainz/static/css/.gitignore b/frontend/css/.gitignore similarity index 100% rename from metabrainz/static/css/.gitignore rename to frontend/css/.gitignore diff --git a/metabrainz/static/css/carousel.less b/frontend/css/carousel.less similarity index 100% rename from metabrainz/static/css/carousel.less rename to frontend/css/carousel.less diff --git a/metabrainz/static/css/main.less b/frontend/css/main.less similarity index 94% rename from metabrainz/static/css/main.less rename to frontend/css/main.less index 363223d2..419a7642 100644 --- a/metabrainz/static/css/main.less +++ b/frontend/css/main.less @@ -496,4 +496,43 @@ table.finances td:nth-child(2) { justify-content: space-around; flex-wrap: wrap; } -} \ No newline at end of file +} + +.App { + text-align: center; +} + +.App-logo { + height: 40vmin; + pointer-events: none; +} + +@media (prefers-reduced-motion: no-preference) { + .App-logo { + animation: App-logo-spin infinite 20s linear; + } +} + +.App-header { + background-color: #282c34; + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: calc(10px + 2vmin); + color: white; +} + +.App-link { + color: #61dafb; +} + +@keyframes App-logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} diff --git a/metabrainz/static/css/theme/boostrap/alerts.less b/frontend/css/theme/boostrap/alerts.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/alerts.less rename to frontend/css/theme/boostrap/alerts.less diff --git a/metabrainz/static/css/theme/boostrap/badges.less b/frontend/css/theme/boostrap/badges.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/badges.less rename to frontend/css/theme/boostrap/badges.less diff --git a/metabrainz/static/css/theme/boostrap/boostrap.less b/frontend/css/theme/boostrap/boostrap.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/boostrap.less rename to frontend/css/theme/boostrap/boostrap.less diff --git a/metabrainz/static/css/theme/boostrap/breadcrumbs.less b/frontend/css/theme/boostrap/breadcrumbs.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/breadcrumbs.less rename to frontend/css/theme/boostrap/breadcrumbs.less diff --git a/metabrainz/static/css/theme/boostrap/button-groups.less b/frontend/css/theme/boostrap/button-groups.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/button-groups.less rename to frontend/css/theme/boostrap/button-groups.less diff --git a/metabrainz/static/css/theme/boostrap/buttons.less b/frontend/css/theme/boostrap/buttons.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/buttons.less rename to frontend/css/theme/boostrap/buttons.less diff --git a/metabrainz/static/css/theme/boostrap/carousel.less b/frontend/css/theme/boostrap/carousel.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/carousel.less rename to frontend/css/theme/boostrap/carousel.less diff --git a/metabrainz/static/css/theme/boostrap/close.less b/frontend/css/theme/boostrap/close.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/close.less rename to frontend/css/theme/boostrap/close.less diff --git a/metabrainz/static/css/theme/boostrap/code.less b/frontend/css/theme/boostrap/code.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/code.less rename to frontend/css/theme/boostrap/code.less diff --git a/metabrainz/static/css/theme/boostrap/component-animations.less b/frontend/css/theme/boostrap/component-animations.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/component-animations.less rename to frontend/css/theme/boostrap/component-animations.less diff --git a/metabrainz/static/css/theme/boostrap/dropdowns.less b/frontend/css/theme/boostrap/dropdowns.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/dropdowns.less rename to frontend/css/theme/boostrap/dropdowns.less diff --git a/metabrainz/static/css/theme/boostrap/forms.less b/frontend/css/theme/boostrap/forms.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/forms.less rename to frontend/css/theme/boostrap/forms.less diff --git a/metabrainz/static/css/theme/boostrap/glyphicons.less b/frontend/css/theme/boostrap/glyphicons.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/glyphicons.less rename to frontend/css/theme/boostrap/glyphicons.less diff --git a/metabrainz/static/css/theme/boostrap/grid.less b/frontend/css/theme/boostrap/grid.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/grid.less rename to frontend/css/theme/boostrap/grid.less diff --git a/metabrainz/static/css/theme/boostrap/input-groups.less b/frontend/css/theme/boostrap/input-groups.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/input-groups.less rename to frontend/css/theme/boostrap/input-groups.less diff --git a/metabrainz/static/css/theme/boostrap/jumbotron.less b/frontend/css/theme/boostrap/jumbotron.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/jumbotron.less rename to frontend/css/theme/boostrap/jumbotron.less diff --git a/metabrainz/static/css/theme/boostrap/labels.less b/frontend/css/theme/boostrap/labels.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/labels.less rename to frontend/css/theme/boostrap/labels.less diff --git a/metabrainz/static/css/theme/boostrap/list-group.less b/frontend/css/theme/boostrap/list-group.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/list-group.less rename to frontend/css/theme/boostrap/list-group.less diff --git a/metabrainz/static/css/theme/boostrap/media.less b/frontend/css/theme/boostrap/media.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/media.less rename to frontend/css/theme/boostrap/media.less diff --git a/metabrainz/static/css/theme/boostrap/mixins.less b/frontend/css/theme/boostrap/mixins.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins.less rename to frontend/css/theme/boostrap/mixins.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/alerts.less b/frontend/css/theme/boostrap/mixins/alerts.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/alerts.less rename to frontend/css/theme/boostrap/mixins/alerts.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/background-variant.less b/frontend/css/theme/boostrap/mixins/background-variant.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/background-variant.less rename to frontend/css/theme/boostrap/mixins/background-variant.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/border-radius.less b/frontend/css/theme/boostrap/mixins/border-radius.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/border-radius.less rename to frontend/css/theme/boostrap/mixins/border-radius.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/buttons.less b/frontend/css/theme/boostrap/mixins/buttons.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/buttons.less rename to frontend/css/theme/boostrap/mixins/buttons.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/center-block.less b/frontend/css/theme/boostrap/mixins/center-block.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/center-block.less rename to frontend/css/theme/boostrap/mixins/center-block.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/clearfix.less b/frontend/css/theme/boostrap/mixins/clearfix.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/clearfix.less rename to frontend/css/theme/boostrap/mixins/clearfix.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/forms.less b/frontend/css/theme/boostrap/mixins/forms.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/forms.less rename to frontend/css/theme/boostrap/mixins/forms.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/gradients.less b/frontend/css/theme/boostrap/mixins/gradients.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/gradients.less rename to frontend/css/theme/boostrap/mixins/gradients.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/grid-framework.less b/frontend/css/theme/boostrap/mixins/grid-framework.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/grid-framework.less rename to frontend/css/theme/boostrap/mixins/grid-framework.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/grid.less b/frontend/css/theme/boostrap/mixins/grid.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/grid.less rename to frontend/css/theme/boostrap/mixins/grid.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/hide-text.less b/frontend/css/theme/boostrap/mixins/hide-text.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/hide-text.less rename to frontend/css/theme/boostrap/mixins/hide-text.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/image.less b/frontend/css/theme/boostrap/mixins/image.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/image.less rename to frontend/css/theme/boostrap/mixins/image.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/labels.less b/frontend/css/theme/boostrap/mixins/labels.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/labels.less rename to frontend/css/theme/boostrap/mixins/labels.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/list-group.less b/frontend/css/theme/boostrap/mixins/list-group.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/list-group.less rename to frontend/css/theme/boostrap/mixins/list-group.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/nav-divider.less b/frontend/css/theme/boostrap/mixins/nav-divider.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/nav-divider.less rename to frontend/css/theme/boostrap/mixins/nav-divider.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/nav-vertical-align.less b/frontend/css/theme/boostrap/mixins/nav-vertical-align.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/nav-vertical-align.less rename to frontend/css/theme/boostrap/mixins/nav-vertical-align.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/opacity.less b/frontend/css/theme/boostrap/mixins/opacity.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/opacity.less rename to frontend/css/theme/boostrap/mixins/opacity.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/pagination.less b/frontend/css/theme/boostrap/mixins/pagination.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/pagination.less rename to frontend/css/theme/boostrap/mixins/pagination.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/panels.less b/frontend/css/theme/boostrap/mixins/panels.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/panels.less rename to frontend/css/theme/boostrap/mixins/panels.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/progress-bar.less b/frontend/css/theme/boostrap/mixins/progress-bar.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/progress-bar.less rename to frontend/css/theme/boostrap/mixins/progress-bar.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/reset-filter.less b/frontend/css/theme/boostrap/mixins/reset-filter.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/reset-filter.less rename to frontend/css/theme/boostrap/mixins/reset-filter.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/resize.less b/frontend/css/theme/boostrap/mixins/resize.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/resize.less rename to frontend/css/theme/boostrap/mixins/resize.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/responsive-visibility.less b/frontend/css/theme/boostrap/mixins/responsive-visibility.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/responsive-visibility.less rename to frontend/css/theme/boostrap/mixins/responsive-visibility.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/size.less b/frontend/css/theme/boostrap/mixins/size.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/size.less rename to frontend/css/theme/boostrap/mixins/size.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/tab-focus.less b/frontend/css/theme/boostrap/mixins/tab-focus.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/tab-focus.less rename to frontend/css/theme/boostrap/mixins/tab-focus.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/table-row.less b/frontend/css/theme/boostrap/mixins/table-row.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/table-row.less rename to frontend/css/theme/boostrap/mixins/table-row.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/text-emphasis.less b/frontend/css/theme/boostrap/mixins/text-emphasis.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/text-emphasis.less rename to frontend/css/theme/boostrap/mixins/text-emphasis.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/text-overflow.less b/frontend/css/theme/boostrap/mixins/text-overflow.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/text-overflow.less rename to frontend/css/theme/boostrap/mixins/text-overflow.less diff --git a/metabrainz/static/css/theme/boostrap/mixins/vendor-prefixes.less b/frontend/css/theme/boostrap/mixins/vendor-prefixes.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/mixins/vendor-prefixes.less rename to frontend/css/theme/boostrap/mixins/vendor-prefixes.less diff --git a/metabrainz/static/css/theme/boostrap/modals.less b/frontend/css/theme/boostrap/modals.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/modals.less rename to frontend/css/theme/boostrap/modals.less diff --git a/metabrainz/static/css/theme/boostrap/navbar.less b/frontend/css/theme/boostrap/navbar.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/navbar.less rename to frontend/css/theme/boostrap/navbar.less diff --git a/metabrainz/static/css/theme/boostrap/navs.less b/frontend/css/theme/boostrap/navs.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/navs.less rename to frontend/css/theme/boostrap/navs.less diff --git a/metabrainz/static/css/theme/boostrap/normalize.less b/frontend/css/theme/boostrap/normalize.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/normalize.less rename to frontend/css/theme/boostrap/normalize.less diff --git a/metabrainz/static/css/theme/boostrap/pager.less b/frontend/css/theme/boostrap/pager.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/pager.less rename to frontend/css/theme/boostrap/pager.less diff --git a/metabrainz/static/css/theme/boostrap/pagination.less b/frontend/css/theme/boostrap/pagination.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/pagination.less rename to frontend/css/theme/boostrap/pagination.less diff --git a/metabrainz/static/css/theme/boostrap/panels.less b/frontend/css/theme/boostrap/panels.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/panels.less rename to frontend/css/theme/boostrap/panels.less diff --git a/metabrainz/static/css/theme/boostrap/popovers.less b/frontend/css/theme/boostrap/popovers.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/popovers.less rename to frontend/css/theme/boostrap/popovers.less diff --git a/metabrainz/static/css/theme/boostrap/print.less b/frontend/css/theme/boostrap/print.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/print.less rename to frontend/css/theme/boostrap/print.less diff --git a/metabrainz/static/css/theme/boostrap/progress-bars.less b/frontend/css/theme/boostrap/progress-bars.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/progress-bars.less rename to frontend/css/theme/boostrap/progress-bars.less diff --git a/metabrainz/static/css/theme/boostrap/responsive-embed.less b/frontend/css/theme/boostrap/responsive-embed.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/responsive-embed.less rename to frontend/css/theme/boostrap/responsive-embed.less diff --git a/metabrainz/static/css/theme/boostrap/responsive-utilities.less b/frontend/css/theme/boostrap/responsive-utilities.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/responsive-utilities.less rename to frontend/css/theme/boostrap/responsive-utilities.less diff --git a/metabrainz/static/css/theme/boostrap/scaffolding.less b/frontend/css/theme/boostrap/scaffolding.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/scaffolding.less rename to frontend/css/theme/boostrap/scaffolding.less diff --git a/metabrainz/static/css/theme/boostrap/tables.less b/frontend/css/theme/boostrap/tables.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/tables.less rename to frontend/css/theme/boostrap/tables.less diff --git a/metabrainz/static/css/theme/boostrap/theme.less b/frontend/css/theme/boostrap/theme.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/theme.less rename to frontend/css/theme/boostrap/theme.less diff --git a/metabrainz/static/css/theme/boostrap/thumbnails.less b/frontend/css/theme/boostrap/thumbnails.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/thumbnails.less rename to frontend/css/theme/boostrap/thumbnails.less diff --git a/metabrainz/static/css/theme/boostrap/tooltip.less b/frontend/css/theme/boostrap/tooltip.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/tooltip.less rename to frontend/css/theme/boostrap/tooltip.less diff --git a/metabrainz/static/css/theme/boostrap/type.less b/frontend/css/theme/boostrap/type.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/type.less rename to frontend/css/theme/boostrap/type.less diff --git a/metabrainz/static/css/theme/boostrap/utilities.less b/frontend/css/theme/boostrap/utilities.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/utilities.less rename to frontend/css/theme/boostrap/utilities.less diff --git a/metabrainz/static/css/theme/boostrap/variables.less b/frontend/css/theme/boostrap/variables.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/variables.less rename to frontend/css/theme/boostrap/variables.less diff --git a/metabrainz/static/css/theme/boostrap/wells.less b/frontend/css/theme/boostrap/wells.less similarity index 100% rename from metabrainz/static/css/theme/boostrap/wells.less rename to frontend/css/theme/boostrap/wells.less diff --git a/metabrainz/static/css/theme/buttons.less b/frontend/css/theme/buttons.less similarity index 100% rename from metabrainz/static/css/theme/buttons.less rename to frontend/css/theme/buttons.less diff --git a/metabrainz/static/css/theme/links.less b/frontend/css/theme/links.less similarity index 100% rename from metabrainz/static/css/theme/links.less rename to frontend/css/theme/links.less diff --git a/metabrainz/static/css/theme/navbars.less b/frontend/css/theme/navbars.less similarity index 100% rename from metabrainz/static/css/theme/navbars.less rename to frontend/css/theme/navbars.less diff --git a/metabrainz/static/css/theme/theme.less b/frontend/css/theme/theme.less similarity index 100% rename from metabrainz/static/css/theme/theme.less rename to frontend/css/theme/theme.less diff --git a/metabrainz/static/css/theme/variables.less b/frontend/css/theme/variables.less similarity index 100% rename from metabrainz/static/css/theme/variables.less rename to frontend/css/theme/variables.less diff --git a/metabrainz/static/fonts/font_awesome/fonts/FontAwesome.otf b/frontend/fonts/font_awesome/fonts/FontAwesome.otf similarity index 100% rename from metabrainz/static/fonts/font_awesome/fonts/FontAwesome.otf rename to frontend/fonts/font_awesome/fonts/FontAwesome.otf diff --git a/metabrainz/static/fonts/font_awesome/fonts/fontawesome-webfont.eot b/frontend/fonts/font_awesome/fonts/fontawesome-webfont.eot similarity index 100% rename from metabrainz/static/fonts/font_awesome/fonts/fontawesome-webfont.eot rename to frontend/fonts/font_awesome/fonts/fontawesome-webfont.eot diff --git a/metabrainz/static/fonts/font_awesome/fonts/fontawesome-webfont.svg b/frontend/fonts/font_awesome/fonts/fontawesome-webfont.svg similarity index 100% rename from metabrainz/static/fonts/font_awesome/fonts/fontawesome-webfont.svg rename to frontend/fonts/font_awesome/fonts/fontawesome-webfont.svg diff --git a/metabrainz/static/fonts/font_awesome/fonts/fontawesome-webfont.ttf b/frontend/fonts/font_awesome/fonts/fontawesome-webfont.ttf similarity index 100% rename from metabrainz/static/fonts/font_awesome/fonts/fontawesome-webfont.ttf rename to frontend/fonts/font_awesome/fonts/fontawesome-webfont.ttf diff --git a/metabrainz/static/fonts/font_awesome/fonts/fontawesome-webfont.woff b/frontend/fonts/font_awesome/fonts/fontawesome-webfont.woff similarity index 100% rename from metabrainz/static/fonts/font_awesome/fonts/fontawesome-webfont.woff rename to frontend/fonts/font_awesome/fonts/fontawesome-webfont.woff diff --git a/metabrainz/static/fonts/font_awesome/fonts/fontawesome-webfont.woff2 b/frontend/fonts/font_awesome/fonts/fontawesome-webfont.woff2 similarity index 100% rename from metabrainz/static/fonts/font_awesome/fonts/fontawesome-webfont.woff2 rename to frontend/fonts/font_awesome/fonts/fontawesome-webfont.woff2 diff --git a/metabrainz/static/fonts/font_awesome/less/animated.less b/frontend/fonts/font_awesome/less/animated.less similarity index 100% rename from metabrainz/static/fonts/font_awesome/less/animated.less rename to frontend/fonts/font_awesome/less/animated.less diff --git a/metabrainz/static/fonts/font_awesome/less/bordered-pulled.less b/frontend/fonts/font_awesome/less/bordered-pulled.less similarity index 100% rename from metabrainz/static/fonts/font_awesome/less/bordered-pulled.less rename to frontend/fonts/font_awesome/less/bordered-pulled.less diff --git a/metabrainz/static/fonts/font_awesome/less/core.less b/frontend/fonts/font_awesome/less/core.less similarity index 100% rename from metabrainz/static/fonts/font_awesome/less/core.less rename to frontend/fonts/font_awesome/less/core.less diff --git a/metabrainz/static/fonts/font_awesome/less/fixed-width.less b/frontend/fonts/font_awesome/less/fixed-width.less similarity index 100% rename from metabrainz/static/fonts/font_awesome/less/fixed-width.less rename to frontend/fonts/font_awesome/less/fixed-width.less diff --git a/metabrainz/static/fonts/font_awesome/less/font-awesome.css b/frontend/fonts/font_awesome/less/font-awesome.css similarity index 100% rename from metabrainz/static/fonts/font_awesome/less/font-awesome.css rename to frontend/fonts/font_awesome/less/font-awesome.css diff --git a/metabrainz/static/fonts/font_awesome/less/font-awesome.less b/frontend/fonts/font_awesome/less/font-awesome.less similarity index 100% rename from metabrainz/static/fonts/font_awesome/less/font-awesome.less rename to frontend/fonts/font_awesome/less/font-awesome.less diff --git a/metabrainz/static/fonts/font_awesome/less/icons.less b/frontend/fonts/font_awesome/less/icons.less similarity index 100% rename from metabrainz/static/fonts/font_awesome/less/icons.less rename to frontend/fonts/font_awesome/less/icons.less diff --git a/metabrainz/static/fonts/font_awesome/less/larger.less b/frontend/fonts/font_awesome/less/larger.less similarity index 100% rename from metabrainz/static/fonts/font_awesome/less/larger.less rename to frontend/fonts/font_awesome/less/larger.less diff --git a/metabrainz/static/fonts/font_awesome/less/list.less b/frontend/fonts/font_awesome/less/list.less similarity index 100% rename from metabrainz/static/fonts/font_awesome/less/list.less rename to frontend/fonts/font_awesome/less/list.less diff --git a/metabrainz/static/fonts/font_awesome/less/mixins.less b/frontend/fonts/font_awesome/less/mixins.less similarity index 100% rename from metabrainz/static/fonts/font_awesome/less/mixins.less rename to frontend/fonts/font_awesome/less/mixins.less diff --git a/metabrainz/static/fonts/font_awesome/less/path.less b/frontend/fonts/font_awesome/less/path.less similarity index 100% rename from metabrainz/static/fonts/font_awesome/less/path.less rename to frontend/fonts/font_awesome/less/path.less diff --git a/metabrainz/static/fonts/font_awesome/less/rotated-flipped.less b/frontend/fonts/font_awesome/less/rotated-flipped.less similarity index 100% rename from metabrainz/static/fonts/font_awesome/less/rotated-flipped.less rename to frontend/fonts/font_awesome/less/rotated-flipped.less diff --git a/metabrainz/static/fonts/font_awesome/less/screen-reader.less b/frontend/fonts/font_awesome/less/screen-reader.less similarity index 100% rename from metabrainz/static/fonts/font_awesome/less/screen-reader.less rename to frontend/fonts/font_awesome/less/screen-reader.less diff --git a/metabrainz/static/fonts/font_awesome/less/stacked.less b/frontend/fonts/font_awesome/less/stacked.less similarity index 100% rename from metabrainz/static/fonts/font_awesome/less/stacked.less rename to frontend/fonts/font_awesome/less/stacked.less diff --git a/metabrainz/static/fonts/font_awesome/less/variables.less b/frontend/fonts/font_awesome/less/variables.less similarity index 100% rename from metabrainz/static/fonts/font_awesome/less/variables.less rename to frontend/fonts/font_awesome/less/variables.less diff --git a/metabrainz/static/fonts/glyphicons-halflings-regular.eot b/frontend/fonts/glyphicons-halflings-regular.eot similarity index 100% rename from metabrainz/static/fonts/glyphicons-halflings-regular.eot rename to frontend/fonts/glyphicons-halflings-regular.eot diff --git a/metabrainz/static/fonts/glyphicons-halflings-regular.svg b/frontend/fonts/glyphicons-halflings-regular.svg similarity index 100% rename from metabrainz/static/fonts/glyphicons-halflings-regular.svg rename to frontend/fonts/glyphicons-halflings-regular.svg diff --git a/metabrainz/static/fonts/glyphicons-halflings-regular.ttf b/frontend/fonts/glyphicons-halflings-regular.ttf similarity index 100% rename from metabrainz/static/fonts/glyphicons-halflings-regular.ttf rename to frontend/fonts/glyphicons-halflings-regular.ttf diff --git a/metabrainz/static/fonts/glyphicons-halflings-regular.woff b/frontend/fonts/glyphicons-halflings-regular.woff similarity index 100% rename from metabrainz/static/fonts/glyphicons-halflings-regular.woff rename to frontend/fonts/glyphicons-halflings-regular.woff diff --git a/metabrainz/static/img/.gitignore b/frontend/img/.gitignore similarity index 100% rename from metabrainz/static/img/.gitignore rename to frontend/img/.gitignore diff --git a/metabrainz/static/img/favicon-128.png b/frontend/img/favicon-128.png similarity index 100% rename from metabrainz/static/img/favicon-128.png rename to frontend/img/favicon-128.png diff --git a/metabrainz/static/img/favicon-16.png b/frontend/img/favicon-16.png similarity index 100% rename from metabrainz/static/img/favicon-16.png rename to frontend/img/favicon-16.png diff --git a/metabrainz/static/img/favicon-256.png b/frontend/img/favicon-256.png similarity index 100% rename from metabrainz/static/img/favicon-256.png rename to frontend/img/favicon-256.png diff --git a/metabrainz/static/img/favicon-32.png b/frontend/img/favicon-32.png similarity index 100% rename from metabrainz/static/img/favicon-32.png rename to frontend/img/favicon-32.png diff --git a/metabrainz/static/img/favicon-64.png b/frontend/img/favicon-64.png similarity index 100% rename from metabrainz/static/img/favicon-64.png rename to frontend/img/favicon-64.png diff --git a/frontend/img/logo.svg b/frontend/img/logo.svg new file mode 100644 index 00000000..9dfc1c05 --- /dev/null +++ b/frontend/img/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/metabrainz/static/img/logos/acousticbrainz.svg b/frontend/img/logos/acousticbrainz.svg similarity index 100% rename from metabrainz/static/img/logos/acousticbrainz.svg rename to frontend/img/logos/acousticbrainz.svg diff --git a/metabrainz/static/img/logos/bookbrainz.svg b/frontend/img/logos/bookbrainz.svg similarity index 100% rename from metabrainz/static/img/logos/bookbrainz.svg rename to frontend/img/logos/bookbrainz.svg diff --git a/metabrainz/static/img/logos/coverartarchive.svg b/frontend/img/logos/coverartarchive.svg similarity index 100% rename from metabrainz/static/img/logos/coverartarchive.svg rename to frontend/img/logos/coverartarchive.svg diff --git a/metabrainz/static/img/logos/critiquebrainz.svg b/frontend/img/logos/critiquebrainz.svg similarity index 100% rename from metabrainz/static/img/logos/critiquebrainz.svg rename to frontend/img/logos/critiquebrainz.svg diff --git a/metabrainz/static/img/logos/listenbrainz.svg b/frontend/img/logos/listenbrainz.svg similarity index 100% rename from metabrainz/static/img/logos/listenbrainz.svg rename to frontend/img/logos/listenbrainz.svg diff --git a/metabrainz/static/img/logos/metabrainz.svg b/frontend/img/logos/metabrainz.svg similarity index 100% rename from metabrainz/static/img/logos/metabrainz.svg rename to frontend/img/logos/metabrainz.svg diff --git a/metabrainz/static/img/logos/musicbrainz.svg b/frontend/img/logos/musicbrainz.svg similarity index 100% rename from metabrainz/static/img/logos/musicbrainz.svg rename to frontend/img/logos/musicbrainz.svg diff --git a/metabrainz/static/img/logos/picard.svg b/frontend/img/logos/picard.svg similarity index 100% rename from metabrainz/static/img/logos/picard.svg rename to frontend/img/logos/picard.svg diff --git a/metabrainz/static/img/logos/sponsors/dotsrc.png b/frontend/img/logos/sponsors/dotsrc.png similarity index 100% rename from metabrainz/static/img/logos/sponsors/dotsrc.png rename to frontend/img/logos/sponsors/dotsrc.png diff --git a/metabrainz/static/img/logos/sponsors/github.svg b/frontend/img/logos/sponsors/github.svg similarity index 100% rename from metabrainz/static/img/logos/sponsors/github.svg rename to frontend/img/logos/sponsors/github.svg diff --git a/metabrainz/static/img/logos/sponsors/google.svg b/frontend/img/logos/sponsors/google.svg similarity index 100% rename from metabrainz/static/img/logos/sponsors/google.svg rename to frontend/img/logos/sponsors/google.svg diff --git a/metabrainz/static/img/logos/sponsors/layer42.png b/frontend/img/logos/sponsors/layer42.png similarity index 100% rename from metabrainz/static/img/logos/sponsors/layer42.png rename to frontend/img/logos/sponsors/layer42.png diff --git a/metabrainz/static/img/logos/sponsors/osl.png b/frontend/img/logos/sponsors/osl.png similarity index 100% rename from metabrainz/static/img/logos/sponsors/osl.png rename to frontend/img/logos/sponsors/osl.png diff --git a/metabrainz/static/img/logos/sponsors/pipedrive.png b/frontend/img/logos/sponsors/pipedrive.png similarity index 100% rename from metabrainz/static/img/logos/sponsors/pipedrive.png rename to frontend/img/logos/sponsors/pipedrive.png diff --git a/metabrainz/static/img/navbar_logo.svg b/frontend/img/navbar_logo.svg similarity index 100% rename from metabrainz/static/img/navbar_logo.svg rename to frontend/img/navbar_logo.svg diff --git a/metabrainz/static/img/oauth/identity.svg b/frontend/img/oauth/identity.svg similarity index 100% rename from metabrainz/static/img/oauth/identity.svg rename to frontend/img/oauth/identity.svg diff --git a/metabrainz/static/img/payments/paypal.svg b/frontend/img/payments/paypal.svg similarity index 100% rename from metabrainz/static/img/payments/paypal.svg rename to frontend/img/payments/paypal.svg diff --git a/metabrainz/static/img/projects/acousticbrainz.svg b/frontend/img/projects/acousticbrainz.svg similarity index 100% rename from metabrainz/static/img/projects/acousticbrainz.svg rename to frontend/img/projects/acousticbrainz.svg diff --git a/metabrainz/static/img/projects/bookbrainz.svg b/frontend/img/projects/bookbrainz.svg similarity index 100% rename from metabrainz/static/img/projects/bookbrainz.svg rename to frontend/img/projects/bookbrainz.svg diff --git a/metabrainz/static/img/projects/cover_art_archive.svg b/frontend/img/projects/cover_art_archive.svg similarity index 100% rename from metabrainz/static/img/projects/cover_art_archive.svg rename to frontend/img/projects/cover_art_archive.svg diff --git a/metabrainz/static/img/projects/critiquebrainz.svg b/frontend/img/projects/critiquebrainz.svg similarity index 100% rename from metabrainz/static/img/projects/critiquebrainz.svg rename to frontend/img/projects/critiquebrainz.svg diff --git a/metabrainz/static/img/projects/listenbrainz.svg b/frontend/img/projects/listenbrainz.svg similarity index 100% rename from metabrainz/static/img/projects/listenbrainz.svg rename to frontend/img/projects/listenbrainz.svg diff --git a/metabrainz/static/img/projects/messybrainz.svg b/frontend/img/projects/messybrainz.svg similarity index 100% rename from metabrainz/static/img/projects/messybrainz.svg rename to frontend/img/projects/messybrainz.svg diff --git a/metabrainz/static/img/projects/musicbrainz.svg b/frontend/img/projects/musicbrainz.svg similarity index 100% rename from metabrainz/static/img/projects/musicbrainz.svg rename to frontend/img/projects/musicbrainz.svg diff --git a/metabrainz/static/img/projects/picard.svg b/frontend/img/projects/picard.svg similarity index 100% rename from metabrainz/static/img/projects/picard.svg rename to frontend/img/projects/picard.svg diff --git a/metabrainz/static/img/team/aerozol.jpg b/frontend/img/team/aerozol.jpg similarity index 100% rename from metabrainz/static/img/team/aerozol.jpg rename to frontend/img/team/aerozol.jpg diff --git a/metabrainz/static/img/team/akshat.jpg b/frontend/img/team/akshat.jpg similarity index 100% rename from metabrainz/static/img/team/akshat.jpg rename to frontend/img/team/akshat.jpg diff --git a/metabrainz/static/img/team/alastair_porter.jpg b/frontend/img/team/alastair_porter.jpg similarity index 100% rename from metabrainz/static/img/team/alastair_porter.jpg rename to frontend/img/team/alastair_porter.jpg diff --git a/metabrainz/static/img/team/atj.jpg b/frontend/img/team/atj.jpg similarity index 100% rename from metabrainz/static/img/team/atj.jpg rename to frontend/img/team/atj.jpg diff --git a/metabrainz/static/img/team/catcat.jpg b/frontend/img/team/catcat.jpg similarity index 100% rename from metabrainz/static/img/team/catcat.jpg rename to frontend/img/team/catcat.jpg diff --git a/metabrainz/static/img/team/drsaunde.jpg b/frontend/img/team/drsaunde.jpg similarity index 100% rename from metabrainz/static/img/team/drsaunde.jpg rename to frontend/img/team/drsaunde.jpg diff --git a/metabrainz/static/img/team/frederik_olesen.jpg b/frontend/img/team/frederik_olesen.jpg similarity index 100% rename from metabrainz/static/img/team/frederik_olesen.jpg rename to frontend/img/team/frederik_olesen.jpg diff --git a/metabrainz/static/img/team/kartik.jpeg b/frontend/img/team/kartik.jpeg similarity index 100% rename from metabrainz/static/img/team/kartik.jpeg rename to frontend/img/team/kartik.jpeg diff --git a/metabrainz/static/img/team/laurent_monin.jpg b/frontend/img/team/laurent_monin.jpg similarity index 100% rename from metabrainz/static/img/team/laurent_monin.jpg rename to frontend/img/team/laurent_monin.jpg diff --git a/metabrainz/static/img/team/michael_wiencek.jpg b/frontend/img/team/michael_wiencek.jpg similarity index 100% rename from metabrainz/static/img/team/michael_wiencek.jpg rename to frontend/img/team/michael_wiencek.jpg diff --git a/metabrainz/static/img/team/nicolas_pelletier.jpg b/frontend/img/team/nicolas_pelletier.jpg similarity index 100% rename from metabrainz/static/img/team/nicolas_pelletier.jpg rename to frontend/img/team/nicolas_pelletier.jpg diff --git a/metabrainz/static/img/team/nicolas_tamargo.jpg b/frontend/img/team/nicolas_tamargo.jpg similarity index 100% rename from metabrainz/static/img/team/nicolas_tamargo.jpg rename to frontend/img/team/nicolas_tamargo.jpg diff --git a/metabrainz/static/img/team/param_singh.jpg b/frontend/img/team/param_singh.jpg similarity index 100% rename from metabrainz/static/img/team/param_singh.jpg rename to frontend/img/team/param_singh.jpg diff --git a/metabrainz/static/img/team/robert_kaye.jpg b/frontend/img/team/robert_kaye.jpg similarity index 100% rename from metabrainz/static/img/team/robert_kaye.jpg rename to frontend/img/team/robert_kaye.jpg diff --git a/metabrainz/static/img/team/vansika.jpeg b/frontend/img/team/vansika.jpeg similarity index 100% rename from metabrainz/static/img/team/vansika.jpeg rename to frontend/img/team/vansika.jpeg diff --git a/metabrainz/static/img/team/yvan_rivierre.jpg b/frontend/img/team/yvan_rivierre.jpg similarity index 100% rename from metabrainz/static/img/team/yvan_rivierre.jpg rename to frontend/img/team/yvan_rivierre.jpg diff --git a/metabrainz/static/js/bootstrap.min.js b/frontend/js/lib/bootstrap.min.js similarity index 100% rename from metabrainz/static/js/bootstrap.min.js rename to frontend/js/lib/bootstrap.min.js diff --git a/metabrainz/static/js/highstock.js b/frontend/js/lib/highstock.js similarity index 100% rename from metabrainz/static/js/highstock.js rename to frontend/js/lib/highstock.js diff --git a/metabrainz/static/js/jquery-2.1.1.min.js b/frontend/js/lib/jquery-2.1.1.min.js similarity index 100% rename from metabrainz/static/js/jquery-2.1.1.min.js rename to frontend/js/lib/jquery-2.1.1.min.js diff --git a/metabrainz/static/js/less-1.7.5.min.js b/frontend/js/lib/less-1.7.5.min.js similarity index 100% rename from metabrainz/static/js/less-1.7.5.min.js rename to frontend/js/lib/less-1.7.5.min.js diff --git a/frontend/js/src/main.tsx b/frontend/js/src/main.tsx new file mode 100644 index 00000000..85111ee8 --- /dev/null +++ b/frontend/js/src/main.tsx @@ -0,0 +1,31 @@ +import React from "react"; +import { createRoot } from "react-dom/client"; +import { getPageProps } from "./utils"; + +function App() { + return ( +
+ Edit src/App.tsx
and save to reload.
+