├── README.md
├── public
├── _redirects
├── favicon.ico
├── apple-icon.png
├── favicon-16x16.png
├── favicon-32x32.png
├── favicon-96x96.png
├── ms-icon-70x70.png
├── apple-icon-57x57.png
├── apple-icon-60x60.png
├── apple-icon-72x72.png
├── apple-icon-76x76.png
├── ms-icon-144x144.png
├── ms-icon-150x150.png
├── ms-icon-310x310.png
├── android-icon-36x36.png
├── android-icon-48x48.png
├── android-icon-72x72.png
├── android-icon-96x96.png
├── apple-icon-114x114.png
├── apple-icon-120x120.png
├── apple-icon-144x144.png
├── apple-icon-152x152.png
├── apple-icon-180x180.png
├── android-icon-144x144.png
├── android-icon-192x192.png
├── apple-icon-precomposed.png
├── browserconfig.xml
├── manifest.json
└── index.html
├── screenshot.png
├── src
├── actions
│ ├── index.js
│ └── app.actions.js
├── routes
│ ├── index.js
│ └── Home.route.js
├── config
│ ├── index.js
│ ├── settings.js
│ └── constants.js
├── App.test.js
├── icons
│ ├── star-fill.svg
│ ├── dark
│ │ ├── star-fill.svg
│ │ ├── star-blank.svg
│ │ ├── linkedin.svg
│ │ ├── phone.svg
│ │ ├── internet.svg
│ │ ├── mail.svg
│ │ └── github.svg
│ ├── star-blank.svg
│ ├── linkedin.svg
│ ├── phone.svg
│ ├── internet.svg
│ ├── mail.svg
│ └── github.svg
├── reducers
│ ├── index.js
│ ├── resume.reducer.js
│ ├── app.reducer.js
│ └── tools.reducer.js
├── components
│ ├── Navigation
│ │ ├── index.js
│ │ ├── TopNavigation.js
│ │ ├── SidebarHeader.js
│ │ ├── SidebarCloseButton.js
│ │ └── Toolbar.js
│ ├── index.js
│ ├── Tools
│ │ ├── index.js
│ │ ├── Buttons
│ │ │ ├── index.js
│ │ │ ├── PrintButton.js
│ │ │ ├── MoreVisibilityButton.js
│ │ │ ├── EditorButton.js
│ │ │ ├── DownloadButton.js
│ │ │ ├── ItemToggleButton.js
│ │ │ ├── LocalStorageToggle.js
│ │ │ ├── LoadFromFileButton.js
│ │ │ └── SaveToCloudButtons.js
│ │ ├── FontSelector.js
│ │ ├── PaperSize.js
│ │ ├── OrderChanger.js
│ │ ├── MoreVisibilityModal.js
│ │ ├── CodeEditor.js
│ │ └── VisibilityChanger.js
│ └── Resume
│ │ ├── ProfessionalSummary.js
│ │ ├── Education.js
│ │ ├── Stars.js
│ │ ├── Certifications.js
│ │ ├── Experience.js
│ │ ├── TechnicalSkills.js
│ │ ├── Projects.js
│ │ ├── index.js
│ │ └── Header.js
├── index.js
├── helpers
│ ├── localstorage.helper.js
│ ├── app.helper.js
│ ├── font.helper.js
│ ├── tools.helper.js
│ └── resume.helper.js
├── store.js
├── App.js
├── styles
│ ├── App.css
│ ├── darkmode.css
│ └── Resume.css
├── resume-data.js
└── tests
│ └── VisibilityChanger.test.js
└── package.json
/README.md:
--------------------------------------------------------------------------------
1 | # Online Resume Builder
2 |
--------------------------------------------------------------------------------
/public/_redirects:
--------------------------------------------------------------------------------
1 | /* /index.html 200
2 |
--------------------------------------------------------------------------------
/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/screenshot.png
--------------------------------------------------------------------------------
/src/actions/index.js:
--------------------------------------------------------------------------------
1 | import app from './app.actions';
2 |
3 | export default { app };
4 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/favicon.ico
--------------------------------------------------------------------------------
/public/apple-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/apple-icon.png
--------------------------------------------------------------------------------
/src/routes/index.js:
--------------------------------------------------------------------------------
1 | import Home from './Home.route';
2 |
3 | export default {
4 | Home,
5 | };
6 |
--------------------------------------------------------------------------------
/public/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/favicon-16x16.png
--------------------------------------------------------------------------------
/public/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/favicon-32x32.png
--------------------------------------------------------------------------------
/public/favicon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/favicon-96x96.png
--------------------------------------------------------------------------------
/public/ms-icon-70x70.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/ms-icon-70x70.png
--------------------------------------------------------------------------------
/public/apple-icon-57x57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/apple-icon-57x57.png
--------------------------------------------------------------------------------
/public/apple-icon-60x60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/apple-icon-60x60.png
--------------------------------------------------------------------------------
/public/apple-icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/apple-icon-72x72.png
--------------------------------------------------------------------------------
/public/apple-icon-76x76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/apple-icon-76x76.png
--------------------------------------------------------------------------------
/public/ms-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/ms-icon-144x144.png
--------------------------------------------------------------------------------
/public/ms-icon-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/ms-icon-150x150.png
--------------------------------------------------------------------------------
/public/ms-icon-310x310.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/ms-icon-310x310.png
--------------------------------------------------------------------------------
/public/android-icon-36x36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/android-icon-36x36.png
--------------------------------------------------------------------------------
/public/android-icon-48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/android-icon-48x48.png
--------------------------------------------------------------------------------
/public/android-icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/android-icon-72x72.png
--------------------------------------------------------------------------------
/public/android-icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/android-icon-96x96.png
--------------------------------------------------------------------------------
/public/apple-icon-114x114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/apple-icon-114x114.png
--------------------------------------------------------------------------------
/public/apple-icon-120x120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/apple-icon-120x120.png
--------------------------------------------------------------------------------
/public/apple-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/apple-icon-144x144.png
--------------------------------------------------------------------------------
/public/apple-icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/apple-icon-152x152.png
--------------------------------------------------------------------------------
/public/apple-icon-180x180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/apple-icon-180x180.png
--------------------------------------------------------------------------------
/public/android-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/android-icon-144x144.png
--------------------------------------------------------------------------------
/public/android-icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/android-icon-192x192.png
--------------------------------------------------------------------------------
/public/apple-icon-precomposed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MainakRepositor/ResumeR/HEAD/public/apple-icon-precomposed.png
--------------------------------------------------------------------------------
/src/config/index.js:
--------------------------------------------------------------------------------
1 | import constants from './constants';
2 | import settings from './settings';
3 |
4 | export {
5 | constants,
6 | settings,
7 | };
8 |
--------------------------------------------------------------------------------
/src/App.test.js:
--------------------------------------------------------------------------------
1 | import ReactDOM from 'react-dom';
2 |
3 | it('renders without crashing', () => {
4 | const div = document.createElement('div');
5 | ReactDOM.unmountComponentAtNode(div);
6 | });
7 |
--------------------------------------------------------------------------------
/src/icons/star-fill.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/icons/dark/star-fill.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/reducers/index.js:
--------------------------------------------------------------------------------
1 | import { combineReducers } from 'redux';
2 | import app from './app.reducer';
3 | import resume from './resume.reducer';
4 | import tools from './tools.reducer';
5 |
6 | export default combineReducers({
7 | app,
8 | resume,
9 | tools,
10 | });
11 |
--------------------------------------------------------------------------------
/src/components/Navigation/index.js:
--------------------------------------------------------------------------------
1 | import SidebarCloseButton from './SidebarCloseButton';
2 | import ToolbarHeader from './SidebarHeader';
3 | import TopNavigation from './TopNavigation';
4 |
5 | export {
6 | SidebarCloseButton,
7 | ToolbarHeader,
8 | TopNavigation,
9 | };
10 |
--------------------------------------------------------------------------------
/public/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 | #ffffff
--------------------------------------------------------------------------------
/src/components/index.js:
--------------------------------------------------------------------------------
1 | import TopNavigation from './Navigation/TopNavigation';
2 | import CodeEditor from './Tools/CodeEditor';
3 | import Toolbar from './Navigation/Toolbar';
4 | import MoreVisibilityModal from './Tools/MoreVisibilityModal';
5 |
6 | export {
7 | TopNavigation,
8 | CodeEditor,
9 | Toolbar,
10 | MoreVisibilityModal,
11 | };
12 |
--------------------------------------------------------------------------------
/src/icons/star-blank.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/icons/dark/star-blank.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom/client';
3 | import { Provider } from 'react-redux';
4 | import 'semantic-ui-css/semantic.min.css';
5 | import 'react-toastify/dist/ReactToastify.css';
6 | import App from './App';
7 | import store from './store';
8 |
9 | const container = document.getElementById('root');
10 | const root = ReactDOM.createRoot(container);
11 |
12 | root.render(
13 |
14 |
15 | ,
16 | );
17 |
--------------------------------------------------------------------------------
/src/config/settings.js:
--------------------------------------------------------------------------------
1 | const SETTINGS = {
2 | API: {
3 | URL: process.env.REACT_APP_API_URL,
4 | SAVE: (key) => `save?code=${key}`,
5 | FILE: (id, js, key) => `file?code=${key}&id=${id}&js=${js}`,
6 | SAVE_KEY: process.env.REACT_APP_SAVE_KEY,
7 | FILE_KEY: process.env.REACT_APP_FILE_KEY,
8 | },
9 | };
10 |
11 | export const APP = {
12 | URL: process.env.PUBLIC_URL || '/',
13 | WORKING_DIR: process.env.REACT_APP_WORKING_DIR || '',
14 | };
15 |
16 | export default SETTINGS;
17 |
--------------------------------------------------------------------------------
/src/routes/Home.route.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {
3 | CodeEditor,
4 | TopNavigation,
5 | Toolbar,
6 | MoreVisibilityModal,
7 | } from '../components';
8 | import Resume from '../components/Resume';
9 |
10 | function Home() {
11 | return (
12 | <>
13 |
14 |
15 |
16 |
17 |
18 | >
19 | );
20 | }
21 |
22 | Home.defaultProps = {
23 | };
24 |
25 | Home.propTypes = {
26 | };
27 |
28 | export default Home;
29 |
--------------------------------------------------------------------------------
/src/components/Tools/index.js:
--------------------------------------------------------------------------------
1 | import {
2 | EditorButton,
3 | PrintButton,
4 | DownloadButton,
5 | LoadFromFileButton,
6 | SaveToCloudButtons,
7 | LocalStorageToggle,
8 | } from './Buttons';
9 | import VisibilityChanger from './VisibilityChanger';
10 | import FontSelector from './FontSelector';
11 | import OrderChanger from './OrderChanger';
12 | import PaperSize from './PaperSize';
13 |
14 | export {
15 | EditorButton,
16 | FontSelector,
17 | PrintButton,
18 | VisibilityChanger,
19 | OrderChanger,
20 | DownloadButton,
21 | LoadFromFileButton,
22 | SaveToCloudButtons,
23 | LocalStorageToggle,
24 | PaperSize,
25 | };
26 |
--------------------------------------------------------------------------------
/src/components/Tools/Buttons/index.js:
--------------------------------------------------------------------------------
1 | import EditorButton from './EditorButton';
2 | import PrintButton from './PrintButton';
3 | import ItemToggleButton from './ItemToggleButton';
4 | import DownloadButton from './DownloadButton';
5 | import LoadFromFileButton from './LoadFromFileButton';
6 | import SaveToCloudButtons from './SaveToCloudButtons';
7 | import LocalStorageToggle from './LocalStorageToggle';
8 | import MoreVisibilityButton from './MoreVisibilityButton';
9 |
10 | export {
11 | EditorButton,
12 | PrintButton,
13 | ItemToggleButton,
14 | DownloadButton,
15 | LoadFromFileButton,
16 | SaveToCloudButtons,
17 | LocalStorageToggle,
18 | MoreVisibilityButton,
19 | };
20 |
--------------------------------------------------------------------------------
/src/components/Tools/Buttons/PrintButton.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Label, Icon, Button } from 'semantic-ui-react';
3 |
4 | function PrintButton() {
5 | return (
6 |
7 |
11 |
27 | );
28 | }
29 |
30 | export default PrintButton;
31 |
--------------------------------------------------------------------------------
/src/helpers/localstorage.helper.js:
--------------------------------------------------------------------------------
1 | const setItem = (key, item) => {
2 | if (window.localStorage) {
3 | localStorage.setItem(key, btoa(JSON.stringify(item)));
4 | return true;
5 | }
6 | return false;
7 | };
8 |
9 | const getItem = (key) => {
10 | try {
11 | if (window.localStorage) {
12 | const item = localStorage.getItem(key);
13 | if (item) {
14 | return JSON.parse(atob(item));
15 | }
16 | }
17 | } catch (error) {
18 | return undefined;
19 | }
20 | return undefined;
21 | };
22 |
23 | const clear = (key) => {
24 | if (window.localStorage) {
25 | localStorage.clear(key);
26 | }
27 | };
28 |
29 | const removeItem = (key) => {
30 | if (window.localStorage) {
31 | localStorage.removeItem(key);
32 | }
33 | };
34 |
35 | export default {
36 | setItem,
37 | getItem,
38 | clear,
39 | removeItem,
40 | };
41 |
--------------------------------------------------------------------------------
/src/config/constants.js:
--------------------------------------------------------------------------------
1 | import { APP } from './settings';
2 |
3 | const CONSTANTS = {
4 | APP: {
5 | NAME: 'JSON Resume',
6 | COMPANY: 'Andy Amaya',
7 | },
8 | ENVIRONMENT: {
9 | TEST: 'TEST',
10 | DEVELOPMENT: 'DEVELOPMENT',
11 | PRODUCTION: 'PRODUCTION',
12 | CURRENT: process.env.REACT_APP_ENV,
13 | },
14 | ROUTES: {
15 | HOME: {
16 | PATH: `${APP.WORKING_DIR}/`,
17 | NAME: 'Home',
18 | ENABLED: true,
19 | SHOW_IN_MENU: false,
20 | SHOW_IN_NAV: true,
21 | ICON: 'home',
22 | },
23 | },
24 | };
25 |
26 | export default CONSTANTS;
27 |
28 | export const SAVE_RESUME_ERROR_TOAST_ID = 'rrterrorsaveresume';
29 |
30 | export const SAVE_RESUME_SUCCESS_TOAST_ID = 'rrtresumesaved';
31 |
32 | export const LOCAL_STORAGE_ON_TOAST_ID = 'rrtrlson';
33 |
34 | export const LOCAL_STORAGE_OFF_TOAST_ID = 'rrtrlsoff';
35 |
--------------------------------------------------------------------------------
/src/components/Tools/Buttons/MoreVisibilityButton.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { connect } from 'react-redux';
4 | import { Button } from 'semantic-ui-react';
5 | import { toggleMoreVisibility } from '../../../actions/app.actions';
6 |
7 | function MoreVisibilityButton({ dispatch }) {
8 | return (
9 |