mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2025-11-11 13:02:25 +10:00
fixing crashes, upgrading dependencies, patching security vulnerabilities
This commit is contained in:
4
.vscode/settings.json
vendored
4
.vscode/settings.json
vendored
@ -5,8 +5,6 @@
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.fixAll": true
|
||||
},
|
||||
"i18n-ally.localesPaths": [
|
||||
"src/i18n/locales"
|
||||
],
|
||||
"i18n-ally.localesPaths": ["src/i18n/locales"],
|
||||
"i18n-ally.keystyle": "nested"
|
||||
}
|
||||
|
||||
@ -62,21 +62,25 @@ For those of you familiar with the Crowdin Platform, you could do that too and j
|
||||
### Building from Source
|
||||
|
||||
Want to run your own instance of Reactive Resume? You are very much free to do so. The requirements to build from source are:
|
||||
|
||||
- NodeJS/NPM
|
||||
- A Firebase Project
|
||||
|
||||
1. First, clone this project repository
|
||||
|
||||
```
|
||||
git clone https://github.com/AmruthPillai/Reactive-Resume.git
|
||||
cd Reactive-Resume
|
||||
```
|
||||
|
||||
2. Run npm install to install dependencies for the project
|
||||
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
3. Create a `.env` file and fill it with your Firebase credentials
|
||||
|
||||
```
|
||||
FIREBASE_APIKEY=""
|
||||
FIREBASE_APPID=""
|
||||
@ -94,7 +98,7 @@ And that's it! 🎉
|
||||
|
||||
### Donation
|
||||
|
||||
I try to do what I can, but if you found the app helpful, or you're in a better position than the others who depend on this project for their first job, please consider donating as little as $5 to help keep the project alive :)
|
||||
I try to do what I can, but if you found the app helpful, or you're in a better position than the others who depend on this project for their first job, please consider donating as little as \$5 to help keep the project alive :)
|
||||
|
||||
#### https://www.buymeacoffee.com/AmruthPillai
|
||||
|
||||
|
||||
746
functions/package-lock.json
generated
746
functions/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -12,12 +12,12 @@
|
||||
"node": "10"
|
||||
},
|
||||
"dependencies": {
|
||||
"firebase-admin": "^9.0.0",
|
||||
"firebase-functions": "^3.9.0",
|
||||
"puppeteer": "5.2.1"
|
||||
"firebase-admin": "^9.2.0",
|
||||
"firebase-functions": "^3.11.0",
|
||||
"puppeteer": "5.3.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"firebase-functions-test": "^0.2.1"
|
||||
"firebase-functions-test": "^0.2.2"
|
||||
},
|
||||
"private": true
|
||||
}
|
||||
|
||||
6124
package-lock.json
generated
6124
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
55
package.json
55
package.json
@ -18,58 +18,57 @@
|
||||
"dependencies": {
|
||||
"@material-ui/core": "^4.11.0",
|
||||
"@reach/router": "^1.3.4",
|
||||
"animate.css": "^4.1.0",
|
||||
"array-move": "^3.0.0",
|
||||
"animate.css": "^4.1.1",
|
||||
"array-move": "^3.0.1",
|
||||
"classnames": "^2.2.6",
|
||||
"dayjs": "^1.8.31",
|
||||
"dayjs": "^1.9.1",
|
||||
"dotenv": "^8.2.0",
|
||||
"downloadjs": "^1.4.7",
|
||||
"firebase": "^7.17.1",
|
||||
"formik": "^2.1.5",
|
||||
"gatsby": "^2.24.23",
|
||||
"gatsby-image": "^2.4.14",
|
||||
"gatsby-plugin-create-client-paths": "^2.3.10",
|
||||
"firebase": "^7.22.0",
|
||||
"formik": "^2.1.7",
|
||||
"gatsby": "^2.24.67",
|
||||
"gatsby-image": "^2.4.20",
|
||||
"gatsby-plugin-create-client-paths": "^2.3.12",
|
||||
"gatsby-plugin-firebase": "^0.2.0-beta.4",
|
||||
"gatsby-plugin-manifest": "^2.4.21",
|
||||
"gatsby-plugin-manifest": "^2.4.33",
|
||||
"gatsby-plugin-material-ui": "^2.1.10",
|
||||
"gatsby-plugin-postcss": "^2.3.11",
|
||||
"gatsby-plugin-postcss": "^3.0.0",
|
||||
"gatsby-plugin-prefetch-google-fonts": "^1.4.3",
|
||||
"gatsby-plugin-react-helmet": "^3.3.10",
|
||||
"gatsby-plugin-react-helmet": "^3.3.12",
|
||||
"gatsby-plugin-remove-serviceworker": "^1.0.0",
|
||||
"gatsby-plugin-sharp": "^2.6.24",
|
||||
"gatsby-plugin-sitemap": "^2.4.11",
|
||||
"gatsby-source-filesystem": "^2.3.23",
|
||||
"gatsby-plugin-sharp": "^2.6.38",
|
||||
"gatsby-plugin-sitemap": "^2.4.14",
|
||||
"gatsby-source-filesystem": "^2.3.32",
|
||||
"gatsby-source-gravatar": "^1.0.0",
|
||||
"gatsby-transformer-remark": "^2.8.27",
|
||||
"gatsby-transformer-sharp": "^2.5.12",
|
||||
"i18next": "^19.6.3",
|
||||
"lodash": "^4.17.19",
|
||||
"gatsby-transformer-remark": "^2.8.37",
|
||||
"gatsby-transformer-sharp": "^2.5.16",
|
||||
"i18next": "^19.8.0",
|
||||
"lodash": "^4.17.20",
|
||||
"nanoevents": "^5.1.8",
|
||||
"react": "^16.13.1",
|
||||
"react-beautiful-dnd": "^13.0.0",
|
||||
"react-dom": "^16.13.1",
|
||||
"react-helmet": "^6.1.0",
|
||||
"react-i18next": "^11.7.0",
|
||||
"react-icons": "^3.10.0",
|
||||
"react-i18next": "^11.7.3",
|
||||
"react-icons": "^3.11.0",
|
||||
"react-markdown": "^4.3.1",
|
||||
"react-scroll": "^1.8.0",
|
||||
"react-scroll": "^1.8.1",
|
||||
"react-toastify": "^6.0.8",
|
||||
"short-unique-id": "^3.0.4",
|
||||
"uuid": "^8.3.0",
|
||||
"yup": "^0.29.2"
|
||||
"yup": "^0.29.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"autoprefixer": "^9.8.6",
|
||||
"eslint": "^7.6.0",
|
||||
"eslint": "^7.10.0",
|
||||
"eslint-config-airbnb": "^18.2.0",
|
||||
"eslint-config-prettier": "^6.11.0",
|
||||
"eslint-config-prettier": "^6.12.0",
|
||||
"eslint-loader": "^4.0.2",
|
||||
"eslint-plugin-jsx-a11y": "^6.3.1",
|
||||
"eslint-plugin-prettier": "^3.1.4",
|
||||
"eslint-plugin-react": "^7.20.5",
|
||||
"eslint-plugin-react": "^7.21.3",
|
||||
"gatsby-plugin-eslint": "^2.0.8",
|
||||
"prettier": "2.0.5",
|
||||
"tailwindcss": "^1.6.0"
|
||||
"prettier": "2.1.2",
|
||||
"tailwindcss": "^1.8.10"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
const tailwindcss = require('tailwindcss');
|
||||
const autoprefixer = require('autoprefixer');
|
||||
|
||||
module.exports = () => ({
|
||||
plugins: [tailwindcss, autoprefixer],
|
||||
plugins: [tailwindcss],
|
||||
});
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
---
|
||||
slug: "/blog/acing-video-interviews"
|
||||
date: "2020-07-15"
|
||||
title: "Acing Video Interviews"
|
||||
slug: '/blog/acing-video-interviews'
|
||||
date: '2020-07-15'
|
||||
title: 'Acing Video Interviews'
|
||||
---
|
||||
|
||||
Today, as in-person interviewing has had to cease or slow due to restrictions during the Covid-19 pandemic, thousands of professionals are now needing to learn how to effectively interview in a new way using online platforms, such as Zoom, GoToMeeting and others.
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
---
|
||||
slug: "/blog/ats-friendly-resumes"
|
||||
date: "2020-07-14"
|
||||
title: "ATS-Friendly Resumes"
|
||||
slug: '/blog/ats-friendly-resumes'
|
||||
date: '2020-07-14'
|
||||
title: 'ATS-Friendly Resumes'
|
||||
---
|
||||
|
||||
An ATS (Applicant Tracking System) is software used by companies to help them quickly evaluate potential candidates for any given job opening.
|
||||
@ -43,4 +43,3 @@ Most ATS software is programmed to read more common typefaces. Using an unusual
|
||||
#### 6. Save your resume as the proper file type
|
||||
|
||||
PDFs are the preferred file format for most companies today, and are easily understood by any modern applicant tracking system.
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
---
|
||||
slug: "/blog/design-beautiful-resumes"
|
||||
date: "2020-07-13"
|
||||
title: "Designing Beautiful Resumes"
|
||||
slug: '/blog/design-beautiful-resumes'
|
||||
date: '2020-07-13'
|
||||
title: 'Designing Beautiful Resumes'
|
||||
---
|
||||
|
||||
Follow these 16 pro tips to help your design resume stand out from the crowd.
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
---
|
||||
slug: "/blog/jobs-during-covid-19"
|
||||
date: "2020-07-16"
|
||||
title: "Jobs During COVID-19"
|
||||
slug: '/blog/jobs-during-covid-19'
|
||||
date: '2020-07-16'
|
||||
title: 'Jobs During COVID-19'
|
||||
---
|
||||
|
||||
As companies move to remote work to fight the coronavirus pandemic and an increasing number of workers are being laid off or furloughed, you might be wondering if you should continue to send out resumes or just assume that no one is hiring for the foreseeable future. It’s true that economists are predicting a recession, but career experts say it’s best to keep networking and applying, provided you change your approach a bit to acknowledge these are uncertain times.
|
||||
@ -35,4 +35,3 @@ Job seekers often jump at the first available opportunity or go into their searc
|
||||
#### 6. Boost Your Skills
|
||||
|
||||
Now is the perfect time to work on bolstering your qualifications, Moser says. Analyze job descriptions by listing each required skill and experience. Then consider whether you have that exact skill, if you have the skill but haven’t used it in a few years, or if you’re lacking the skill entirely. Use that information to determine what you need to brush up on to make yourself an even better candidate when the job market picks up again.
|
||||
|
||||
|
||||
@ -45,11 +45,14 @@ const List = ({
|
||||
subtitle ||
|
||||
get(x, subtitlePath, '') ||
|
||||
(hasDate &&
|
||||
formatDateRange({
|
||||
formatDateRange(
|
||||
{
|
||||
startDate: x.startDate,
|
||||
endDate: x.endDate,
|
||||
language: i18n.language,
|
||||
}, t))
|
||||
},
|
||||
t,
|
||||
))
|
||||
}
|
||||
text={text || get(x, textPath, '')}
|
||||
onEdit={() => handleEdit(x)}
|
||||
|
||||
@ -141,61 +141,20 @@
|
||||
"language": "en",
|
||||
"layout": {
|
||||
"castform": [
|
||||
[
|
||||
"awards",
|
||||
"certifications",
|
||||
"languages",
|
||||
"hobbies"
|
||||
],
|
||||
[
|
||||
"objective",
|
||||
"work",
|
||||
"education",
|
||||
"skills",
|
||||
"projects",
|
||||
"references"
|
||||
]
|
||||
["awards", "certifications", "languages", "hobbies"],
|
||||
["objective", "work", "education", "skills", "projects", "references"]
|
||||
],
|
||||
"celebi": [
|
||||
[
|
||||
"awards",
|
||||
"certifications",
|
||||
"languages",
|
||||
"hobbies"
|
||||
],
|
||||
[
|
||||
"objective",
|
||||
"work",
|
||||
"education",
|
||||
"skills",
|
||||
"projects",
|
||||
"references"
|
||||
]
|
||||
["awards", "certifications", "languages", "hobbies"],
|
||||
["objective", "work", "education", "skills", "projects", "references"]
|
||||
],
|
||||
"gengar": [
|
||||
[
|
||||
"objective",
|
||||
"skills"
|
||||
],
|
||||
[
|
||||
"awards",
|
||||
"certifications",
|
||||
"languages",
|
||||
"references",
|
||||
"hobbies"
|
||||
],
|
||||
[
|
||||
"work",
|
||||
"education",
|
||||
"projects"
|
||||
]
|
||||
["objective", "skills"],
|
||||
["awards", "certifications", "languages", "references", "hobbies"],
|
||||
["work", "education", "projects"]
|
||||
],
|
||||
"glalie": [
|
||||
[
|
||||
"awards",
|
||||
"certifications",
|
||||
"hobbies"
|
||||
],
|
||||
["awards", "certifications", "hobbies"],
|
||||
[
|
||||
"objective",
|
||||
"work",
|
||||
@ -207,37 +166,13 @@
|
||||
]
|
||||
],
|
||||
"onyx": [
|
||||
[
|
||||
"objective",
|
||||
"work",
|
||||
"education",
|
||||
"projects"
|
||||
],
|
||||
[
|
||||
"hobbies",
|
||||
"languages",
|
||||
"awards",
|
||||
"certifications"
|
||||
],
|
||||
[
|
||||
"skills",
|
||||
"references"
|
||||
]
|
||||
["objective", "work", "education", "projects"],
|
||||
["hobbies", "languages", "awards", "certifications"],
|
||||
["skills", "references"]
|
||||
],
|
||||
"pikachu": [
|
||||
[
|
||||
"skills",
|
||||
"languages",
|
||||
"hobbies",
|
||||
"awards",
|
||||
"certifications"
|
||||
],
|
||||
[
|
||||
"work",
|
||||
"education",
|
||||
"projects",
|
||||
"references"
|
||||
]
|
||||
["skills", "languages", "hobbies", "awards", "certifications"],
|
||||
["work", "education", "projects", "references"]
|
||||
]
|
||||
},
|
||||
"template": "castform"
|
||||
|
||||
@ -94,7 +94,15 @@
|
||||
],
|
||||
"glalie": [
|
||||
["awards", "certifications", "hobbies"],
|
||||
["objective", "work", "education", "skills", "projects", "languages", "references"]
|
||||
[
|
||||
"objective",
|
||||
"work",
|
||||
"education",
|
||||
"skills",
|
||||
"projects",
|
||||
"languages",
|
||||
"references"
|
||||
]
|
||||
],
|
||||
"celebi": [
|
||||
["awards", "certifications", "languages", "hobbies"],
|
||||
|
||||
@ -3,14 +3,14 @@ import { initReactI18next } from 'react-i18next';
|
||||
import resources from './locales';
|
||||
|
||||
const languages = [
|
||||
{
|
||||
code: 'zh',
|
||||
name: 'Chinese Simplified (简体中文)',
|
||||
},
|
||||
{
|
||||
code: 'ar',
|
||||
name: 'Arabic (عربى)',
|
||||
},
|
||||
{
|
||||
code: 'zh',
|
||||
name: 'Chinese Simplified (简体中文)',
|
||||
},
|
||||
{
|
||||
code: 'da',
|
||||
name: 'Danish (Dansk)',
|
||||
@ -51,6 +51,10 @@ const languages = [
|
||||
code: 'ptBr',
|
||||
name: 'Portuguese (Brazilian)',
|
||||
},
|
||||
{
|
||||
code: 'ptPt',
|
||||
name: 'Portuguese (Portugal)',
|
||||
},
|
||||
{
|
||||
code: 'es',
|
||||
name: 'Spanish (Español)',
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
import zh from './zh.json';
|
||||
import ar from './ar.json';
|
||||
import da from './da.json';
|
||||
import de from './de.json';
|
||||
@ -11,11 +10,13 @@ import kn from './kn.json';
|
||||
import nb from './nb.json';
|
||||
import nl from './nl.json';
|
||||
import ptBr from './pt-br.json';
|
||||
import ptPt from './pt-pt.json';
|
||||
import tr from './tr.json';
|
||||
import zh from './zh.json';
|
||||
|
||||
export default {
|
||||
zh: { translation: zh },
|
||||
ar: { translation: ar },
|
||||
zh: { translation: zh },
|
||||
da: { translation: da },
|
||||
de: { translation: de },
|
||||
en: { translation: en },
|
||||
@ -27,5 +28,6 @@ export default {
|
||||
nb: { translation: nb },
|
||||
nl: { translation: nl },
|
||||
ptBr: { translation: ptBr },
|
||||
ptPt: { translation: ptPt },
|
||||
tr: { translation: tr },
|
||||
};
|
||||
|
||||
@ -19,11 +19,14 @@ const EducationItem = ({ item, language }) => {
|
||||
{item.startDate && (
|
||||
<h6 className="text-xs font-medium mb-1">
|
||||
(
|
||||
{formatDateRange({
|
||||
{formatDateRange(
|
||||
{
|
||||
startDate: item.startDate,
|
||||
endDate: item.endDate,
|
||||
language,
|
||||
}, t)}
|
||||
},
|
||||
t,
|
||||
)}
|
||||
)
|
||||
</h6>
|
||||
)}
|
||||
@ -31,7 +34,10 @@ const EducationItem = ({ item, language }) => {
|
||||
</div>
|
||||
</div>
|
||||
{item.summary && (
|
||||
<ReactMarkdown className="markdown mt-2 text-sm" source={item.summary} />
|
||||
<ReactMarkdown
|
||||
className="markdown mt-2 text-sm"
|
||||
source={item.summary}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
|
||||
@ -16,17 +16,23 @@ const WorkItem = ({ item, language }) => {
|
||||
{item.startDate && (
|
||||
<h6 className="text-xs font-medium text-right">
|
||||
(
|
||||
{formatDateRange({
|
||||
{formatDateRange(
|
||||
{
|
||||
startDate: item.startDate,
|
||||
endDate: item.endDate,
|
||||
language,
|
||||
}, t)}
|
||||
},
|
||||
t,
|
||||
)}
|
||||
)
|
||||
</h6>
|
||||
)}
|
||||
</div>
|
||||
{item.summary && (
|
||||
<ReactMarkdown className="markdown mt-2 text-sm" source={item.summary} />
|
||||
<ReactMarkdown
|
||||
className="markdown mt-2 text-sm"
|
||||
source={item.summary}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
import dayjs from 'dayjs';
|
||||
import 'dayjs/locale/ar';
|
||||
import 'dayjs/locale/zh';
|
||||
import 'dayjs/locale/da';
|
||||
import 'dayjs/locale/de';
|
||||
import 'dayjs/locale/en';
|
||||
|
||||
Reference in New Issue
Block a user