From 5ca751c6e54c95c71d8c9274f0552087a0769971 Mon Sep 17 00:00:00 2001 From: Jakub Date: Sat, 18 Apr 2020 15:09:43 +0200 Subject: [PATCH] Added meta page titles --- package-lock.json | 151 +++++++++++++++++++++++++++++++ package.json | 4 +- public/manifest.json | 4 +- src/pages/Education/Education.js | 6 ++ src/pages/Me/Me.js | 6 ++ src/pages/Portfolio/Portfolio.js | 6 ++ src/pages/Projects/Projects.js | 6 ++ src/pages/Work/Work.js | 6 ++ 8 files changed, 186 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index b464444..53a6d2b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3745,6 +3745,11 @@ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, + "bowser": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.9.0.tgz", + "integrity": "sha512-2ld76tuLBNFekRgmJfT2+3j5MIrP6bFict8WAIT3beq+srz1gcKNAdNKMqHqauQt63NmAa88HfP1/Ypa9Er3HA==" + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -4531,6 +4536,11 @@ "safe-buffer": "5.1.2" } }, + "content-security-policy-builder": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-security-policy-builder/-/content-security-policy-builder-2.1.0.tgz", + "integrity": "sha512-/MtLWhJVvJNkA9dVLAp6fg9LxD2gfI6R2Fi1hPmfjYXSahJJzcfvoeDOxSyp4NvxMuwWv3WMssE9o31DoULHrQ==" + }, "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", @@ -4995,6 +5005,11 @@ "assert-plus": "^1.0.0" } }, + "dasherize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dasherize/-/dasherize-2.0.0.tgz", + "integrity": "sha1-bYCcnNDPe7iVLYD8hPoT1H3bEwg=" + }, "data-urls": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", @@ -5293,6 +5308,11 @@ "safe-buffer": "^5.0.1" } }, + "dns-prefetch-control": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dns-prefetch-control/-/dns-prefetch-control-0.2.0.tgz", + "integrity": "sha512-hvSnros73+qyZXhHFjx2CMLwoj3Fe7eR9EJsFsqmcI1bB2OBWL/+0YzaEaKssCHnj/6crawNnUyw74Gm2EKe+Q==" + }, "dns-txt": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", @@ -5373,6 +5393,11 @@ "domelementtype": "1" } }, + "dont-sniff-mimetype": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/dont-sniff-mimetype/-/dont-sniff-mimetype-1.1.0.tgz", + "integrity": "sha512-ZjI4zqTaxveH2/tTlzS1wFp+7ncxNZaIEWYg3lzZRHkKf5zPT/MnEG6WL0BhHMJUabkh8GeU5NL5j+rEUCb7Ug==" + }, "dot-case": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.3.tgz", @@ -6275,6 +6300,11 @@ } } }, + "expect-ct": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/expect-ct/-/expect-ct-0.2.0.tgz", + "integrity": "sha512-6SK3MG/Bbhm8MsgyJAylg+ucIOU71/FzyFalcfu5nY19dH8y/z0tBJU0wrNBXD4B27EoQtqPF/9wqH0iYAd04g==" + }, "express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", @@ -6538,6 +6568,11 @@ "bser": "2.1.1" } }, + "feature-policy": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/feature-policy/-/feature-policy-0.3.0.tgz", + "integrity": "sha512-ZtijOTFN7TzCujt1fnNhfWPFPSHeZkesff9AXZj+UEjYBynWNUIYpC87Ve4wHzyexQsImicLu7WsC2LHq7/xrQ==" + }, "figgy-pudding": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", @@ -6799,6 +6834,11 @@ "map-cache": "^0.2.2" } }, + "frameguard": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/frameguard/-/frameguard-3.1.0.tgz", + "integrity": "sha512-TxgSKM+7LTA6sidjOiSZK9wxY0ffMPY3Wta//MqwmX0nZuEHc8QrkV8Fh3ZhMJeiH+Uyh/tcaarImRy8u77O7g==" + }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -7198,11 +7238,61 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" }, + "helmet": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/helmet/-/helmet-3.22.0.tgz", + "integrity": "sha512-Xrqicn2nm1ZIUxP3YGuTBmbDL04neKsIT583Sjh0FkiwKDXYCMUqGqC88w3NUvVXtA75JyR2Jn6jw6ZEMOD+ZA==", + "requires": { + "depd": "2.0.0", + "dns-prefetch-control": "0.2.0", + "dont-sniff-mimetype": "1.1.0", + "expect-ct": "0.2.0", + "feature-policy": "0.3.0", + "frameguard": "3.1.0", + "helmet-crossdomain": "0.4.0", + "helmet-csp": "2.10.0", + "hide-powered-by": "1.1.0", + "hpkp": "2.0.0", + "hsts": "2.2.0", + "ienoopen": "1.1.0", + "nocache": "2.1.0", + "referrer-policy": "1.2.0", + "x-xss-protection": "1.3.0" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + } + } + }, + "helmet-crossdomain": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/helmet-crossdomain/-/helmet-crossdomain-0.4.0.tgz", + "integrity": "sha512-AB4DTykRw3HCOxovD1nPR16hllrVImeFp5VBV9/twj66lJ2nU75DP8FPL0/Jp4jj79JhTfG+pFI2MD02kWJ+fA==" + }, + "helmet-csp": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/helmet-csp/-/helmet-csp-2.10.0.tgz", + "integrity": "sha512-Rz953ZNEFk8sT2XvewXkYN0Ho4GEZdjAZy4stjiEQV3eN7GDxg1QKmYggH7otDyIA7uGA6XnUMVSgeJwbR5X+w==", + "requires": { + "bowser": "2.9.0", + "camelize": "1.0.0", + "content-security-policy-builder": "2.1.0", + "dasherize": "2.0.0" + } + }, "hex-color-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" }, + "hide-powered-by": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hide-powered-by/-/hide-powered-by-1.1.0.tgz", + "integrity": "sha512-Io1zA2yOA1YJslkr+AJlWSf2yWFkKjvkcL9Ni1XSUqnGLr/qRQe2UI3Cn/J9MsJht7yEVCe0SscY1HgVMujbgg==" + }, "history": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", @@ -7250,6 +7340,11 @@ "wbuf": "^1.1.0" } }, + "hpkp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hpkp/-/hpkp-2.0.0.tgz", + "integrity": "sha1-EOFCJk52IVpdMMROxD3mTe5tFnI=" + }, "hsl-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", @@ -7260,6 +7355,21 @@ "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" }, + "hsts": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/hsts/-/hsts-2.2.0.tgz", + "integrity": "sha512-ToaTnQ2TbJkochoVcdXYm4HOCliNozlviNsg+X2XQLQvZNI/kCHR9rZxVYpJB3UPcHz80PgxRyWQ7PdU1r+VBQ==", + "requires": { + "depd": "2.0.0" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + } + } + }, "html-comment-regex": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", @@ -7452,6 +7562,11 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" }, + "ienoopen": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ienoopen/-/ienoopen-1.1.0.tgz", + "integrity": "sha512-MFs36e/ca6ohEKtinTJ5VvAJ6oDRAYFdYXweUnGY9L9vcoqFOU4n2ZhmJ0C4z/cwGZ3YIQRSB3XZ1+ghZkY5NQ==" + }, "iferr": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", @@ -11224,6 +11339,11 @@ "tslib": "^1.10.0" } }, + "nocache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/nocache/-/nocache-2.1.0.tgz", + "integrity": "sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q==" + }, "node-fetch": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", @@ -13651,6 +13771,11 @@ "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.7.tgz", "integrity": "sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA==" }, + "react-fast-compare": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", + "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" + }, "react-flags": { "version": "0.1.18", "resolved": "https://registry.npmjs.org/react-flags/-/react-flags-0.1.18.tgz", @@ -13659,6 +13784,17 @@ "prop-types": "^15.5.10" } }, + "react-helmet": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-6.0.0.tgz", + "integrity": "sha512-My6S4sa0uHN/IuVUn0HFmasW5xj9clTkB9qmMngscVycQ5vVG51Qp44BEvLJ4lixupTwDlU9qX1/sCrMN4AEPg==", + "requires": { + "object-assign": "^4.1.1", + "prop-types": "^15.7.2", + "react-fast-compare": "^2.0.4", + "react-side-effect": "^2.1.0" + } + }, "react-icons": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-3.9.0.tgz", @@ -13800,6 +13936,11 @@ } } }, + "react-side-effect": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.0.tgz", + "integrity": "sha512-IgmcegOSi5SNX+2Snh1vqmF0Vg/CbkycU9XZbOHJlZ6kMzTmi3yc254oB1WCkgA7OQtIAoLmcSFuHTc/tlcqXg==" + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -13866,6 +14007,11 @@ "strip-indent": "^3.0.0" } }, + "referrer-policy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/referrer-policy/-/referrer-policy-1.2.0.tgz", + "integrity": "sha512-LgQJIuS6nAy1Jd88DCQRemyE3mS+ispwlqMk3b0yjZ257fI1v9c+/p6SD5gP5FGyXUIgrNOAfmyioHwZtYv2VA==" + }, "regenerate": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", @@ -18134,6 +18280,11 @@ "async-limiter": "~1.0.0" } }, + "x-xss-protection": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/x-xss-protection/-/x-xss-protection-1.3.0.tgz", + "integrity": "sha512-kpyBI9TlVipZO4diReZMAHWtS0MMa/7Kgx8hwG/EuZLiA6sg4Ah/4TRdASHhRRN3boobzcYgFRUFSgHRge6Qhg==" + }, "xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", diff --git a/package.json b/package.json index 280693e..015eb19 100644 --- a/package.json +++ b/package.json @@ -15,11 +15,13 @@ "dotenv": "^8.2.0", "express": "^4.17.1", "github-pages-deploy-action": "^3.4.8", + "helmet": "^3.22.0", "node-sass": "^4.13.1", "react": "^16.13.1", "react-country-flag": "^2.0.1", "react-dom": "^16.13.1", "react-flags": "^0.1.18", + "react-helmet": "^6.0.0", "react-icons": "^3.9.0", "react-player": "^1.15.3", "react-router-dom": "^5.1.2", @@ -28,7 +30,7 @@ "styled-icons": "^10.2.1" }, "scripts": { - "start":"node server", + "start": "node server", "dev": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", diff --git a/public/manifest.json b/public/manifest.json index 080d6c7..b1585f7 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,6 +1,6 @@ { - "short_name": "React App", - "name": "Create React App Sample", + "short_name": "JL", + "name": "Jakub Lemiszewski CV", "icons": [ { "src": "favicon.ico", diff --git a/src/pages/Education/Education.js b/src/pages/Education/Education.js index d9a42b1..8bf2be9 100644 --- a/src/pages/Education/Education.js +++ b/src/pages/Education/Education.js @@ -4,6 +4,9 @@ import { SectionTitle, Paragraph } from "../../styles"; import { EducationItem, Institution, Degree } from "./styles"; import Loader from "../../components/Loader"; import Timeout from "../../components/Timeout"; +import { Helmet } from "react-helmet"; + +const TITLE = "JL - Education"; const Education = ({ user }) => { const [isLoaded, setIsLoaded] = useState(false); @@ -14,6 +17,9 @@ const Education = ({ user }) => { return ( + + {TITLE} + {!isLoaded ? ( ) : ( diff --git a/src/pages/Me/Me.js b/src/pages/Me/Me.js index 1a8d050..a3e241d 100644 --- a/src/pages/Me/Me.js +++ b/src/pages/Me/Me.js @@ -7,6 +7,9 @@ import { IconContext } from "react-icons"; import Icons from "../../components/Icons"; import Loader from "../../components/Loader"; import Timeout from "../../components/Timeout"; +import { Helmet } from "react-helmet"; + +const TITLE = "JL - Me"; const Me = ({ user }) => { const [isLoaded, setIsLoaded] = useState(false); @@ -17,6 +20,9 @@ const Me = ({ user }) => { return ( + + {TITLE} + {!isLoaded ? ( ) : ( diff --git a/src/pages/Portfolio/Portfolio.js b/src/pages/Portfolio/Portfolio.js index e3be569..6a25616 100644 --- a/src/pages/Portfolio/Portfolio.js +++ b/src/pages/Portfolio/Portfolio.js @@ -4,6 +4,9 @@ import { SectionTitle } from "../../styles"; import Video from "../../components/Video"; import Loader from "../../components/Loader"; import Timeout from "../../components/Timeout"; +import { Helmet } from "react-helmet"; + +const TITLE = "JL - Portfolio"; const Portfolio = ({ user }) => { const [isLoaded, setIsLoaded] = useState(false); @@ -14,6 +17,9 @@ const Portfolio = ({ user }) => { return ( + + {TITLE} + {!isLoaded ? ( ) : ( diff --git a/src/pages/Projects/Projects.js b/src/pages/Projects/Projects.js index 301a916..b2b0494 100644 --- a/src/pages/Projects/Projects.js +++ b/src/pages/Projects/Projects.js @@ -10,6 +10,9 @@ import { import { FaExternalLinkAlt, FaGithubAlt } from "react-icons/fa"; import Loader from "../../components/Loader"; import Timeout from "../../components/Timeout"; +import { Helmet } from "react-helmet"; + +const TITLE = "JL - Projects"; const Projects = ({ user }) => { const [isLoaded, setIsLoaded] = useState(false); @@ -18,6 +21,9 @@ const Projects = ({ user }) => { return ( + + {TITLE} + {!isLoaded ? ( ) : ( diff --git a/src/pages/Work/Work.js b/src/pages/Work/Work.js index 6e83406..3a70034 100644 --- a/src/pages/Work/Work.js +++ b/src/pages/Work/Work.js @@ -4,6 +4,9 @@ import { SectionTitle, Paragraph, Pill } from "../../styles"; import { WorkItem, WorkTitle, JobTitle, Highlighted } from "./styles"; import Loader from "../../components/Loader"; import Timeout from "../../components/Timeout"; +import { Helmet } from "react-helmet"; + +const TITLE = "JL - Jobs"; const Work = ({ user }) => { const [isLoaded, setIsLoaded] = useState(false); @@ -14,6 +17,9 @@ const Work = ({ user }) => { return ( + + {TITLE} + {!isLoaded ? ( ) : (