diff --git a/package-lock.json b/package-lock.json index c8786a3..546f2a9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1770,7 +1770,7 @@ }, "array-equal": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" }, "array-filter": { @@ -1971,7 +1971,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { "ansi-styles": "^2.2.1", @@ -2151,7 +2151,7 @@ }, "babel-plugin-syntax-object-rest-spread": { "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" }, "babel-plugin-transform-object-rest-spread": { @@ -2530,7 +2530,7 @@ }, "browserify-aes": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "requires": { "buffer-xor": "^1.0.3", @@ -2564,7 +2564,7 @@ }, "browserify-rsa": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "requires": { "bn.js": "^4.1.0", @@ -2613,7 +2613,7 @@ }, "buffer": { "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "requires": { "base64-js": "^1.0.2", @@ -2713,7 +2713,7 @@ }, "callsites": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "resolved": "http://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" }, "camel-case": { @@ -3385,7 +3385,7 @@ }, "clone-deep": { "version": "0.2.4", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", + "resolved": "http://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=", "requires": { "for-own": "^0.1.3", @@ -3668,7 +3668,7 @@ }, "create-hash": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "requires": { "cipher-base": "^1.0.1", @@ -3680,7 +3680,7 @@ }, "create-hmac": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "requires": { "cipher-base": "^1.0.3", @@ -3731,7 +3731,7 @@ }, "css-color-names": { "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "resolved": "http://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" }, "css-declaration-sorter": { @@ -4112,7 +4112,7 @@ "dependencies": { "globby": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "resolved": "http://registry.npmjs.org/globby/-/globby-6.1.0.tgz", "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "requires": { "array-union": "^1.0.1", @@ -4124,7 +4124,7 @@ "dependencies": { "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" } } @@ -4186,7 +4186,7 @@ }, "diffie-hellman": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "requires": { "bn.js": "^4.1.0", @@ -4328,7 +4328,7 @@ }, "duplexer": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" }, "duplexify": { @@ -6321,7 +6321,7 @@ }, "is-obj": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" }, "is-path-cwd": { @@ -8011,7 +8011,7 @@ }, "media-typer": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, "mem": { @@ -8224,7 +8224,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" @@ -8683,7 +8683,7 @@ }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "p-defer": { @@ -8837,7 +8837,7 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-is-inside": { @@ -10376,7 +10376,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", @@ -10494,7 +10494,7 @@ "dependencies": { "jsesc": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" } } @@ -10775,7 +10775,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "requires": { "ret": "~0.1.10" @@ -11031,7 +11031,7 @@ }, "sha.js": { "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "requires": { "inherits": "^2.0.1", @@ -11056,7 +11056,7 @@ }, "kind-of": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "resolved": "http://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", "requires": { "is-buffer": "^1.0.2" @@ -11589,7 +11589,7 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, "strip-json-comments": { @@ -11857,7 +11857,7 @@ }, "through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "through2": { @@ -12935,7 +12935,7 @@ }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { "string-width": "^1.0.1", diff --git a/src/Website.js b/src/Website.js index 7728fc9..51ac2f8 100644 --- a/src/Website.js +++ b/src/Website.js @@ -1,19 +1,19 @@ // @flow -import React from "react" +import React from 'react' -import Header from "./components/Header" -import Navbar from "./components/Navbar" -import Routes from "./routes" +import Header from './components/Header' +import Navbar from './components/Navbar' +import Routes from './routes' -import "./Website.css" +import './Website.css' type Props = {} class Website extends React.Component { - render() { + render () { return ( -
-
+
+
diff --git a/src/Website.test.js b/src/Website.test.js index 492cc09..121ea64 100644 --- a/src/Website.test.js +++ b/src/Website.test.js @@ -1,9 +1,9 @@ -import React from "react" -import ReactDOM from "react-dom" -import Website from "./Website.js" +import React from 'react' +import ReactDOM from 'react-dom' +import Website from './Website.js' -it("renders without crashing", () => { - const div = document.createElement("div") +it('renders without crashing', () => { + const div = document.createElement('div') ReactDOM.render(, div) ReactDOM.unmountComponentAtNode(div) }) diff --git a/src/components/ClearButton/index.js b/src/components/ClearButton/index.js index 0d6f872..87444d4 100644 --- a/src/components/ClearButton/index.js +++ b/src/components/ClearButton/index.js @@ -1,7 +1,7 @@ // @flow -import React from "react" +import React from 'react' -import "./index.css" +import './index.css' type Props = { href: string, @@ -9,9 +9,9 @@ type Props = { } class ClearButton extends React.PureComponent { - render() { + render () { return ( - + {this.props.children} ) diff --git a/src/components/Contact/index.js b/src/components/Contact/index.js deleted file mode 100644 index ba7e3e8..0000000 --- a/src/components/Contact/index.js +++ /dev/null @@ -1,22 +0,0 @@ -// @flow -import React from "react" - -import "./index.css" -import linkedIn from "../../images/In-2C-128px-TM.png" - -type Props = {} - -class Contact extends React.PureComponent { - render() { - return ( -
-

m@mjfs.us

- - LinkedIn - -
- ) - } -} - -export default Contact diff --git a/src/components/Header/index.js b/src/components/Header/index.js index 4d7819e..d438ada 100644 --- a/src/components/Header/index.js +++ b/src/components/Header/index.js @@ -1,18 +1,23 @@ // @flow -import React from "react" +import React from 'react' -import SmallText from "../SmallText" +import SmallText from '../SmallText' -import "./index.css" +import './index.css' type Props = {} class Header extends React.PureComponent { - render() { + render () { return ( -
+

