/setupTests.js'],
17 | snapshotSerializers: ['enzyme-to-json/serializer'],
18 | coverageThreshold: {
19 | global: {
20 | branches: 0,
21 | functions: 75,
22 | lines: 68,
23 | statements: 68,
24 | },
25 | },
26 | };
27 |
--------------------------------------------------------------------------------
/loadershim.js:
--------------------------------------------------------------------------------
1 | global.___loader = {
2 | enqueue: jest.fn(),
3 | };
4 |
--------------------------------------------------------------------------------
/setupTests.js:
--------------------------------------------------------------------------------
1 | import { configure } from 'enzyme';
2 | import Adapter from 'enzyme-adapter-react-16';
3 |
4 | configure({ adapter: new Adapter() });
5 |
--------------------------------------------------------------------------------
/src/components/__tests__/__snapshots__/loader.test.js.snap:
--------------------------------------------------------------------------------
1 | // Jest Snapshot v1, https://goo.gl/fbAQLP
2 |
3 | exports[`Loader renders correctly 1`] = `
4 |
7 |
8 | ↓
9 |
10 |
11 | ↓
12 |
13 |
14 | ↓
15 |
16 |
17 | ↓
18 |
19 |
20 | ↓
21 |
22 |
23 | `;
24 |
--------------------------------------------------------------------------------
/src/components/__tests__/__snapshots__/subtitle.test.js.snap:
--------------------------------------------------------------------------------
1 | // Jest Snapshot v1, https://goo.gl/fbAQLP
2 |
3 | exports[`Subtitle renders correctly 1`] = `
4 |
7 |
10 | Subtitle
11 |
12 |
18 |
19 | `;
20 |
--------------------------------------------------------------------------------
/src/components/__tests__/__snapshots__/title.test.js.snap:
--------------------------------------------------------------------------------
1 | // Jest Snapshot v1, https://goo.gl/fbAQLP
2 |
3 | exports[`Title renders title component correctly 1`] = `
4 |
30 | `;
31 |
--------------------------------------------------------------------------------
/src/components/__tests__/donate.test.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import toJson from 'enzyme-to-json';
3 | import { shallow } from 'enzyme';
4 | import Donate from '../donate';
5 |
6 | describe('Donate', () => {
7 | it('renders correctly', () => {
8 | const component = shallow();
9 | expect(toJson(component)).toMatchSnapshot();
10 | });
11 | });
12 |
--------------------------------------------------------------------------------
/src/components/__tests__/footer.test.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { shallow } from 'enzyme';
3 | import toJson from 'enzyme-to-json';
4 |
5 | import Footer from '../footer';
6 |
7 | describe('Footer component', () => {
8 | const component = shallow();
9 |
10 | it('renders correctly', () => {
11 | expect(toJson(component)).toMatchSnapshot();
12 | });
13 | });
14 |
--------------------------------------------------------------------------------
/src/components/__tests__/header.test.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { shallow } from 'enzyme';
3 | import toJson from 'enzyme-to-json';
4 |
5 | import Header from '../header';
6 |
7 | describe('Header', () => {
8 | const component = shallow();
9 |
10 | it('renders correctly', () => {
11 | expect(toJson(component)).toMatchSnapshot();
12 | });
13 | });
14 |
--------------------------------------------------------------------------------
/src/components/__tests__/loader.test.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { shallow } from 'enzyme';
3 | import toJson from 'enzyme-to-json';
4 |
5 | import Loader from '../loader';
6 |
7 | describe('Loader', () => {
8 | const component = shallow();
9 |
10 | it('renders correctly', () => {
11 | expect(toJson(component)).toMatchSnapshot();
12 | });
13 | });
14 |
--------------------------------------------------------------------------------
/src/components/__tests__/skills.test.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { shallow } from 'enzyme';
3 | import toJson from 'enzyme-to-json';
4 |
5 | import Skills from '../skills';
6 |
7 | jest.mock('../../constants/skills', () => ({
8 | __esModule: true,
9 | categorizedSkills: {
10 | language: {
11 | title: 'Programming Languages',
12 | skills: ['javascript'],
13 | },
14 | frontend_dev: {
15 | title: 'Frontend Development',
16 | skills: ['react', 'svelte'],
17 | },
18 | },
19 | icons: {
20 | javascript: 'javascript.svg',
21 | react: 'react.svg',
22 | svelte: 'svelte.svg',
23 | },
24 | }));
25 |
26 | describe('Skills', () => {
27 | it('renders correctly', () => {
28 | const component = shallow();
29 | expect(toJson(component)).toMatchSnapshot();
30 | });
31 |
32 | it('calls handleSkillsChange prop when a skill is clicked', () => {
33 | const mockFn = jest.fn();
34 | const component = shallow();
35 |
36 | component.find('#javascript').simulate('change');
37 |
38 | expect(mockFn).toHaveBeenCalledTimes(1);
39 | });
40 | });
41 |
--------------------------------------------------------------------------------
/src/components/__tests__/social.test.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { shallow } from 'enzyme';
3 | import toJson from 'enzyme-to-json';
4 |
5 | import Social from '../social';
6 |
7 | describe('Social', () => {
8 | const mockEvent = { target: { value: 'This is a mock event' } };
9 | const props = {
10 | social: {
11 | github: 'github ',
12 | twitter: 'twitter',
13 | dev: 'dev',
14 | codepen: 'codepen',
15 | codesandbox: 'codesandbodx',
16 | stackoverflow: 'stackoverflow',
17 | linkedin: 'linkedin',
18 | kaggle: 'kaggle',
19 | fb: 'fb',
20 | instagram: 'instagram',
21 | dribble: 'dribble',
22 | behance: 'behance',
23 | medium: 'medium',
24 | youtube: 'youtube',
25 | codechef: 'codechef',
26 | hackerrack: 'hackerranck',
27 | codeforces: 'codeforces',
28 | leetcode: 'leetcode',
29 | topcoder: 'topcoder',
30 | hackerearth: '@hackerearth',
31 | geeks_for_geeks: 'geeks_for_geeks',
32 | discord: 'discord',
33 | rssurl: 'rssurl',
34 | },
35 | handleSocialChange: jest.fn().mockReturnValue({}),
36 | };
37 | it('renders correctly', () => {
38 | const component = shallow();
39 | for (let i = 0; i < component.find('input').length; i++) {
40 | component.find('input').at(i).simulate('change', mockEvent);
41 | }
42 | expect(toJson(component)).toMatchSnapshot();
43 | });
44 | });
45 |
--------------------------------------------------------------------------------
/src/components/__tests__/subtitle.test.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { shallow } from 'enzyme';
3 | import toJson from 'enzyme-to-json';
4 |
5 | import Subtitle from '../subtitle';
6 |
7 | describe('Subtitle', () => {
8 | const mockEvent = { target: { value: 'This is a mock event' } };
9 | const props = {
10 | data: {
11 | subtitle: 'A frontend developer',
12 | },
13 | handleDataChange: jest.fn().mockReturnValue({}),
14 | };
15 |
16 | const component = shallow();
17 |
18 | it('renders correctly', () => {
19 | expect(toJson(component)).toMatchSnapshot();
20 | });
21 |
22 | it('calls onChange', () => {
23 | component.find('input').at(0).simulate('change', mockEvent);
24 | expect(props.handleDataChange).toBeCalledWith('subtitle', mockEvent);
25 | });
26 | });
27 |
--------------------------------------------------------------------------------
/src/components/__tests__/title.test.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { shallow } from 'enzyme';
3 | import toJson from 'enzyme-to-json';
4 |
5 | import Title from '../title';
6 |
7 | describe('Title', () => {
8 | const mockEvent = { target: { value: 'This is a mock event' } };
9 | const props = {
10 | prefix: {
11 | title: 'test_title',
12 | currentWork: 'test_currentwork',
13 | },
14 | data: { title: 'test_data' },
15 | link: { currentWork: 'test_currentwork' },
16 | handlePrefixChange: jest.fn().mockReturnValue({}),
17 | handleLinkChange: jest.fn().mockReturnValue({}),
18 | handleDataChange: jest.fn().mockReturnValue({}),
19 | };
20 |
21 | it('renders title component correctly', () => {
22 | const component = shallow();
23 | component.find('input').at(0).simulate('change', mockEvent);
24 | component.find('input').at(1).simulate('change', mockEvent);
25 | expect(toJson(component)).toMatchSnapshot();
26 | });
27 | });
28 |
--------------------------------------------------------------------------------
/src/components/__tests__/work.test.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { shallow } from 'enzyme';
3 | import toJson from 'enzyme-to-json';
4 |
5 | import Work from '../work';
6 |
7 | describe('Work', () => {
8 | const mockEvent = { target: { value: 'This is a mock event' } };
9 | const props = {
10 | prefix: {
11 | title: 'test_title',
12 | currentWork: 'test_currentwork',
13 | },
14 | data: { title: 'test_data' },
15 | link: { currentWork: 'test_currentwork' },
16 | handlePrefixChange: jest.fn().mockReturnValue({}),
17 | handleLinkChange: jest.fn().mockReturnValue({}),
18 | handleDataChange: jest.fn().mockReturnValue({}),
19 | };
20 |
21 | it('renders work component correctly', () => {
22 | const component = shallow();
23 | for (let i = 0; i < component.find('input').length; i++) {
24 | component.find('input').at(i).simulate('change', mockEvent);
25 | }
26 | expect(toJson(component)).toMatchSnapshot();
27 | });
28 | });
29 |
--------------------------------------------------------------------------------
/src/components/layout.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import Header from './header';
4 | import Footer from './footer';
5 |
6 | const Layout = ({ children }) => (
7 |
8 |
11 | {children}
12 |
15 |
16 | );
17 | export default Layout;
18 |
19 | Layout.defaultProps = {
20 | children: '',
21 | };
22 |
23 | Layout.propTypes = {
24 | children: PropTypes.element,
25 | };
26 |
--------------------------------------------------------------------------------
/src/components/loader.jsx:
--------------------------------------------------------------------------------
1 | import React, { useRef, useEffect } from 'react';
2 | import gsap from 'gsap';
3 |
4 | const Loader = () => {
5 | const arrow = useRef([]);
6 | useEffect(() => {
7 | const tl = gsap.timeline({ repeat: -1 });
8 | tl.fromTo(
9 | arrow.current,
10 | {
11 | y: 0,
12 | color: '#3b3b4f',
13 | },
14 | {
15 | y: -50,
16 | color: '#d0d0d5',
17 | stagger: 0.1,
18 | duration: 0.5,
19 | ease: 'Linear.easeNone',
20 | },
21 | );
22 | tl.add('cp');
23 | tl.fromTo(
24 | arrow.current,
25 | {
26 | y: -50,
27 | color: '#d0d0d5',
28 | },
29 | {
30 | y: 0,
31 | color: '#3b3b4f',
32 | stagger: 0.1,
33 | duration: 0.5,
34 | ease: 'Linear.easeNone',
35 | },
36 | 'cp-=0.3',
37 | );
38 | });
39 | return (
40 |
41 | {
43 | arrow.current[0] = el;
44 | }}
45 | >
46 | ↓
47 |
48 | {
50 | arrow.current[1] = el;
51 | }}
52 | >
53 | ↓
54 |
55 | {
57 | arrow.current[2] = el;
58 | }}
59 | >
60 | ↓
61 |
62 | {
64 | arrow.current[3] = el;
65 | }}
66 | >
67 | ↓
68 |
69 | {
71 | arrow.current[4] = el;
72 | }}
73 | >
74 | ↓
75 |
76 |
77 | );
78 | };
79 |
80 | export default Loader;
81 |
--------------------------------------------------------------------------------
/src/components/seo.jsx:
--------------------------------------------------------------------------------
1 | /**
2 | * SEO component that queries for data with
3 | * Gatsby's useStaticQuery React hook
4 | *
5 | * See: https://www.gatsbyjs.org/docs/use-static-query/
6 | */
7 |
8 | import React from 'react';
9 | import PropTypes from 'prop-types';
10 | import { Helmet } from 'react-helmet';
11 | import { useStaticQuery, graphql } from 'gatsby';
12 |
13 | function SEO({ description, lang, meta, title }) {
14 | const { site } = useStaticQuery(
15 | graphql`
16 | query {
17 | site {
18 | siteMetadata {
19 | title
20 | description
21 | author
22 | }
23 | }
24 | }
25 | `,
26 | );
27 |
28 | const metaDescription = description || site.siteMetadata.description;
29 |
30 | return (
31 |
72 | );
73 | }
74 |
75 | SEO.defaultProps = {
76 | lang: `en`,
77 | meta: [],
78 | description: ``,
79 | };
80 |
81 | SEO.propTypes = {
82 | description: PropTypes.string,
83 | lang: PropTypes.string,
84 | meta: PropTypes.arrayOf(PropTypes.object),
85 | title: PropTypes.string.isRequired,
86 | };
87 |
88 | export default SEO;
89 |
--------------------------------------------------------------------------------
/src/components/subtitle.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | const Subtitle = (props) => {
5 | const { data, handleDataChange } = props;
6 | return (
7 |
8 |
Subtitle
9 |
handleDataChange('subtitle', event)}
14 | />
15 |
16 | );
17 | };
18 |
19 | export default Subtitle;
20 | Subtitle.propTypes = {
21 | data: PropTypes.object.isRequired,
22 | handleDataChange: PropTypes.func.isRequired,
23 | };
24 |
--------------------------------------------------------------------------------
/src/components/support.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | const Support = (props) => {
5 | const { support, handleSupportChange } = props;
6 | return (
7 |
8 |
Support
9 |
10 |
11 |

16 |
handleSupportChange('buyMeACoffee', event)}
22 | />
23 |
24 |
25 |

30 |
handleSupportChange('buyMeAKofi', event)}
36 | />
37 |
38 |
39 |
40 | );
41 | };
42 |
43 | export default Support;
44 | Support.propTypes = {
45 | support: PropTypes.object.isRequired,
46 | handleSupportChange: PropTypes.func.isRequired,
47 | };
48 |
--------------------------------------------------------------------------------
/src/components/title.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | const Title = (props) => {
5 | const { data, prefix, handlePrefixChange, handleDataChange } = props;
6 | return (
7 |
25 | );
26 | };
27 |
28 | export default Title;
29 | Title.propTypes = {
30 | prefix: PropTypes.object.isRequired,
31 | data: PropTypes.object.isRequired,
32 | handlePrefixChange: PropTypes.func.isRequired,
33 | handleDataChange: PropTypes.func.isRequired,
34 | };
35 |
--------------------------------------------------------------------------------
/src/constants/page-links.js:
--------------------------------------------------------------------------------
1 | const links = {
2 | home: '/',
3 | about: '/about',
4 | addons: '/addons',
5 | support: '/support',
6 | };
7 | export default links;
8 |
--------------------------------------------------------------------------------
/src/designs/GPRG Style Guide.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daos12/github-profile-readme-generator/888aff31e1d26dd2a6acf6afebbc34970aeb0118/src/designs/GPRG Style Guide.png
--------------------------------------------------------------------------------
/src/html.jsx:
--------------------------------------------------------------------------------
1 | /* eslint-disable react/jsx-props-no-spreading */
2 | import React from 'react';
3 | import PropTypes from 'prop-types';
4 |
5 | export default function HTML(props) {
6 | const { htmlAttributes, headComponents, bodyAttributes, preBodyComponents, postBodyComponents, body } = props;
7 | return (
8 |
9 |
10 |
11 |
12 |
13 | {headComponents}
14 |
25 |
26 |
27 | {preBodyComponents}
28 |
29 | {postBodyComponents}
30 |
31 |
32 | );
33 | }
34 |
35 | HTML.propTypes = {
36 | htmlAttributes: PropTypes.object.isRequired,
37 | headComponents: PropTypes.array.isRequired,
38 | bodyAttributes: PropTypes.object.isRequired,
39 | preBodyComponents: PropTypes.array.isRequired,
40 | body: PropTypes.string.isRequired,
41 | postBodyComponents: PropTypes.array.isRequired,
42 | };
43 |
--------------------------------------------------------------------------------
/src/images/Discord-Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daos12/github-profile-readme-generator/888aff31e1d26dd2a6acf6afebbc34970aeb0118/src/images/Discord-Logo.png
--------------------------------------------------------------------------------
/src/images/github-profile-readme-generator.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daos12/github-profile-readme-generator/888aff31e1d26dd2a6acf6afebbc34970aeb0118/src/images/github-profile-readme-generator.gif
--------------------------------------------------------------------------------
/src/images/icons/AIML/opencv.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/images/icons/AIML/pytorch.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
14 |
--------------------------------------------------------------------------------
/src/images/icons/AIML/tensorflow.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
19 |
--------------------------------------------------------------------------------
/src/images/icons/Automation/ifttt.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
--------------------------------------------------------------------------------
/src/images/icons/Automation/zapier.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
15 |
--------------------------------------------------------------------------------
/src/images/icons/BaaS/amplify.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
19 |
--------------------------------------------------------------------------------
/src/images/icons/BaaS/firebase.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/src/images/icons/BaaS/heroku.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
14 |
--------------------------------------------------------------------------------
/src/images/icons/BackendDevelopment/express.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
--------------------------------------------------------------------------------
/src/images/icons/BackendDevelopment/graphql.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
23 |
--------------------------------------------------------------------------------
/src/images/icons/BackendDevelopment/nginx.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/src/images/icons/BackendDevelopment/nodejs.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
20 |
--------------------------------------------------------------------------------
/src/images/icons/BackendDevelopment/rabbitmq.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
13 |
--------------------------------------------------------------------------------
/src/images/icons/BackendDevelopment/solr.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
14 |
--------------------------------------------------------------------------------
/src/images/icons/BackendDevelopment/spring.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
19 |
--------------------------------------------------------------------------------
/src/images/icons/DataVisualization/chartjs.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
19 |
--------------------------------------------------------------------------------
/src/images/icons/DataVisualization/kibana.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/src/images/icons/Database/cockroachdb.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
23 |
--------------------------------------------------------------------------------
/src/images/icons/Database/couchdb.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
14 |
--------------------------------------------------------------------------------
/src/images/icons/Database/elasticsearch.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
34 |
--------------------------------------------------------------------------------
/src/images/icons/Database/oracle.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
13 |
--------------------------------------------------------------------------------
/src/images/icons/Database/sqlite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/images/icons/Devops/azure.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
12 |
--------------------------------------------------------------------------------
/src/images/icons/Devops/bash.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
22 |
--------------------------------------------------------------------------------
/src/images/icons/Devops/circleci.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/src/images/icons/Devops/docker.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
28 |
--------------------------------------------------------------------------------
/src/images/icons/Devops/gcp.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
22 |
--------------------------------------------------------------------------------
/src/images/icons/Devops/vagrant.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/src/images/icons/Framework/codeigniter.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
17 |
--------------------------------------------------------------------------------
/src/images/icons/Framework/laravel.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
24 |
--------------------------------------------------------------------------------
/src/images/icons/Framework/symfony.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
22 |
--------------------------------------------------------------------------------
/src/images/icons/FrontendDevelopment/angularjs.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
15 |
--------------------------------------------------------------------------------
/src/images/icons/FrontendDevelopment/backbonejs.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/src/images/icons/FrontendDevelopment/bootstrap.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/src/images/icons/FrontendDevelopment/bulma.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
12 |
--------------------------------------------------------------------------------
/src/images/icons/FrontendDevelopment/css.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
17 |
--------------------------------------------------------------------------------
/src/images/icons/FrontendDevelopment/gtk.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
19 |
--------------------------------------------------------------------------------
/src/images/icons/FrontendDevelopment/html.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/src/images/icons/FrontendDevelopment/meteor.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/src/images/icons/FrontendDevelopment/qt.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
21 |
--------------------------------------------------------------------------------
/src/images/icons/FrontendDevelopment/reactjs.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
30 |
--------------------------------------------------------------------------------
/src/images/icons/FrontendDevelopment/redux.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
19 |
--------------------------------------------------------------------------------
/src/images/icons/FrontendDevelopment/svelte.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
21 |
--------------------------------------------------------------------------------
/src/images/icons/FrontendDevelopment/tailwind.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/src/images/icons/FrontendDevelopment/vuejs.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/src/images/icons/FrontendDevelopment/vuetify.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/src/images/icons/FrontendDevelopment/webpack.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
17 |
--------------------------------------------------------------------------------
/src/images/icons/GameEngines/unity.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
12 |
--------------------------------------------------------------------------------
/src/images/icons/GameEngines/unreal.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/images/icons/MobileAppDevelopment/android.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
17 |
--------------------------------------------------------------------------------
/src/images/icons/MobileAppDevelopment/dart.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
25 |
--------------------------------------------------------------------------------
/src/images/icons/MobileAppDevelopment/ionic.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
14 |
--------------------------------------------------------------------------------
/src/images/icons/MobileAppDevelopment/kotlin.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
36 |
--------------------------------------------------------------------------------
/src/images/icons/MobileAppDevelopment/nativescript.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
15 |
--------------------------------------------------------------------------------
/src/images/icons/MobileAppDevelopment/xamarin.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
15 |
--------------------------------------------------------------------------------
/src/images/icons/Other/git.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
17 |
--------------------------------------------------------------------------------
/src/images/icons/ProgrammingLanguages/c.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
20 |
--------------------------------------------------------------------------------
/src/images/icons/ProgrammingLanguages/clojure.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
21 |
--------------------------------------------------------------------------------
/src/images/icons/ProgrammingLanguages/coffeescript.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
17 |
--------------------------------------------------------------------------------
/src/images/icons/ProgrammingLanguages/cpp.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
22 |
--------------------------------------------------------------------------------
/src/images/icons/ProgrammingLanguages/csharp.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
22 |
--------------------------------------------------------------------------------
/src/images/icons/ProgrammingLanguages/erlang.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
24 |
--------------------------------------------------------------------------------
/src/images/icons/ProgrammingLanguages/go.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
30 |
--------------------------------------------------------------------------------
/src/images/icons/ProgrammingLanguages/haskell.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/src/images/icons/ProgrammingLanguages/java.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
23 |
--------------------------------------------------------------------------------
/src/images/icons/ProgrammingLanguages/javascript.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
15 |
--------------------------------------------------------------------------------
/src/images/icons/ProgrammingLanguages/objectivec.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
21 |
--------------------------------------------------------------------------------
/src/images/icons/ProgrammingLanguages/php.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/src/images/icons/ProgrammingLanguages/python.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/src/images/icons/ProgrammingLanguages/swift.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
17 |
--------------------------------------------------------------------------------
/src/images/icons/ProgrammingLanguages/typescript.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
14 |
--------------------------------------------------------------------------------
/src/images/icons/Social/behance.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/images/icons/Social/blogger.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
43 |
--------------------------------------------------------------------------------
/src/images/icons/Social/codepen.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/images/icons/Social/discord.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/images/icons/Social/dribbble.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
49 |
--------------------------------------------------------------------------------
/src/images/icons/Social/dropbox.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
44 |
--------------------------------------------------------------------------------
/src/images/icons/Social/envato.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
40 |
--------------------------------------------------------------------------------
/src/images/icons/Social/facebook-alt.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
38 |
--------------------------------------------------------------------------------
/src/images/icons/Social/facebook.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
40 |
--------------------------------------------------------------------------------
/src/images/icons/Social/geeks-for-geeks.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/images/icons/Social/github.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
45 |
--------------------------------------------------------------------------------
/src/images/icons/Social/google.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
39 |
--------------------------------------------------------------------------------
/src/images/icons/Social/hackerearth.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/images/icons/Social/hackerrank.svg:
--------------------------------------------------------------------------------
1 |
3 |
--------------------------------------------------------------------------------
/src/images/icons/Social/hashnode.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/images/icons/Social/kaggle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/images/icons/Social/linked-in-alt.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
43 |
--------------------------------------------------------------------------------
/src/images/icons/Social/linked-in.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/images/icons/Social/medium.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/images/icons/Social/messenger.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
40 |
--------------------------------------------------------------------------------
/src/images/icons/Social/myspace-alt.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
47 |
--------------------------------------------------------------------------------
/src/images/icons/Social/myspace.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
44 |
--------------------------------------------------------------------------------
/src/images/icons/Social/path.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
42 |
--------------------------------------------------------------------------------
/src/images/icons/Social/photo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
44 |
--------------------------------------------------------------------------------
/src/images/icons/Social/picasa.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
45 |
--------------------------------------------------------------------------------
/src/images/icons/Social/pinterest.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
44 |
--------------------------------------------------------------------------------
/src/images/icons/Social/reddit.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
55 |
--------------------------------------------------------------------------------
/src/images/icons/Social/rss.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
42 |
--------------------------------------------------------------------------------
/src/images/icons/Social/soundcloud.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
48 |
--------------------------------------------------------------------------------
/src/images/icons/Social/spotify.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
48 |
--------------------------------------------------------------------------------
/src/images/icons/Social/stack-overflow.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/images/icons/Social/team.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
39 |
--------------------------------------------------------------------------------
/src/images/icons/Social/tumblr.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
42 |
--------------------------------------------------------------------------------
/src/images/icons/Social/twitch.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
42 |
--------------------------------------------------------------------------------
/src/images/icons/Social/twitter-alt.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
38 |
--------------------------------------------------------------------------------
/src/images/icons/Social/twitter.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
44 |
--------------------------------------------------------------------------------
/src/images/icons/Social/viddler.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
42 |
--------------------------------------------------------------------------------
/src/images/icons/Social/vimeo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
41 |
--------------------------------------------------------------------------------
/src/images/icons/Social/vine.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
42 |
--------------------------------------------------------------------------------
/src/images/icons/Social/vk.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
47 |
--------------------------------------------------------------------------------
/src/images/icons/Social/whatsapp.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
46 |
--------------------------------------------------------------------------------
/src/images/icons/Social/wordpress.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
49 |
--------------------------------------------------------------------------------
/src/images/icons/Social/yahoo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
48 |
--------------------------------------------------------------------------------
/src/images/icons/Social/youtube.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
45 |
--------------------------------------------------------------------------------
/src/images/icons/Software/figma.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
20 |
--------------------------------------------------------------------------------
/src/images/icons/Software/framer.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/src/images/icons/Software/illustrator.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
33 |
--------------------------------------------------------------------------------
/src/images/icons/Software/invision.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
22 |
--------------------------------------------------------------------------------
/src/images/icons/Software/sketch.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
30 |
--------------------------------------------------------------------------------
/src/images/icons/Software/solidworks.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
24 |
--------------------------------------------------------------------------------
/src/images/icons/StaticSiteGenerators/gatsby.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
17 |
--------------------------------------------------------------------------------
/src/images/icons/StaticSiteGenerators/gridsome.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
27 |
--------------------------------------------------------------------------------
/src/images/icons/StaticSiteGenerators/hexo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
--------------------------------------------------------------------------------
/src/images/icons/StaticSiteGenerators/middleman.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/images/icons/StaticSiteGenerators/nextjs.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
23 |
--------------------------------------------------------------------------------
/src/images/icons/StaticSiteGenerators/nuxtjs.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
21 |
--------------------------------------------------------------------------------
/src/images/icons/StaticSiteGenerators/sapper.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
21 |
--------------------------------------------------------------------------------
/src/images/icons/StaticSiteGenerators/scully.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
30 |
--------------------------------------------------------------------------------
/src/images/icons/Testing/cypress.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
14 |
--------------------------------------------------------------------------------
/src/images/icons/Testing/jasmine.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/src/images/icons/Testing/karma.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
15 |
--------------------------------------------------------------------------------
/src/images/mdg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daos12/github-profile-readme-generator/888aff31e1d26dd2a6acf6afebbc34970aeb0118/src/images/mdg.png
--------------------------------------------------------------------------------
/src/pages/404.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import SEO from '../components/seo';
3 |
4 | const NotFoundPage = () => (
5 |
6 |
7 |
NOT FOUND
8 |
You just hit a route that doesn't exist... the sadness.
9 |
10 | );
11 |
12 | export default NotFoundPage;
13 |
--------------------------------------------------------------------------------
/src/templates/blogTemplate.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { graphql } from 'gatsby';
3 | // import Header from '../components/header'
4 | // import Footer from '../components/footer'
5 | import { Helmet } from 'react-helmet';
6 | import Layout from '../components/layout';
7 |
8 | export default function Template({
9 | data, // this prop will be injected by the GraphQL query below.
10 | }) {
11 | const { markdownRemark } = data; // data.markdownRemark holds your post data
12 | const { frontmatter, html } = markdownRemark;
13 | return (
14 |
15 |
16 |
17 | {frontmatter.title}
18 |
19 |
20 |
21 |
22 |
{frontmatter.title}
23 |
24 |
25 |
26 |
27 | );
28 | }
29 |
30 | export const pageQuery = graphql`
31 | query($slug: String!) {
32 | markdownRemark(frontmatter: { slug: { eq: $slug } }) {
33 | html
34 | frontmatter {
35 | date(formatString: "MMMM DD, YYYY")
36 | slug
37 | title
38 | }
39 | }
40 | }
41 | `;
42 |
--------------------------------------------------------------------------------
/src/utils/__tests__/validation.test.js:
--------------------------------------------------------------------------------
1 | import { isGitHubUsernameValid, isMediumUsernameValid, isTwitterUsernameValid } from '../validation';
2 |
3 | describe('validation', () => {
4 | it('isGitHubUsernameValid', () => {
5 | expect(isGitHubUsernameValid('Lorem ipsum dolor sit amet, consectetur adipiscing elit')).toBe(false);
6 | expect(isGitHubUsernameValid('rahuldkjain')).toBe(true);
7 | });
8 |
9 | it('isMediumUsernameValid', () => {
10 | expect(isMediumUsernameValid('rahuldkjain')).toBe(false);
11 | expect(isMediumUsernameValid('@rahuldkjain')).toBe(true);
12 | });
13 |
14 | it('isTwitterUsernameValid', () => {
15 | expect(isTwitterUsernameValid('Lorem ipsum dolor sit amet, consectetur adipiscing elit')).toBe(false);
16 | expect(isTwitterUsernameValid('rahuldkjain')).toBe(true);
17 | });
18 | });
19 |
--------------------------------------------------------------------------------
/src/utils/link-generators.js:
--------------------------------------------------------------------------------
1 | const githubStatsStylingQueryString = (options) => {
2 | const params = {
3 | show_icons: true,
4 | ...(options.theme && options.theme !== 'none' && { theme: options.theme }),
5 | ...(options.titleColor && { title_color: options.titleColor }),
6 | ...(options.textColor && { text_color: options.textColor }),
7 | ...(options.bgColor && { bg_color: options.bgColor }),
8 | ...(options.hideBorder && { hide_border: options.hideBorder }),
9 | ...(options.cacheSeconds && { cache_seconds: options.cacheSeconds }),
10 | ...(options.locale && { locale: options.locale }),
11 | };
12 | const queryString = Object.entries(params)
13 | .map(([key, value]) => `${key}=${value}`)
14 | .join('&');
15 | return queryString;
16 | };
17 |
18 | const streakStatsStylingQueryString = (options) => {
19 | const params = {
20 | ...(options.theme && options.theme !== 'none' && { theme: options.theme }),
21 | };
22 | const queryString = Object.entries(params)
23 | .map(([key, value]) => `${key}=${value}`)
24 | .join('&');
25 | return queryString;
26 | };
27 |
28 | export const githubStatsLinkGenerator = ({ github, options }) =>
29 | `https://github-readme-stats.vercel.app/api?username=${github}&${githubStatsStylingQueryString(options)}`;
30 |
31 | export const topLanguagesLinkGenerator = ({ github, options }) =>
32 | `https://github-readme-stats.vercel.app/api/top-langs?username=${github}&${githubStatsStylingQueryString(
33 | options,
34 | )}&layout=compact`;
35 |
36 | export const streakStatsLinkGenerator = ({ github, options }) =>
37 | `https://github-readme-streak-stats.herokuapp.com/?user=${github}&${streakStatsStylingQueryString(options)}`;
38 |
--------------------------------------------------------------------------------
/src/utils/validation.js:
--------------------------------------------------------------------------------
1 | const isGitHubUsernameValid = (username) => {
2 | const pattern = /^[a-z\d](?:[a-z\d]|-(?=[a-z\d])){0,38}$/i;
3 | return pattern.test(username);
4 | };
5 | const isMediumUsernameValid = (username) => {
6 | if (username) {
7 | return username[0] === '@';
8 | }
9 | return true;
10 | };
11 |
12 | const isTwitterUsernameValid = (username) => {
13 | const pattern = /^[a-zA-Z0-9_]{1,15}$/;
14 | return pattern.test(username);
15 | };
16 |
17 | export { isGitHubUsernameValid, isMediumUsernameValid, isTwitterUsernameValid };
18 |
--------------------------------------------------------------------------------
/tailwind.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | purge: [],
3 | theme: {
4 | extend: {},
5 | fontSize: {
6 | xxs: '.60rem',
7 | xs: '.75rem',
8 | sm: '.875rem',
9 | tiny: '.875rem',
10 | base: '1rem',
11 | lg: '1.125rem',
12 | xl: '1.25rem',
13 | '2xl': '1.5rem',
14 | '3xl': '1.875rem',
15 | '4xl': '2.25rem',
16 | '5xl': '3rem',
17 | '6xl': '4rem',
18 | '7xl': '5rem',
19 | },
20 | fontFamily: {
21 | title: ['Lato', 'sans-serif'],
22 | body: ['Roboto Mono', 'monospace'],
23 | },
24 | },
25 | variants: {},
26 | plugins: [],
27 | };
28 |
--------------------------------------------------------------------------------