From 85a489cefa594ef0c6a9a97b8c65b53f717da804 Mon Sep 17 00:00:00 2001 From: Amruth Pillai Date: Thu, 24 Dec 2020 11:08:59 +0530 Subject: [PATCH] [2.4.3] Add Docker Support, Make Address Optional --- .dockerignore | 4 +++ Dockerfile | 12 ++++++++ gatsby-config.js | 2 +- server.conf | 19 ++++++++++++ src/templates/Castform.js | 6 +--- src/templates/Celebi.js | 2 -- src/templates/Gengar.js | 38 ++++++++++++------------ src/templates/Glalie.js | 7 +---- src/templates/Onyx.js | 28 +++++++++-------- src/templates/Pikachu.js | 2 -- src/templates/blocks/Contact/ContactA.js | 3 ++ src/templates/blocks/Contact/ContactB.js | 3 ++ src/templates/blocks/Contact/ContactC.js | 7 +++-- src/templates/blocks/Contact/ContactD.js | 7 +++-- src/utils/index.js | 3 ++ 15 files changed, 92 insertions(+), 51 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 server.conf diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..3c8141c5 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +.cache/ +node_modules/ +functions/ +public/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..aa6150ca --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +FROM node as builder + +WORKDIR /app +COPY ./ /app/ + +RUN npm install +RUN npm run build + +FROM nginx:alpine +RUN rm -rf /usr/share/nginx/html +COPY --from=builder /app/public/ /usr/share/nginx/html +COPY server.conf /etc/nginx/conf.d/default.conf \ No newline at end of file diff --git a/gatsby-config.js b/gatsby-config.js index ff8bc9ee..5e353e6a 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -6,7 +6,7 @@ module.exports = { title: 'Reactive Resume', siteUrl: 'https://rxresu.me', description: 'A free and open source resume builder.', - version: '2.4.2', + version: '2.4.3', }, plugins: [ 'gatsby-plugin-react-helmet', diff --git a/server.conf b/server.conf new file mode 100644 index 00000000..3b2c3863 --- /dev/null +++ b/server.conf @@ -0,0 +1,19 @@ +server { + listen 80; + root /usr/share/nginx/html; + + index index.html; + autoindex off; + charset urtf-8; + + error_page 404 /404.html; + + location ~* \.(html)$ { + add_header Cache-Control "no-store"; + expires off; + } + + rewrite ^([^.\?]*[^/])$ $1/ permanent; + + try_files $uri $uri/ $uri/index.html =404; +} \ No newline at end of file diff --git a/src/templates/Castform.js b/src/templates/Castform.js index b5039fe6..3c32798e 100644 --- a/src/templates/Castform.js +++ b/src/templates/Castform.js @@ -12,7 +12,6 @@ import ProjectsA from './blocks/Projects/ProjectsA'; import ReferencesA from './blocks/References/ReferencesA'; import SkillsA from './blocks/Skills/SkillsA'; import WorkA from './blocks/Work/WorkA'; -import BirthDateA from './blocks/BirthDate/BirthDateA'; const Blocks = { objective: ObjectiveA, @@ -77,10 +76,7 @@ const Castform = ({ data }) => {
{data.profile.heading} -
- - -
+
{layout[0] && diff --git a/src/templates/Celebi.js b/src/templates/Celebi.js index bd66aab0..85d4e862 100644 --- a/src/templates/Celebi.js +++ b/src/templates/Celebi.js @@ -14,7 +14,6 @@ import ProjectsA from './blocks/Projects/ProjectsA'; import ReferencesA from './blocks/References/ReferencesA'; import SkillsA from './blocks/Skills/SkillsA'; import WorkA from './blocks/Work/WorkA'; -import BirthDateA from './blocks/BirthDate/BirthDateA'; const Blocks = { objective: ObjectiveA, @@ -102,7 +101,6 @@ const Celebi = ({ data }) => {
{t('builder.sections.profile')}
-
diff --git a/src/templates/Gengar.js b/src/templates/Gengar.js index 3186cecd..dd21b20d 100644 --- a/src/templates/Gengar.js +++ b/src/templates/Gengar.js @@ -1,6 +1,7 @@ import React from 'react'; +import { useTranslation } from 'react-i18next'; import PageContext from '../contexts/PageContext'; -import { hexToRgb } from '../utils'; +import { hasAddress, hexToRgb } from '../utils'; import AwardsA from './blocks/Awards/AwardsA'; import CertificationsA from './blocks/Certifications/CertificationsA'; import ContactB from './blocks/Contact/ContactB'; @@ -13,7 +14,6 @@ import ProjectsA from './blocks/Projects/ProjectsA'; import ReferencesB from './blocks/References/ReferencesB'; import SkillsA from './blocks/Skills/SkillsA'; import WorkA from './blocks/Work/WorkA'; -import BirthDateC from './blocks/BirthDate/BirthDateC'; const Blocks = { objective: ObjectiveA, @@ -29,6 +29,7 @@ const Blocks = { }; const Gengar = ({ data }) => { + const { t } = useTranslation(); const layout = data.metadata.layout.gengar; const { r, g, b } = hexToRgb(data.metadata.colors.primary) || {}; @@ -80,29 +81,28 @@ const Gengar = ({ data }) => { -
-
- Address -
- {data.profile.address.line1} - {data.profile.address.line2} - - {data.profile.address.city} {data.profile.address.pincode} - -
+ {hasAddress(data.profile.address) && ( +
+
+ {t('shared.forms.address')} +
+ {data.profile.address.line1} + {data.profile.address.line2} + + {data.profile.address.city} {data.profile.address.pincode} + +
+ )}
-
-
- Contacts -
- - -
+
+ Contact +
+
{ >
- -
- - -
+ {layout[0] && layout[0].map((x) => { diff --git a/src/templates/Onyx.js b/src/templates/Onyx.js index c9f0840e..148958a2 100644 --- a/src/templates/Onyx.js +++ b/src/templates/Onyx.js @@ -1,4 +1,5 @@ import React, { memo } from 'react'; +import { useTranslation } from 'react-i18next'; import PageContext from '../contexts/PageContext'; import AwardsA from './blocks/Awards/AwardsA'; import CertificationsA from './blocks/Certifications/CertificationsA'; @@ -12,7 +13,7 @@ import ProjectsA from './blocks/Projects/ProjectsA'; import ReferencesA from './blocks/References/ReferencesA'; import SkillsA from './blocks/Skills/SkillsA'; import WorkA from './blocks/Work/WorkA'; -import BirthDateB from './blocks/BirthDate/BirthDateB'; +import { hasAddress } from '../utils'; const Blocks = { objective: ObjectiveA, @@ -28,6 +29,7 @@ const Blocks = { }; const Onyx = ({ data }) => { + const { t } = useTranslation(); const layout = data.metadata.layout.onyx; return ( @@ -61,20 +63,22 @@ const Onyx = ({ data }) => {
{data.profile.subtitle}
-
- {data.profile.address.line1} - {data.profile.address.line2} - - {data.profile.address.city} {data.profile.address.pincode} - -
+ {hasAddress(data.profile.address) && ( +
+
+ {t('shared.forms.address')} +
+ {data.profile.address.line1} + {data.profile.address.line2} + + {data.profile.address.city} {data.profile.address.pincode} + +
+ )}
-
- - -
+
{
- {layout[0] && diff --git a/src/templates/blocks/Contact/ContactA.js b/src/templates/blocks/Contact/ContactA.js index 8cbcafd5..224c80ba 100644 --- a/src/templates/blocks/Contact/ContactA.js +++ b/src/templates/blocks/Contact/ContactA.js @@ -4,6 +4,7 @@ import { useTranslation } from 'react-i18next'; import { FaCaretRight } from 'react-icons/fa'; import PageContext from '../../../contexts/PageContext'; import { safetyCheck } from '../../../utils'; +import BirthDateB from '../BirthDate/BirthDateB'; import Icons from '../Icons'; const ContactItem = ({ value, icon, link }) => { @@ -53,6 +54,8 @@ const ContactA = () => { link={`mailto:${data.profile.email}`} /> + + {safetyCheck(data.social) && data.social.items.map((x) => ( { @@ -53,6 +54,8 @@ const ContactB = () => { link={`mailto:${data.profile.email}`} /> + + {safetyCheck(data.social) && data.social.items.map((x) => ( value ? ( @@ -23,7 +24,7 @@ const ContactC = () => { return (
- {data.profile.address.line1 && ( + {hasAddress(data.profile.address) && (
{t('shared.forms.address')} @@ -54,6 +55,8 @@ const ContactC = () => { link={`mailto:${data.profile.email}`} /> + + {safetyCheck(data.social) && data.social.items.map((x) => ( value ? ( @@ -41,7 +42,7 @@ const ContactD = () => {
- {data.profile.address.line1 && ( + {hasAddress(data.profile.address) && (
{t('shared.forms.address')} @@ -72,6 +73,8 @@ const ContactD = () => { link={`mailto:${data.profile.email}`} /> + + {safetyCheck(data.social) && data.social.items.map((x) => ( { return response.url; }; +export const hasAddress = (address) => + !!address.line1 || !!address.line2 || !!address.city || !!address.pincode; + export const hexToRgb = (hex) => { const shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; hex = hex.replace(shorthandRegex, (m, r, g, b) => r + r + g + g + b + b);