Mitchell J. F. Simon

- Backend Engineer, TV Time + + Software engineer;  + + cloud-native web services and clients + +
) } diff --git a/src/components/Job/index.js b/src/components/Job/index.js index 952fb9b..9b83868 100644 --- a/src/components/Job/index.js +++ b/src/components/Job/index.js @@ -1,8 +1,8 @@ // @flow -import * as React from "react" +import * as React from 'react' -import SmallText from "../../components/SmallText" -import "./index.css" +import SmallText from '../../components/SmallText' +import './index.css' type Props = { title: string, @@ -14,7 +14,7 @@ type Props = { class Experience extends React.PureComponent { listedBullets: Array> - constructor(props: Props) { + constructor (props: Props) { super(props) this.listedBullets = this.props.bullets.map((bullet, index) => ( @@ -22,11 +22,11 @@ class Experience extends React.PureComponent { )) } - render() { + render () { return ( -
-
{this.props.title}
-
{this.props.company}
+
+
{this.props.title}
+
{this.props.company}
{this.props.timeSpan}
    {this.listedBullets}
diff --git a/src/components/Navbar/index.js b/src/components/Navbar/index.js index ba1020d..d84d848 100644 --- a/src/components/Navbar/index.js +++ b/src/components/Navbar/index.js @@ -1,11 +1,11 @@ // @flow -import * as React from "react" -import { NavLink } from "react-router-dom" -import FontAwesomeIcon from "@fortawesome/react-fontawesome" -import faBars from "@fortawesome/fontawesome-free-solid/faBars" +import * as React from 'react' +import { NavLink } from 'react-router-dom' +import FontAwesomeIcon from '@fortawesome/react-fontawesome' +import faBars from '@fortawesome/fontawesome-free-solid/faBars' -import "./index.css" -import { routes } from "../../routes/routes.js" +import './index.css' +import { routes } from '../../routes/routes.js' const changeMenu = 800 @@ -18,7 +18,7 @@ type State = { class Navbar extends React.Component { buttons: Array> - constructor(props: Props) { + constructor (props: Props) { super(props) if (window.innerWidth <= changeMenu) { @@ -30,8 +30,8 @@ class Navbar extends React.Component { this.buttons = routes.map(route => ( { } } - render() { + render () { let menuButton: ?React.Element if (this.isMobile()) { @@ -64,8 +64,8 @@ class Navbar extends React.Component {
@@ -75,10 +75,10 @@ class Navbar extends React.Component { } return ( -
+
{menuButton} {this.state.showMenu ? ( -
{this.buttons}
+
{this.buttons}
) : null}
) diff --git a/src/components/Project/index.js b/src/components/Project/index.js index 3422d4b..7c2d5bb 100644 --- a/src/components/Project/index.js +++ b/src/components/Project/index.js @@ -1,9 +1,9 @@ // @flow -import * as React from "react" +import * as React from 'react' -import ClearButton from "../../components/ClearButton" +import ClearButton from '../../components/ClearButton' -import "./index.css" +import './index.css' type Badge = { imgUrl: string, @@ -21,15 +21,15 @@ type Props = { class Project extends React.PureComponent { renderBadges = (badges: Array) => { return this.props.badges.map((badge, index) => ( - + {badge.alt} )) } - render() { + render () { return ( -
+

{this.props.title}

{this.renderBadges(this.props.badges)}

{this.props.children}

diff --git a/src/components/SmallText/index.js b/src/components/SmallText/index.js index 1594622..5f8d850 100644 --- a/src/components/SmallText/index.js +++ b/src/components/SmallText/index.js @@ -1,15 +1,15 @@ // @flow -import React from "react" +import React from 'react' -import "./index.css" +import './index.css' type Props = { children: string } class SmallText extends React.PureComponent { - render() { - return
{this.props.children}
+ render () { + return
{this.props.children}
} } diff --git a/src/index.js b/src/index.js index e5d4486..a0e20a0 100644 --- a/src/index.js +++ b/src/index.js @@ -1,15 +1,15 @@ -import React from "react" -import ReactDOM from "react-dom" -import { BrowserRouter } from "react-router-dom" +import React from 'react' +import ReactDOM from 'react-dom' +import { BrowserRouter } from 'react-router-dom' -import "./index.css" -import Website from "./Website" -import registerServiceWorker from "./registerServiceWorker" +import './index.css' +import Website from './Website' +import registerServiceWorker from './registerServiceWorker' ReactDOM.render( , - document.getElementById("root") + document.getElementById('root') ) registerServiceWorker() diff --git a/src/registerServiceWorker.js b/src/registerServiceWorker.js index 88be07a..07ab286 100644 --- a/src/registerServiceWorker.js +++ b/src/registerServiceWorker.js @@ -9,17 +9,17 @@ // This link also includes instructions on opting out of this behavior. const isLocalhost = Boolean( - window.location.hostname === "localhost" || + window.location.hostname === 'localhost' || // [::1] is the IPv6 localhost address. - window.location.hostname === "[::1]" || + window.location.hostname === '[::1]' || // 127.0.0.1/8 is considered localhost for IPv4. window.location.hostname.match( /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ ) ) -export default function register() { - if (process.env.NODE_ENV === "production" && "serviceWorker" in navigator) { +export default function register () { + if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { // The URL constructor is available in all browsers that support SW. const publicUrl = new URL(process.env.PUBLIC_URL, window.location) // eslint-disable-line no-undef if (publicUrl.origin !== window.location.origin) { @@ -29,7 +29,7 @@ export default function register() { return } - window.addEventListener("load", () => { + window.addEventListener('load', () => { const swUrl = `${process.env.PUBLIC_URL}/service-worker.js` if (isLocalhost) { @@ -40,8 +40,8 @@ export default function register() { // service worker/PWA documentation. navigator.serviceWorker.ready.then(() => { console.log( - "This web app is being served cache-first by a service " + - "worker. To learn more, visit https://goo.gl/SC7cgQ" + 'This web app is being served cache-first by a service ' + + 'worker. To learn more, visit https://goo.gl/SC7cgQ' ) }) } else { @@ -52,43 +52,43 @@ export default function register() { } } -function registerValidSW(swUrl) { +function registerValidSW (swUrl) { navigator.serviceWorker .register(swUrl) .then(registration => { registration.onupdatefound = () => { const installingWorker = registration.installing installingWorker.onstatechange = () => { - if (installingWorker.state === "installed") { + if (installingWorker.state === 'installed') { if (navigator.serviceWorker.controller) { // At this point, the old content will have been purged and // the fresh content will have been added to the cache. // It's the perfect time to display a "New content is // available; please refresh." message in your web app. - console.log("New content is available; please refresh.") + console.log('New content is available; please refresh.') } else { // At this point, everything has been precached. // It's the perfect time to display a // "Content is cached for offline use." message. - console.log("Content is cached for offline use.") + console.log('Content is cached for offline use.') } } } } }) .catch(error => { - console.error("Error during service worker registration:", error) + console.error('Error during service worker registration:', error) }) } -function checkValidServiceWorker(swUrl) { +function checkValidServiceWorker (swUrl) { // Check if the service worker can be found. If it can't reload the page. fetch(swUrl) // eslint-disable-line no-undef .then(response => { // Ensure service worker exists, and that we really are getting a JS file. if ( response.status === 404 || - response.headers.get("content-type").indexOf("javascript") === -1 + response.headers.get('content-type').indexOf('javascript') === -1 ) { // No service worker found. Probably a different app. Reload the page. navigator.serviceWorker.ready.then(registration => { @@ -103,13 +103,13 @@ function checkValidServiceWorker(swUrl) { }) .catch(() => { console.log( - "No internet connection found. App is running in offline mode." + 'No internet connection found. App is running in offline mode.' ) }) } -export function unregister() { - if ("serviceWorker" in navigator) { +export function unregister () { + if ('serviceWorker' in navigator) { navigator.serviceWorker.ready.then(registration => { registration.unregister() }) diff --git a/src/routes/index.js b/src/routes/index.js index 2d6caa8..813dd32 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -1,8 +1,8 @@ // @flow -import React from "react" -import { Route, Switch } from "react-router-dom" +import React from 'react' +import { Route, Switch } from 'react-router-dom' -import { routes, redirects } from "./routes.js" +import { routes, redirects } from './routes.js' type Props = {} @@ -10,7 +10,7 @@ class Routes extends React.Component { routes: Array redirects: Array - constructor(props: Props) { + constructor (props: Props) { super(props) this.routes = routes.map(route => ( @@ -27,7 +27,7 @@ class Routes extends React.Component { )) } - render() { + render () { return ( {this.routes} diff --git a/src/routes/routes.js b/src/routes/routes.js index 8c6c95e..a589bc8 100644 --- a/src/routes/routes.js +++ b/src/routes/routes.js @@ -1,24 +1,24 @@ // @flow -import Home from "../components/Home" -import Projects from "../containers/Projects" -import Contact from "../components/Contact" +import Home from '../screens/Home' +import Projects from '../screens/Projects' +import Contact from '../screens/Contact' const routes = [ { - path: "/", - name: "Home", + path: '/', + name: 'Home', component: Home, exact: true }, { - path: "/projects", - name: "Projects", + path: '/projects', + name: 'Projects', component: Projects, exact: false }, { - path: "/contact", - name: "Contact", + path: '/contact', + name: 'Contact', component: Contact, exact: false } @@ -26,8 +26,8 @@ const routes = [ const redirects = [ { - path: "/linkedin", - func: () => (window.location = "https://linkedin.com/in/mitchelljfsimon") + path: '/linkedin', + func: () => (window.location = 'https://linkedin.com/in/mitchelljfsimon') } ] diff --git a/src/components/Contact/index.css b/src/screens/Contact/index.css similarity index 100% rename from src/components/Contact/index.css rename to src/screens/Contact/index.css diff --git a/src/screens/Contact/index.js b/src/screens/Contact/index.js new file mode 100644 index 0000000..7980cb8 --- /dev/null +++ b/src/screens/Contact/index.js @@ -0,0 +1,22 @@ +// @flow +import React from 'react' + +import './index.css' +import linkedIn from '../../images/In-2C-128px-TM.png' + +type Props = {} + +class Contact extends React.PureComponent { + render () { + return ( +
+

m@mjfs.us

+ + LinkedIn + +
+ ) + } +} + +export default Contact diff --git a/src/containers/Experience/index.css b/src/screens/Experience/index.css similarity index 100% rename from src/containers/Experience/index.css rename to src/screens/Experience/index.css diff --git a/src/containers/Experience/index.js b/src/screens/Experience/index.js similarity index 69% rename from src/containers/Experience/index.js rename to src/screens/Experience/index.js index badb454..d26e893 100644 --- a/src/containers/Experience/index.js +++ b/src/screens/Experience/index.js @@ -1,10 +1,10 @@ // @flow -import * as React from "react" +import * as React from 'react' -import "./index.css" -import JobComponent from "../../components/Job" +import './index.css' +import JobComponent from '../../components/Job' -import jobsData from "../../data/jobs.json" +import jobsData from '../../data/jobs.json' type Props = {} @@ -28,9 +28,9 @@ class Experience extends React.PureComponent { )) } - render() { + render () { return ( -
{this.renderJobs(jobsData)}
+
{this.renderJobs(jobsData)}
) } } diff --git a/src/components/Home/index.css b/src/screens/Home/index.css similarity index 100% rename from src/components/Home/index.css rename to src/screens/Home/index.css diff --git a/src/components/Home/index.js b/src/screens/Home/index.js similarity index 72% rename from src/components/Home/index.js rename to src/screens/Home/index.js index fd130cd..fbca990 100644 --- a/src/components/Home/index.js +++ b/src/screens/Home/index.js @@ -15,11 +15,12 @@ class Home extends React.PureComponent {

I am a software developer, with most of my experience in web services. More specifically, for the past year, I have been focused on Go web - services with cloud-native architectures. Tech that I love working - with includes Go, TypeScript, gRPC, Serverless, Docker, Redis, and - PostgreSQL. Concepts that I am currently focused on are Docker - containerization and orchestration, microservices software architecture - w/ dependency injection, and infrastructure as code using Terraform. + services with cloud-native architectures. Tech that I love working + with includes Go, TypeScript, gRPC, Serverless, Docker, Redis, and + PostgreSQL. Concepts that I am currently focused on are Docker + containerization and orchestration, microservices software + architecture w/ dependency injection, and infrastructure as code using + Terraform.

My professional interests, aside from the above, include software diff --git a/src/containers/Projects/index.css b/src/screens/Projects/index.css similarity index 100% rename from src/containers/Projects/index.css rename to src/screens/Projects/index.css diff --git a/src/containers/Projects/index.js b/src/screens/Projects/index.js similarity index 75% rename from src/containers/Projects/index.js rename to src/screens/Projects/index.js index 37982bb..6775e4f 100644 --- a/src/containers/Projects/index.js +++ b/src/screens/Projects/index.js @@ -1,11 +1,11 @@ // @flow -import * as React from "react" +import * as React from 'react' -import ProjectComponent from "../../components/Project" +import ProjectComponent from '../../components/Project' -import "./index.css" +import './index.css' -import projectsData from "../../data/projects.json" +import projectsData from '../../data/projects.json' type Props = {} @@ -36,9 +36,9 @@ class Projects extends React.PureComponent { )) } - render() { + render () { return ( -

+
{this.renderProjects(projectsData)}
)