added all components and assembeled an okayish looking website

This commit is contained in:
Nicholas Orlowsky 2021-06-30 15:19:59 -04:00
parent 33621b1556
commit d5e25dac3e
44 changed files with 38970 additions and 1587 deletions

View file

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
</profile>
</component>

6
.idea/vcs.xml Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

35718
package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -3,16 +3,29 @@
"version": "0.1.0",
"private": true,
"dependencies": {
"@material-ui/core": "^4.11.4",
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
"@testing-library/user-event": "^12.1.10",
"@types/jest": "^26.0.15",
"@types/node": "^12.0.0",
"@types/react": "^17.0.0",
"@types/react-animate-on-scroll": "^2.1.2",
"@types/react-dom": "^17.0.0",
"@types/react-slick": "^0.23.4",
"@types/react-tabs": "^2.3.2",
"@types/react-typing-animation": "^1.6.2",
"bootstrap": "^4.6.0",
"node-sass": "^6.0.1",
"pure-react-carousel": "^1.27.6",
"react": "^17.0.2",
"react-animate-on-scroll": "^2.1.5",
"react-bootstrap": "^1.6.1",
"react-dom": "^17.0.2",
"react-scripts": "4.0.3",
"react-slick": "^0.28.1",
"react-tabs": "^3.2.2",
"react-typing-animation": "^1.6.2",
"typescript": "^4.1.2",
"web-vitals": "^1.0.1"
},

View file

@ -2,42 +2,25 @@
<html lang="en">
<head>
<meta charset="utf-8" />
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css"
integrity="sha384-B0vP5xmATw1+K9KRQjQERJvTumQW0nPEzvF6L/Z6nronJ3oUOFUFpCjEUQouq2+l"
crossorigin="anonymous"
/>
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Web site created using create-react-app"
content="Nicholas Orlowsky's personal website"
/>
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
<!--
manifest.json provides metadata used when your web app is installed on a
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
-->
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<!--
Notice the use of %PUBLIC_URL% in the tags above.
It will be replaced with the URL of the `public` folder during the build.
Only files inside the `public` folder can be referenced from the HTML.
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
<title>React App</title>
<title>Nicholas Orlowsky</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<noscript>You need to enable JavaScript to run this app. (are you using an outdated browser or just very privacy focused?) <!-- or are you looking at the source?--></noscript>
<div id="root"></div>
<!--
This HTML file is a template.
If you open it directly in the browser, you will see an empty page.
You can add webfonts, meta tags, or analytics to this file.
The build step will place the bundled scripts into the <body> tag.
To begin the development, run `npm start` or `yarn start`.
To create a production bundle, use `npm run build` or `yarn build`.
-->
</body>
</html>

View file

@ -1,38 +1,165 @@
.App {
text-align: center;
}
.App-logo {
height: 40vmin;
pointer-events: none;
}
@media (prefers-reduced-motion: no-preference) {
.App-logo {
animation: App-logo-spin infinite 20s linear;
}
}
.App-header {
background-color: #282c34;
background-color: black;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: calc(10px + 2vmin);
width: 100vw !important;
max-width: 100vw !important;
font-size: calc(20px);
color: white;
}
.App-link {
color: #61dafb;
.row {
margin: 0 !important;
}
@keyframes App-logo-spin {
from {
transform: rotate(0deg);
html {
background-color: black;
}
to {
transform: rotate(360deg);
/* we do this because scroll snapping is broken on moz://a for some reason */
@supports (-moz-appearance:none){
html {
scroll-snap-type: none !important;
}
}
/* mobile won't play with snapping too well so we need to make it prox not mandatory */
@media only screen and (max-width: 600px) {
html {
scroll-snap-type: none !important;
}
.child {
scroll-snap-align: none !important;
}
}
h1 {
font-weight: bolder;
}
@keyframes fade-up-anim {
0% {
opacity: 0;
transform: translateY(40px);
}
100% {
opacity:1;
transform: translateY(0px);
}
}
@media only screen and (max-width: 993px) {
.fade-up-md {
opacity: 0;
animation: fade-up-anim 2s forwards 200ms !important;
}
.fade-up-md-2 {
opacity: 0;
animation: fade-up-anim 2s forwards 400ms !important;
}
.fade-up-md-3 {
opacity: 0;
animation: fade-up-anim 2s forwards 600ms !important;
}
}
@media only screen and (min-width: 768px) {
.fade-up {
opacity: 0;
animation: fade-up-anim 2s forwards 200ms;
}
.fade-up-2 {
opacity: 0;
animation: fade-up-anim 2s forwards 400ms;
}
.fade-up-3 {
opacity: 0;
animation: fade-up-anim 2s forwards 600ms;
}
}
.fade-up {
opacity: 0;
animation: fade-up-anim 2s forwards 200ms;
}
.fade-up-d3s {
opacity: 0;
animation: fade-up-anim 2s forwards 3s;
}
@keyframes fade-in-tx-anim {
0% {
opacity: 0;
}
100% {
opacity:1;
}
}
.fade-in-tx {
animation: fade-in-tx-anim 1s ease-in;
}
@keyframes fade-out{
0% {
opacity: 1;
z-index: 500;
}
99% {
opacity: .1;
z-index: 500;
}
100% {
opacity:0;
z-index: -500;
display: none;
visibility: hidden;
}
}
.fade-out {
animation: fade-out 1s ease-in forwards;
opacity: 0;
}
@keyframes move-left-atx-anim {
0% {
margin-left: 0;
}
100% {
margin-left: -17px;
}
}
.move-left-atx {
animation: move-left-atx-anim 1s forwards;
}
ul {
list-style-type: none;
margin-left: -35px;
}
html {
scroll-snap-type: y proximity;
}
.child {
scroll-snap-align: center;
}
.pfp {
border-radius: 100%;
width: 25%
}

View file

@ -1,24 +1,31 @@
import React from 'react';
import logo from './logo.svg';
import React, {useState} from 'react';
import './App.css';
import Footer from "./components/footer/Footer";
import Hero from "./components/hero/Hero";
import AboutMe from "./components/about-me/AboutMe";
import Jobs from "./components/jobs/Jobs";
import Projects from "./components/projects/Projects";
import Hobbies from "./components/hobbies/Hobbies";
import Contact from "./components/contact/Contact";
import Terminal from "./components/terminal/Terminal";
function App() {
const [isTerminalVisible, setIsTerminalVisible] = useState(false);
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Edit <code>src/App.tsx</code> and save to reload.
</p>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
</header>
<Terminal isTerminalVisible={isTerminalVisible} setIsTerminalVisible={setIsTerminalVisible}/>
{!isTerminalVisible &&
<div>
<Hero/>
<AboutMe/>
<Jobs/>
<Projects/>
<Hobbies/>
<Contact/>
<Footer/>
</div>
}
</div>
);
}

View file

@ -0,0 +1,30 @@
import React from "react";
export default function AboutMe() {
return (
<div className={"child"} style={{minHeight: "100vh"}}>
<div className={"row"} style={{
alignItems: "center",
alignContent: "center",
justifyContent: "center",
minHeight: "50rem"
}}>
<h1 className={"col-12"} style={{marginBottom: 20}}>About Me</h1>
<div className={"col-12"} style={{width: "100vw", justifyContent: "center", display: "flex"}}>
<p className={"col-12"} style={{maxWidth: 600}}>
I was born and raised in Austin, Texas. I've been writing code for nearly 7 years and I'm
currently going to <b>The University of Texas at Austin</b> and working as a <b>Software
Engineer</b> at <b>Chicks Gold</b>.
</p>
</div>
<div className={"col-12"} style={{width: "100vw", justifyContent: "center", display: "flex"}}><p
style={{maxWidth: 600}}>Previously, I founded a startup called <b>CavCash</b> where I wrote a
majority of our software.</p></div>
<div className={"col-12"} style={{width: "100vw", justifyContent: "center", display: "flex"}}><p
style={{maxWidth: 600}}>I primarily do backend work and love working with databases. I'm also an
avid runner and entrepreneur.</p></div>
</div>
</div>
);
}

View file

@ -0,0 +1,15 @@
import React from "react";
export default function Contact() {
return (
<div className={"child"} style={{minHeight: "90vh"}}>
<div style={{minHeight: "90vh", display: "flex", alignItems: "center", justifyContent: "center"}}>
<div>
<h1>Contact</h1>
<p style={{maxWidth: 500}}>If you need: startup advice, tech/programming help, an employee (me!), or just someone to talk to, feel free to email me at:</p>
<a href={"mailto:nickorlow@nickorlow.com"}>nickorlow@nickorlow.com</a>
</div>
</div>
</div>
)
}

View file

@ -0,0 +1,14 @@
import React from "react";
export default function Footer() {
return (
<footer>
<div style={{minHeight: "10vh"}}>
<p className={"m-0"}>Copyright © 2021 Nicholas Orlowsky</p>
<p className={"m-0"}>Licensed under GNU General Public License v3</p>
<p className={"m-0"}>Original source available <a
href={"https://github.com/nickorlow/personal-site"}>here</a></p>
</div>
</footer>
)
}

View file

@ -0,0 +1,29 @@
import TexasIcon from "../../static/images/texas-icon.png";
import SocialBar from "../social-bar/SocialBar";
import React from "react";
export default function Hero() {
return (
<div>
<div className={"child"} style={{
height: "95vh",
display: "flex",
alignContent: "center",
justifyContent: "center",
flexDirection: "column",
alignItems: "center"
}}>
<img alt="github profile" src={"https://avatars.githubusercontent.com/u/85139485?v=4"}
style={{height: "30vh", width: "auto"}} className={"pfp"}/>
<h1 className={"m-0 font-weight-bold"}>Nicholas Orlowsky</h1>
<h4 className={"m-0"}>Software Engineer</h4>
<div className={"row"}>
<img alt={"github profile"} className={"fade-in-tx"} src={TexasIcon} style={{height: 50}}/>
<p className={"move-left-atx"} style={{marginTop: 11}}>Austin, Texas</p>
</div>
<SocialBar style={{justifyContent: "center", width: "60vmin"}}/>
</div>
<p className={"fade-up-d3s"}>scroll for more</p>
</div>
);
}

View file

@ -0,0 +1,23 @@
import {AllHobbies} from "../../static/data/Hobbies";
import InfoCard from "../info-card/InfoCard";
import React from "react";
export default function Hobbies () {
return (
<div className={"child"} style={{minHeight: "100vh"}}>
<div style={{
display: "flex",
justifyContent: "center",
flexDirection: "column",
width: "96vw",
minHeight: "100vh",
alignContent: "center",
alignItems: "center"
}}>
<h1>Other Hobbies</h1>
{AllHobbies.map((hobby) => <InfoCard style={{textAlign: "left", maxWidth: "50vmax", margin: 50}}
info={hobby}/>)}
</div>
</div>
)
}

View file

@ -0,0 +1,22 @@
import React from "react";
import InfoCardProps from "../../types/InfoCardProps";
export default function InfoCard(props: {style?: any, className?: string, info: InfoCardProps}) {
return (
<div style={props.style} className={props.className}>
<div style={{maxWidth: "100vw"}}>
<h3>{props.info.title}</h3>
<p>
{props.info.description}
</p>
<div>
<h4>{props.info.listTitle}</h4>
<div className={"row"} style={{color: "green", fontFamily: "monospace"}}>
{props.info.list.map(s => <p className={"col-6 "+(props.info.listClassName || "col-md-4")}>{s}</p>)}
</div>
</div>
{props.info.link != null && <a href={props.info.link}>{props.info.linkTitle || "Relevant Link"}</a>}
</div>
</div>
);
}

View file

@ -0,0 +1,13 @@
@media only screen and (min-width: 993px) {
.center-card {
border-left: .5px rgba(255,255,255,.25) solid;
border-right: .5px rgba(255,255,255,.25) solid;
}
}
@media only screen and (max-width: 768px) {
.job-card {
margin-top: 100px;
}
}

View file

@ -0,0 +1,21 @@
import ScrollAnimation from "react-animate-on-scroll";
import React from "react";
import Job from "../../types/Job";
import "./JobCard.css";
export default function JobCard(props: {style?: any, className?: string, job: Job, isCenter: boolean}){
return (
<ScrollAnimation className={"job-card "+(props.isCenter ? "center-card " : "")+(props.className || "")} style={props.style} animateIn="fade-up" duration={2} animateOnce={true} offset={50} delay={200}>
<div style={{padding: 20}}>
<img alt={props.job.company+" company logo"} src={props.job.image} style={{maxHeight: 70, padding: 10,width: "auto", maxWidth: "100%"}}/>
<h2>{props.job.title}</h2>
{props.job.uri == null && <h5>{props.job.company}</h5>}
{props.job.uri != null && <a href={props.job.uri}><h5>{props.job.company}</h5></a>}
<p>{props.job.timespan}</p>
<ul>
{props.job.items.map((s) => <li>{s}</li>)}
</ul>
</div>
</ScrollAnimation>
);
}

View file

@ -0,0 +1,24 @@
.react-tabs__tab--selected {
transition: 1s;
border-top: 1px #00AA00 solid;
}
.tab-btn {
background-color: #121212;
transition: 1s;
border-bottom: 1px #FFFFFF solid;
}
.btn-beg {
border-bottom-left-radius: 10px;
border-top-left-radius: 10px;
border-left: 1px #FFFFFF solid;
}
.btn-end {
border-bottom-right-radius: 10px;
border-top-right-radius: 10px;
border-right: 1px #FFFFFF solid;
}

View file

@ -0,0 +1,18 @@
import {AllJobs} from "../../static/data/Jobs";
import JobCard from "../job-card/JobCard";
import React from "react";
import "./Jobs.css";
export default function Jobs() {
return (
<div className={"child"} style={{minHeight: "100vh"}}>
<div className={"row"} style={{justifyContent: "center", alignItems: "center", alignContent: "center"}}>
<h1 className={"col-12"} style={{marginBottom: 20}}>Work</h1>
{AllJobs.map((job, i) =><JobCard className={"col-md-4"} job={job}
isCenter={i % 2 === 1}/>)}
</div>
</div>
)
}

View file

@ -0,0 +1,29 @@
import {AllProjects} from "../../static/data/Projects";
import InfoCard from "../info-card/InfoCard";
import React from "react";
export default function Projects() {
return (
<div className={"child"} style={{minHeight: "100vh"}}>
<div style={{
display: "flex",
justifyContent: "center",
flexDirection: "column",
width: "100vw",
minHeight: "100vh",
alignContent: "center",
alignItems: "center"
}}>
<h1>Projects</h1>
<p>(writing code is my biggest hobby)</p>
<div className={"row m-0"} style={{justifyContent: "center", padding: 20}}>
{AllProjects.map((project) => <InfoCard className={"col-md-6"} style={{textAlign: "left",marginTop: 35, paddingLeft: 20, paddingRight: 20}}
info={project}/>)}
</div>
<a href={"https://github.com/nickorlow"}>More on GitHub</a>
</div>
</div>
)
}

View file

@ -0,0 +1,31 @@
.icon {
transition: 1s !important;
fill: #FFFFFF;
height: 50px;
}
.icon:hover {
transform: translateY(-2px);
cursor: pointer;
}
.insta-icon:hover {
fill: #DD2A7B;
}
.twitter-icon:hover {
fill: #1DA1F2;
}
.github-icon:hover {
fill: #F1502F;
}
.linkedin-icon:hover {
fill: #0077B5;
}
.mail-icon:hover {
fill: #EA4335;
}

View file

@ -0,0 +1,28 @@
import React from "react";
import './SocialBar.css';
export default function SocialBar(props: {style: any}) {
return (
<div className={"row"} style={props.style}>
<div className={"col-md-2 col-4 fade-up-3 fade-up-md-2"} style={{display: "flex", justifyContent: "center"}}>
<svg onClick={ () => window.location.href="https://instagram.com/nickorlow"} className={"insta-icon icon"} viewBox="0 0 50 50" width="100px" height="100px"> <path d="M 16 3 C 8.83 3 3 8.83 3 16 L 3 34 C 3 41.17 8.83 47 16 47 L 34 47 C 41.17 47 47 41.17 47 34 L 47 16 C 47 8.83 41.17 3 34 3 L 16 3 z M 37 11 C 38.1 11 39 11.9 39 13 C 39 14.1 38.1 15 37 15 C 35.9 15 35 14.1 35 13 C 35 11.9 35.9 11 37 11 z M 25 14 C 31.07 14 36 18.93 36 25 C 36 31.07 31.07 36 25 36 C 18.93 36 14 31.07 14 25 C 14 18.93 18.93 14 25 14 z M 25 16 C 20.04 16 16 20.04 16 25 C 16 29.96 20.04 34 25 34 C 29.96 34 34 29.96 34 25 C 34 20.04 29.96 16 25 16 z"/></svg>
</div>
<div className={"col-md-2 col-4 fade-up-2 fade-up-md"} style={{display: "flex", justifyContent: "center"}}>
<svg onClick={ () => window.location.href="https://twitter.com/nickorIow"} className={"twitter-icon icon"} viewBox="0 0 50 50" width="100px" height="100px"><path d="M 50.0625 10.4375 C 48.214844 11.257813 46.234375 11.808594 44.152344 12.058594 C 46.277344 10.785156 47.910156 8.769531 48.675781 6.371094 C 46.691406 7.546875 44.484375 8.402344 42.144531 8.863281 C 40.269531 6.863281 37.597656 5.617188 34.640625 5.617188 C 28.960938 5.617188 24.355469 10.21875 24.355469 15.898438 C 24.355469 16.703125 24.449219 17.488281 24.625 18.242188 C 16.078125 17.8125 8.503906 13.71875 3.429688 7.496094 C 2.542969 9.019531 2.039063 10.785156 2.039063 12.667969 C 2.039063 16.234375 3.851563 19.382813 6.613281 21.230469 C 4.925781 21.175781 3.339844 20.710938 1.953125 19.941406 C 1.953125 19.984375 1.953125 20.027344 1.953125 20.070313 C 1.953125 25.054688 5.5 29.207031 10.199219 30.15625 C 9.339844 30.390625 8.429688 30.515625 7.492188 30.515625 C 6.828125 30.515625 6.183594 30.453125 5.554688 30.328125 C 6.867188 34.410156 10.664063 37.390625 15.160156 37.472656 C 11.644531 40.230469 7.210938 41.871094 2.390625 41.871094 C 1.558594 41.871094 0.742188 41.824219 -0.0585938 41.726563 C 4.488281 44.648438 9.894531 46.347656 15.703125 46.347656 C 34.617188 46.347656 44.960938 30.679688 44.960938 17.09375 C 44.960938 16.648438 44.949219 16.199219 44.933594 15.761719 C 46.941406 14.3125 48.683594 12.5 50.0625 10.4375 Z"/></svg>
</div>
<div className={"col-md-2 col-4 fade-up fade-up-md-2"} style={{display: "flex", justifyContent: "center"}}>
<svg onClick={ () => window.location.href="https://github.com/nickorlow"} className={"github-icon icon"} viewBox="0 0 50 50" width="100px" height="100px"> <path d="M17.791,46.836C18.502,46.53,19,45.823,19,45v-5.4c0-0.197,0.016-0.402,0.041-0.61C19.027,38.994,19.014,38.997,19,39 c0,0-3,0-3.6,0c-1.5,0-2.8-0.6-3.4-1.8c-0.7-1.3-1-3.5-2.8-4.7C8.9,32.3,9.1,32,9.7,32c0.6,0.1,1.9,0.9,2.7,2c0.9,1.1,1.8,2,3.4,2 c2.487,0,3.82-0.125,4.622-0.555C21.356,34.056,22.649,33,24,33v-0.025c-5.668-0.182-9.289-2.066-10.975-4.975 c-3.665,0.042-6.856,0.405-8.677,0.707c-0.058-0.327-0.108-0.656-0.151-0.987c1.797-0.296,4.843-0.647,8.345-0.714 c-0.112-0.276-0.209-0.559-0.291-0.849c-3.511-0.178-6.541-0.039-8.187,0.097c-0.02-0.332-0.047-0.663-0.051-0.999 c1.649-0.135,4.597-0.27,8.018-0.111c-0.079-0.5-0.13-1.011-0.13-1.543c0-1.7,0.6-3.5,1.7-5c-0.5-1.7-1.2-5.3,0.2-6.6 c2.7,0,4.6,1.3,5.5,2.1C21,13.4,22.9,13,25,13s4,0.4,5.6,1.1c0.9-0.8,2.8-2.1,5.5-2.1c1.5,1.4,0.7,5,0.2,6.6c1.1,1.5,1.7,3.2,1.6,5 c0,0.484-0.045,0.951-0.11,1.409c3.499-0.172,6.527-0.034,8.204,0.102c-0.002,0.337-0.033,0.666-0.051,0.999 c-1.671-0.138-4.775-0.28-8.359-0.089c-0.089,0.336-0.197,0.663-0.325,0.98c3.546,0.046,6.665,0.389,8.548,0.689 c-0.043,0.332-0.093,0.661-0.151,0.987c-1.912-0.306-5.171-0.664-8.879-0.682C35.112,30.873,31.557,32.75,26,32.969V33 c2.6,0,5,3.9,5,6.6V45c0,0.823,0.498,1.53,1.209,1.836C41.37,43.804,48,35.164,48,25C48,12.318,37.683,2,25,2S2,12.318,2,25 C2,35.164,8.63,43.804,17.791,46.836z"/></svg>
</div>
<div className={"col-md-2 col-4 fade-up-2 fade-up-md-3"} style={{display: "flex", justifyContent: "center"}}>
<svg onClick={ () => window.location.href="https://www.linkedin.com/in/nicholas-orlowsky-83b24ab8"} className={"linkedin-icon icon"} viewBox="0 0 50 50" width="100px" height="100px"> <path d="M41,4H9C6.24,4,4,6.24,4,9v32c0,2.76,2.24,5,5,5h32c2.76,0,5-2.24,5-5V9C46,6.24,43.76,4,41,4z M17,20v19h-6V20H17z M11,14.47c0-1.4,1.2-2.47,3-2.47s2.93,1.07,3,2.47c0,1.4-1.12,2.53-3,2.53C12.2,17,11,15.87,11,14.47z M39,39h-6c0,0,0-9.26,0-10 c0-2-1-4-3.5-4.04h-0.08C27,24.96,26,27.02,26,29c0,0.91,0,10,0,10h-6V20h6v2.56c0,0,1.93-2.56,5.81-2.56 c3.97,0,7.19,2.73,7.19,8.26V39z"/></svg>
</div>
<div className={"col-md-2 col-4 fade-up-3 fade-up-md-3"} style={{display: "flex", justifyContent: "center"}}>
<svg onClick={ () => window.location.href="mailto:nickorlow@nickorlow.com"} className={"mail-icon icon"} viewBox="0 0 100 100" width="100px" height="100px"><g id="surface12014155"><path d="M 28 8 C 16.976562 8 8 16.976562 8 28 L 8 72 C 8 83.023438 16.976562 92 28 92 L 72 92 C 83.023438 92 92 83.023438 92 72 L 92 28 C 92 16.976562 83.023438 8 72 8 Z M 26 32 L 74 32 C 74.359375 32 74.699219 32.039062 75.019531 32.140625 L 55.359375 51.78125 C 52.398438 54.742188 47.582031 54.742188 44.621094 51.78125 L 24.980469 32.140625 C 25.300781 32.039062 25.640625 32 26 32 Z M 22.140625 34.980469 L 37.179688 50 L 22.140625 65.019531 C 22.039062 64.699219 22 64.359375 22 64 L 22 36 C 22 35.640625 22.039062 35.300781 22.140625 34.980469 Z M 77.859375 34.980469 C 77.960938 35.300781 78 35.640625 78 36 L 78 64 C 78 64.359375 77.960938 64.699219 77.859375 65.019531 L 62.800781 50 Z M 40 52.820312 L 41.78125 54.621094 C 44.042969 56.882812 47.019531 58 49.980469 58 C 52.960938 58 55.917969 56.882812 58.179688 54.621094 L 59.980469 52.820312 L 75.019531 67.859375 C 74.699219 67.960938 74.359375 68 74 68 L 26 68 C 25.640625 68 25.300781 67.960938 24.980469 67.859375 Z M 40 52.820312 "/></g></svg>
</div>
</div>
);
}

View file

@ -0,0 +1,34 @@
import Typing from "react-typing-animation";
import React, {Dispatch} from "react";
export default function Terminal(props: {isTerminalVisible: boolean, setIsTerminalVisible: Dispatch<boolean>}) {
return (
<div className={props.isTerminalVisible ? "" : "fade-out"} style={{position: "fixed", top: 0, left: 0, width: "99vw", height: "100vh", backgroundColor: "black",textAlign: "left"}}>
<p className={"d-inline"}>nickorlow@macbook ~# </p>
<Typing speed={20} className={"d-inline"} onFinishedTyping={() => props.setIsTerminalVisible(false)}>
<p className={"d-inline"}>git clone <p className={"d-inline"} style={{color: "#00aaee"}}>https://github.com/nickorlow/personal-site</p></p>
<Typing.Speed ms={0} />
<p/>
<p className={"m-0"}>Cloning into 'personal-site'...</p>
<p className={"m-0"}>remote: Enumerating objects: 334, done.</p>
<p className={"m-0"}>remote: Counting objects: 100% (334/334), done.</p>
<p className={"m-0"}>remote: Compressing objects: 100% (185/185), done.</p>
<p className={"m-0"}>remote: Total 334 (delta 132), reused 324 (delta 127), pack-reused 0</p>
<p className={"m-0"}>Receiving objects: 100% (334/334), 29.68 MiB | 5.50 MiB/s, done.</p>
<p className={"m-0"}>Resolving deltas: 100% (132/132), done.</p>
<p/>
<p className={"d-inline"}>nickorlow@macbook ~# </p>
<Typing.Speed ms={10} />
<p className={"d-inline"}>cd persona-site</p>
<Typing.Backspace speed={10} count={5}/>
<p className={"d-inline"}>l-site</p>
<p/>
<Typing.Speed ms={0} />
<p className={"d-inline"}>nickorlow@macbook ~# </p>
<Typing.Delay ms={200}/>
<Typing.Speed ms={100} />
<p className={"d-inline"}>npm run start</p>
</Typing>
</div>
)
}

View file

@ -0,0 +1,21 @@
import InfoCardProps from "../../types/InfoCardProps";
const RunningHobby: InfoCardProps = {
title: "Running",
description: "I started running cross country in 7th grade after wanting to beat my friend in the mile. I kept running all the way through to my senior year of high school. I made varsity my sophomore year. Today, I just run with friends casually along with other physical activity like lifting, biking, and kayaking.",
listTitle: "Personal Records",
list:["1600 - 4:34", "3200 - 10:11", "5K XC - 16:42"],
link: "https://tx.milesplit.com/athletes/7325388-nicholas-orlowsky/stats",
linkTitle: "Milesplit Profile",
listClassName: "col-12"
}
const VideogameHobby: InfoCardProps = {
title: "Video Games",
description: "Video games are what got me interested in programming in the first place. I tend to play them a lot less now in favor of programming though, I'll occasionally sink a couple hours into a game.",
listTitle: "Favorites",
list: ["Galaga", "Clone Hero", "Minecraft"]
}
export const AllHobbies: InfoCardProps[] = [RunningHobby, VideogameHobby];

51
src/static/data/Jobs.ts Normal file
View file

@ -0,0 +1,51 @@
import Job from "../../types/Job";
import VrboImage from "../images/vrbo-logo-min.png";
import CavImage from "../images/cavcash-logo-min.png";
import ChicksImage from "../images/chicks-logo.svg";
const VrboJob: Job = {
title: "Data Scientist",
company: "Vrbo, a part of Expedia Group",
uri: "https://vrbo.com",
timespan: "August 2019 - January 2021",
items: [
"Worked on Natural Language Processing chatbot",
"Worked with team to identify dataset patterns",
"Helped reduce wait times",
"Reduced offsite booking attempts"
],
image: VrboImage
}
const CavCashJob: Job = {
title: "CEO & Software Engineer",
company: "CavCash Inc",
timespan: "May 2017 - Present",
items: [
"Founded the company",
"Wrote a C# webAPI",
"Managed mongoDB and MSSQL databases",
"Deployed and maintained k8s clusters on bare metal",
"Managed CI/CD & DevOps in Azure DevOps",
"Ran & migrated services between Azure, AWS, and GCP"
],
image: CavImage
}
const ChicksJob: Job = {
title: "Software Engineer",
company: "Chicks Gold",
uri: "https://chicksgold.com",
timespan: "April 2021 - Present",
items: [
"Added features & bugfixes to .NET 5 API",
"Added features & bugfixes to Aurelia website",
"Worked with team to create new feature & bug tickets",
"Deployed code to k8s cluster"
],
image: ChicksImage
}
export const AllJobs: Job[] = [VrboJob, CavCashJob, ChicksJob];

View file

@ -0,0 +1,40 @@
import InfoCardProps from "../../types/InfoCardProps";
const WebsiteProject: InfoCardProps = {
title: "personal-site (this website)",
description: "As a primairly backend guy, I wrote my last website as a JSON file (imatating a webAPI). Feedback showed that that was a bad idea so I made this pretty neat site (in my opinion). If you like it, feel free to use it yourself!",
listTitle: "Technologies & Resources used",
list:["React", "Typescript", "Bootstrap", "Icons8", "Docker", "Kubernetes"],
link: "https://github.com/nickorlow/personal-site",
linkTitle: "GitHub Repo"
}
const CavCashProject: InfoCardProps = {
title: "cavcash",
description: "CavCash started as a project in 2017 as a way to pay with flashdrives. After recruitinf a few friends to help me, we build ourselves into a PayPal competitor but shutdown due to funding. I continued to re-write the platform as a cryptocurrency.",
listTitle: "Technologies Used",
list: ["C#", ".NET 5", "MSSQL", "mongoDB", "Kubernetes", "Docker", "nginx", "Azure DevOps", "React", "Cloudflare"],
link: "https://cavcash.com",
linkTitle: "Project Website"
}
const XenMapProject: InfoCardProps = {
title: "xenmap",
description: "I wanted to use an old iPad as a HUD in my car similar to tesla and it needed a map to complete it. I made this widget to show your current location as a XenHTML widget.",
listTitle: "Technologies Used",
list: ["HTML", "JavaScript", "CSS", "XenHTML Framework", "XenInfo API"],
link: "https://github.com/nickorlow/MapXenHTML",
linkTitle: "GitHub Repo"
}
const SPONODEProject: InfoCardProps = {
title: "sponode",
description: "App for Android & macOS that added songs people sent you to a playlist. Made so we could have a jukebox type setup during track workouts.",
listTitle: "Technologies Used",
list: ["Java", "Apple Script", "Spotify API", "node.js"],
link: "https://github.com/nickorlow/sponode",
linkTitle: "GitHub Repo"
}
export const AllProjects: InfoCardProps[] = [WebsiteProject, CavCashProject, XenMapProject, SPONODEProject];

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

View file

@ -0,0 +1,30 @@
<svg xmlns="http://www.w3.org/2000/svg" id="Chicks_Logo" width="152.29" height="31.163" viewBox="0 0 152.29 31.163">
<defs>
<style>
.cls-1{fill:#b2b3b8}
</style>
</defs>
<g id="Group_3877" transform="translate(-34.915 -20.729)">
<g id="Group_3879" transform="translate(223.269 -273.021)">
<g id="Group_3878" transform="translate(-80.713 293.75)">
<g id="Group_3928">
<path id="Rectangle_287" d="M0 0H8.855V1.373H0z" class="cls-1" transform="translate(3.777 14.783)"/>
<path id="Rectangle_288" d="M0 0H8.855V0.635H0z" class="cls-1" transform="translate(3.777 13.84)"/>
<path id="Path_3334" d="M468.273 297.634a.532.532 0 0 0-.212 1.019l-2.968 5.539h-.661l.876-7.74a.608.608 0 1 0-.14-.014l-2.332 7.7h-.652l-1.032-8.891a.757.757 0 1 0-.206 0l-.908 8.89h-.652l-2.408-7.727a.6.6 0 1 0-.209.039.615.615 0 0 0 .126-.013l.844 7.855h-.669l-3.324-5.652a.529.529 0 1 0-.231.054.509.509 0 0 0 .08-.008l3.166 8.488h8.855l2.578-8.488a.521.521 0 0 0 .079.008.532.532 0 0 0 0-1.064z" class="cls-1" transform="translate(-452.982 -293.75)"/>
</g>
</g>
</g>
<g id="Group_3881" transform="translate(35.915 38.821)">
<path id="Path_3324" d="M-184.283 393.354a6.466 6.466 0 0 1 2.3.346 8.281 8.281 0 0 1 1.6.808q.423.266.646.062a1.66 1.66 0 0 0 .307-.968h.487q-.043.675-.064 1.625t-.021 2.531h-.487q-.148-.781-.286-1.279a3.235 3.235 0 0 0-.36-.852 3.223 3.223 0 0 0-.6-.693 3.539 3.539 0 0 0-1.5-.924 6.159 6.159 0 0 0-1.884-.284 3.9 3.9 0 0 0-1.905.453 3.95 3.95 0 0 0-1.387 1.287 6.4 6.4 0 0 0-.857 1.971 9.836 9.836 0 0 0-.3 2.486 9.262 9.262 0 0 0 .317 2.513 5.847 5.847 0 0 0 .921 1.936 4.151 4.151 0 0 0 1.461 1.243 4.171 4.171 0 0 0 1.916.435 5.988 5.988 0 0 0 1.8-.293 3.291 3.291 0 0 0 1.482-.9 2.8 2.8 0 0 0 .815-1.2 10.014 10.014 0 0 0 .37-1.82h.487q0 1.634.021 2.637t.064 1.7h-.487a1.75 1.75 0 0 0-.286-.959q-.2-.2-.667.053a11.757 11.757 0 0 1-1.662.808 6.219 6.219 0 0 1-2.254.346 8.265 8.265 0 0 1-3.662-.764 5.675 5.675 0 0 1-2.434-2.2 6.578 6.578 0 0 1-.868-3.463 6.605 6.605 0 0 1 .9-3.48 6.257 6.257 0 0 1 2.466-2.327 7.583 7.583 0 0 1 3.611-.834z" class="cls-1" transform="translate(190.269 -393.354)"/>
<path id="Path_3325" d="M-98.578 407.437v-.354a4.523 4.523 0 0 0 1.033-.142.657.657 0 0 0 .456-.425 3.1 3.1 0 0 0 .111-.957v-8.786a3.081 3.081 0 0 0-.111-.965.685.685 0 0 0-.466-.425 3.826 3.826 0 0 0-1.023-.133v-.354q.465.018 1.2.035t1.59.018q.77 0 1.509-.018t1.225-.035v.354a3.7 3.7 0 0 0-1.013.133.713.713 0 0 0-.466.425 2.833 2.833 0 0 0-.122.965v8.786a2.847 2.847 0 0 0 .122.957.685.685 0 0 0 .466.425 4.43 4.43 0 0 0 1.013.142v.354q-.486-.035-1.225-.044t-1.509-.009q-.851 0-1.59.009t-1.2.044zm3.017-6.129v-.354h8v.354zm5.488 6.129v-.354a4.524 4.524 0 0 0 1.033-.142.657.657 0 0 0 .456-.425 3.1 3.1 0 0 0 .111-.957v-8.786a3.081 3.081 0 0 0-.111-.965.685.685 0 0 0-.466-.425 3.827 3.827 0 0 0-1.023-.133v-.354q.506.018 1.266.035t1.509.018q.851 0 1.579-.018t1.175-.035v.354a3.7 3.7 0 0 0-1.013.133.713.713 0 0 0-.466.425 2.833 2.833 0 0 0-.122.965v8.786a2.847 2.847 0 0 0 .122.957.685.685 0 0 0 .466.425 4.428 4.428 0 0 0 1.013.142v.354q-.446-.035-1.175-.044t-1.579-.009q-.749 0-1.509.009t-1.265.044z" class="cls-1" transform="translate(113.581 -394.631)"/>
<path id="Path_3326" d="M9.551 394.895v.354a3.927 3.927 0 0 0-1.044.133.728.728 0 0 0-.481.425 2.753 2.753 0 0 0-.125.965v8.786a2.766 2.766 0 0 0 .125.957.7.7 0 0 0 .481.425 4.7 4.7 0 0 0 1.044.142v.354q-.5-.035-1.264-.044t-1.556-.009q-.877 0-1.64.009t-1.243.044v-.354a4.8 4.8 0 0 0 1.065-.142.67.67 0 0 0 .47-.425 3.006 3.006 0 0 0 .115-.957v-8.786a2.992 2.992 0 0 0-.115-.965.7.7 0 0 0-.48-.425 4.062 4.062 0 0 0-1.055-.133v-.354q.48.018 1.243.035t1.64.018q.794 0 1.556-.018t1.264-.035z" class="cls-1" transform="translate(27.92 -394.631)"/>
<path id="Path_3327" d="M66.723 393.354a5.757 5.757 0 0 1 2.161.346 7.627 7.627 0 0 1 1.5.808q.4.266.608.062a1.728 1.728 0 0 0 .289-.968h.458q-.04.675-.06 1.625t-.02 2.531H71.2q-.14-.781-.269-1.279a3.347 3.347 0 0 0-.339-.852 3.175 3.175 0 0 0-.568-.693 3.3 3.3 0 0 0-1.414-.924 5.482 5.482 0 0 0-1.773-.284 3.5 3.5 0 0 0-1.793.453 3.815 3.815 0 0 0-1.3 1.287 6.613 6.613 0 0 0-.807 1.971 10.423 10.423 0 0 0-.279 2.486 9.811 9.811 0 0 0 .3 2.513 6.012 6.012 0 0 0 .867 1.936 3.979 3.979 0 0 0 1.374 1.243 3.735 3.735 0 0 0 1.8.435 5.331 5.331 0 0 0 1.693-.293 3.072 3.072 0 0 0 1.394-.9 2.818 2.818 0 0 0 .767-1.2 10.582 10.582 0 0 0 .348-1.82h.458q0 1.634.02 2.637t.06 1.7h-.458a1.828 1.828 0 0 0-.269-.959q-.189-.2-.627.053a10.8 10.8 0 0 1-1.564.808 5.539 5.539 0 0 1-2.121.346 7.39 7.39 0 0 1-3.446-.764 5.471 5.471 0 0 1-2.291-2.2 7.663 7.663 0 0 1 .03-6.943 6.055 6.055 0 0 1 2.32-2.327 6.793 6.793 0 0 1 3.41-.834z" class="cls-1" transform="translate(-19.589 -393.354)"/>
<path id="Path_3328" d="M158.438 394.895v.354a3.787 3.787 0 0 0-1.025.133.719.719 0 0 0-.472.425 2.8 2.8 0 0 0-.123.965v8.786a2.815 2.815 0 0 0 .123.957.69.69 0 0 0 .472.425 4.534 4.534 0 0 0 1.025.142v.354q-.492-.035-1.24-.044t-1.527-.009q-.861 0-1.609.009t-1.22.044v-.354a4.632 4.632 0 0 0 1.045-.142.662.662 0 0 0 .461-.425 3.06 3.06 0 0 0 .113-.957v-8.786a3.046 3.046 0 0 0-.113-.965.691.691 0 0 0-.471-.425 3.917 3.917 0 0 0-1.035-.133v-.354q.471.018 1.22.035t1.609.018q.779 0 1.527-.018t1.24-.035zm6.724 0v.354a4.354 4.354 0 0 0-1.3.4 4.461 4.461 0 0 0-1.3 1.019l-3.936 4.251.7-1.081 4.92 6.165a2.918 2.918 0 0 0 .707.673 3.372 3.372 0 0 0 .974.407v.354q-.554-.035-1.333-.044t-1.374-.009q-.369 0-.912.009t-1.363.044v-.354a1.611 1.611 0 0 0 .933-.212q.174-.177-.154-.585l-2.973-3.986a5.2 5.2 0 0 0-.656-.753 1.442 1.442 0 0 0-.594-.337 3.651 3.651 0 0 0-.759-.1v-.372a3.387 3.387 0 0 0 1.486-.337 4.722 4.722 0 0 0 1.179-.868l1.7-1.86a4.328 4.328 0 0 0 .923-1.3.7.7 0 0 0-.1-.824 1.786 1.786 0 0 0-1.148-.3v-.354l1.281.035q.646.018 1.3.018 1.143 0 1.799-.053z" class="cls-1" transform="translate(-97.077 -394.631)"/>
<path id="Path_3329" d="M250.861 393.574a4.308 4.308 0 0 1 1.537.213 5.947 5.947 0 0 1 .93.461q.228.125.37.186a.683.683 0 0 0 .275.062q.3 0 .418-.781h.437q-.019.319-.048.754t-.038 1.145q-.01.71-.009 1.864h-.433a5.089 5.089 0 0 0-.408-1.687 3.272 3.272 0 0 0-1.025-1.332 2.749 2.749 0 0 0-1.718-.515 2.387 2.387 0 0 0-1.6.542 1.785 1.785 0 0 0-.636 1.429 2.025 2.025 0 0 0 .418 1.3 4.428 4.428 0 0 0 1.148.977q.73.453 1.661 1 .949.569 1.708 1.128a4.764 4.764 0 0 1 1.2 1.234 2.943 2.943 0 0 1 .437 1.634 3.046 3.046 0 0 1-.579 1.909 3.472 3.472 0 0 1-1.547 1.128 5.872 5.872 0 0 1-2.126.373 5.406 5.406 0 0 1-1.689-.213 7.37 7.37 0 0 1-1.063-.444 1.432 1.432 0 0 0-.645-.249q-.3 0-.418.781h-.437q.038-.39.047-.914t.019-1.376q.009-.852.009-2.148h.437a7.439 7.439 0 0 0 .427 2.06 3.389 3.389 0 0 0 1.082 1.536 3.05 3.05 0 0 0 1.945.577 2.787 2.787 0 0 0 1.689-.542 1.96 1.96 0 0 0 .74-1.7 2.315 2.315 0 0 0-.807-1.8 12.483 12.483 0 0 0-2.116-1.465q-.892-.532-1.67-1.065a4.485 4.485 0 0 1-1.243-1.243 3.007 3.007 0 0 1-.465-1.687 2.8 2.8 0 0 1 .541-1.776 3.237 3.237 0 0 1 1.4-1.03 5.042 5.042 0 0 1 1.845-.326z" class="cls-1" transform="translate(-173.97 -393.536)"/>
<path id="Path_3330" d="M374.908 393.354a5.04 5.04 0 0 1 2.031.346 8.087 8.087 0 0 1 1.424.808.759.759 0 0 0 .38.178q.36 0 .474-1.083h.437q-.038.675-.057 1.625t-.019 2.531h-.437a11.9 11.9 0 0 0-.351-1.581 2.834 2.834 0 0 0-.75-1.243 3.432 3.432 0 0 0-1.338-.888 4.615 4.615 0 0 0-1.68-.32 3.343 3.343 0 0 0-1.746.453 3.822 3.822 0 0 0-1.281 1.287 6.647 6.647 0 0 0-.8 1.962 10.447 10.447 0 0 0-.275 2.477 8.192 8.192 0 0 0 1.053 4.68 3.641 3.641 0 0 0 3.179 1.483 3.126 3.126 0 0 0 1.053-.16 4.082 4.082 0 0 0 .712-.319 1.127 1.127 0 0 0 .418-.417 1.3 1.3 0 0 0 .095-.542v-1.723a3.31 3.31 0 0 0-.142-1.128.833.833 0 0 0-.56-.5 4.558 4.558 0 0 0-1.215-.151v-.355q.361.018.854.027l1.034.018q.541.009.978.009.683 0 1.243-.018t.92-.036v.355a.963.963 0 0 0-.759.284 2.715 2.715 0 0 0-.171 1.243v3.516h-.38a2.508 2.508 0 0 0-.142-.657q-.124-.355-.37-.355a.783.783 0 0 0-.275.053 3.315 3.315 0 0 0-.484.266 6.792 6.792 0 0 1-1.386.684 4.845 4.845 0 0 1-1.632.257 6.4 6.4 0 0 1-4.745-1.678 6.316 6.316 0 0 1-1.671-4.662 7.329 7.329 0 0 1 .826-3.569 5.9 5.9 0 0 1 2.259-2.335 6.478 6.478 0 0 1 3.296-.822z" class="cls-1" transform="translate(-277.349 -393.354)"/>
<path id="Path_3331" d="M471.6 393.354a8.208 8.208 0 0 1 3.633.764 5.671 5.671 0 0 1 2.432 2.193 6.6 6.6 0 0 1 .863 3.472 6.7 6.7 0 0 1-.885 3.48 6.131 6.131 0 0 1-2.464 2.327 7.59 7.59 0 0 1-3.6.835 8.186 8.186 0 0 1-3.643-.764 5.655 5.655 0 0 1-2.422-2.2 7.293 7.293 0 0 1 .032-6.943 6.238 6.238 0 0 1 2.454-2.329 7.512 7.512 0 0 1 3.6-.835zm-.084.32a3.464 3.464 0 0 0-2.275.8 5.1 5.1 0 0 0-1.5 2.2 9.222 9.222 0 0 0-.526 3.25 8.367 8.367 0 0 0 .589 3.276 5.064 5.064 0 0 0 1.6 2.149 3.674 3.674 0 0 0 2.253.755 3.424 3.424 0 0 0 2.264-.8 5.222 5.222 0 0 0 1.5-2.211 9.077 9.077 0 0 0 .537-3.241 8.22 8.22 0 0 0-.6-3.285 5.191 5.191 0 0 0-1.6-2.14 3.634 3.634 0 0 0-2.242-.753z" class="cls-1" transform="translate(-357.18 -393.354)"/>
<path id="Path_3332" d="M569.04 394.895v.354a3.823 3.823 0 0 0-1.031.133.71.71 0 0 0-.47.425 2.863 2.863 0 0 0-.12.965v8.857a2.79 2.79 0 0 0 .11.9.627.627 0 0 0 .44.4 3.552 3.552 0 0 0 .951.1h1.3a3.777 3.777 0 0 0 1.841-.381 2.469 2.469 0 0 0 1.041-1.16 6.976 6.976 0 0 0 .52-1.984h.46a14.694 14.694 0 0 0-.06 1.488q0 .355.03 1.036t.11 1.408q-1.02-.035-2.3-.044t-2.281-.009h-1.651q-1.031 0-2.2.009t-2.191.044v-.354a4.421 4.421 0 0 0 1.021-.142.652.652 0 0 0 .45-.425 3.124 3.124 0 0 0 .11-.957v-8.786a3.109 3.109 0 0 0-.11-.965.68.68 0 0 0-.46-.425 3.736 3.736 0 0 0-1.01-.133v-.354q.46.018 1.191.035t1.571.018q.76 0 1.511-.018t1.227-.035z" class="cls-1" transform="translate(-438.334 -394.631)"/>
<path id="Path_3333" d="M652.231 394.895q3.652 0 5.429 1.585a5.772 5.772 0 0 1 1.777 4.544 6.419 6.419 0 0 1-.869 3.375 5.793 5.793 0 0 1-2.517 2.241 9.12 9.12 0 0 1-4 .8q-.435 0-1.293-.027t-1.51-.027q-.75 0-1.471.009t-1.175.044v-.354a4.306 4.306 0 0 0 1.007-.142.647.647 0 0 0 .444-.425 3.154 3.154 0 0 0 .109-.957v-8.786a3.14 3.14 0 0 0-.109-.965.674.674 0 0 0-.454-.425 3.641 3.641 0 0 0-1-.133v-.354l1.175.044q.721.027 1.431.009t1.589-.036q.885-.015 1.437-.02zm-.336.319a1.65 1.65 0 0 0-1.185.3 1.9 1.9 0 0 0-.276 1.222v8.857a1.847 1.847 0 0 0 .286 1.222 1.69 1.69 0 0 0 1.194.3 5.786 5.786 0 0 0 3.1-.7 3.749 3.749 0 0 0 1.559-2.046 10.332 10.332 0 0 0 .454-3.277 7.1 7.1 0 0 0-1.145-4.429q-1.144-1.449-3.982-1.449z" class="cls-1" transform="translate(-508.147 -394.631)"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

View file

@ -0,0 +1 @@
All of these .svg files are not used directly, instead the svg information is copied inline so we can apply CSS classes to them.

View file

@ -0,0 +1 @@
<svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="100px" height="100px"><path d="M 20 9 L 20 14 L 10 14 L 10 19 L 5 19 L 5 24 L 1.125 24 C 0.640625 24 0.242188 24.335938 0.15625 24.8125 C 0.148438 24.847656 0 25.683594 0 26.75 C 0 27.449219 0.0664063 28.210938 0.1875 28.96875 C 1.332031 28.695313 3.429688 28.285156 3.0625 26.9375 C 5.035156 29.222656 9.769531 28.53125 10.96875 27.40625 C 12.308594 29.347656 20.113281 28.605469 20.65625 27.09375 C 22.335938 29.0625 27.542969 29.0625 29.21875 27.09375 C 29.761719 28.605469 37.535156 29.347656 38.875 27.40625 C 39.300781 27.804688 40.1875 28.136719 41.21875 28.3125 C 41.566406 27.652344 41.886719 26.988281 42.1875 26.28125 C 48.539063 26.203125 49.910156 21.636719 49.96875 21.4375 C 50.078125 21.054688 49.929688 20.660156 49.625 20.40625 C 49.519531 20.316406 47.175781 18.414063 43.375 19.0625 C 42.308594 15.589844 39.5625 14.007813 39.4375 13.9375 C 39.078125 13.734375 38.632813 13.765625 38.3125 14.03125 C 38.210938 14.113281 35.847656 16.117188 36.21875 20.21875 C 36.3125 21.25 36.582031 22.160156 37 22.96875 C 36.179688 23.425781 34.769531 24 32.5 24 L 32 24 L 32 19 L 27 19 L 27 9 Z M 41.21875 28.3125 C 41.097656 28.546875 40.941406 28.773438 40.8125 29 L 49.84375 29 C 48.757813 28.726563 46.425781 28.359375 46.8125 26.9375 C 45.535156 28.414063 43.109375 28.632813 41.21875 28.3125 Z M 40.8125 29 L 0.1875 29 C 0.429688 30.46875 0.929688 32.007813 1.6875 33.5 C 7.117188 34.777344 12.816406 32.832031 12.875 32.8125 C 13.398438 32.628906 13.945313 32.917969 14.125 33.4375 C 14.308594 33.957031 14.050781 34.539063 13.53125 34.71875 C 13.339844 34.785156 9.90625 35.9375 5.6875 35.9375 C 4.851563 35.9375 3.972656 35.890625 3.09375 35.78125 C 5.71875 39.261719 10.167969 42 17 42 C 27.804688 42 36.113281 37.410156 40.8125 29 Z M 0.1875 29 C 0.183594 28.984375 0.191406 28.984375 0.1875 28.96875 C 0.121094 28.984375 0.0585938 28.984375 0 29 Z M 22 11 L 25 11 L 25 14 L 22 14 Z M 12 16 L 15 16 L 15 19 L 12 19 Z M 17 16 L 20 16 L 20 19 L 17 19 Z M 22 16 L 25 16 L 25 19 L 22 19 Z M 7 21 L 10 21 L 10 24 L 7 24 Z M 12 21 L 15 21 L 15 24 L 12 24 Z M 17 21 L 20 21 L 20 24 L 17 24 Z M 22 21 L 25 21 L 25 24 L 22 24 Z M 27 21 L 30 21 L 30 24 L 27 24 Z M 16 31 C 16.128906 31 16.261719 31.019531 16.375 31.0625 C 16.253906 31.132813 16.15625 31.253906 16.15625 31.40625 C 16.15625 31.632813 16.335938 31.84375 16.5625 31.84375 C 16.714844 31.84375 16.867188 31.75 16.9375 31.625 C 16.988281 31.742188 17 31.863281 17 32 C 17 32.550781 16.550781 33 16 33 C 15.449219 33 15 32.550781 15 32 C 15 31.449219 15.449219 31 16 31 Z"/></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View file

@ -0,0 +1 @@
<?xml version="1.0"?><svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="100px" height="100px"> <path d="M17.791,46.836C18.502,46.53,19,45.823,19,45v-5.4c0-0.197,0.016-0.402,0.041-0.61C19.027,38.994,19.014,38.997,19,39 c0,0-3,0-3.6,0c-1.5,0-2.8-0.6-3.4-1.8c-0.7-1.3-1-3.5-2.8-4.7C8.9,32.3,9.1,32,9.7,32c0.6,0.1,1.9,0.9,2.7,2c0.9,1.1,1.8,2,3.4,2 c2.487,0,3.82-0.125,4.622-0.555C21.356,34.056,22.649,33,24,33v-0.025c-5.668-0.182-9.289-2.066-10.975-4.975 c-3.665,0.042-6.856,0.405-8.677,0.707c-0.058-0.327-0.108-0.656-0.151-0.987c1.797-0.296,4.843-0.647,8.345-0.714 c-0.112-0.276-0.209-0.559-0.291-0.849c-3.511-0.178-6.541-0.039-8.187,0.097c-0.02-0.332-0.047-0.663-0.051-0.999 c1.649-0.135,4.597-0.27,8.018-0.111c-0.079-0.5-0.13-1.011-0.13-1.543c0-1.7,0.6-3.5,1.7-5c-0.5-1.7-1.2-5.3,0.2-6.6 c2.7,0,4.6,1.3,5.5,2.1C21,13.4,22.9,13,25,13s4,0.4,5.6,1.1c0.9-0.8,2.8-2.1,5.5-2.1c1.5,1.4,0.7,5,0.2,6.6c1.1,1.5,1.7,3.2,1.6,5 c0,0.484-0.045,0.951-0.11,1.409c3.499-0.172,6.527-0.034,8.204,0.102c-0.002,0.337-0.033,0.666-0.051,0.999 c-1.671-0.138-4.775-0.28-8.359-0.089c-0.089,0.336-0.197,0.663-0.325,0.98c3.546,0.046,6.665,0.389,8.548,0.689 c-0.043,0.332-0.093,0.661-0.151,0.987c-1.912-0.306-5.171-0.664-8.879-0.682C35.112,30.873,31.557,32.75,26,32.969V33 c2.6,0,5,3.9,5,6.6V45c0,0.823,0.498,1.53,1.209,1.836C41.37,43.804,48,35.164,48,25C48,12.318,37.683,2,25,2S2,12.318,2,25 C2,35.164,8.63,43.804,17.791,46.836z"/></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -0,0 +1 @@
<?xml version="1.0"?><svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="100px" height="100px"> <path d="M 5 4 C 4.448 4 4 4.447 4 5 L 4 45 C 4 45.553 4.448 46 5 46 L 24 46 C 24.552 46 25 45.553 25 45 L 25 35.5 L 25 14.5 L 25 5 C 25 4.447 24.552 4 24 4 L 5 4 z M 25 14.5 C 25 20.29 29.71 25 35.5 25 C 41.29 25 46 20.29 46 14.5 C 46 8.71 41.29 4 35.5 4 C 29.71 4 25 8.71 25 14.5 z M 35.5 25 C 29.71 25 25 29.71 25 35.5 C 25 41.29 29.71 46 35.5 46 C 41.29 46 46 41.29 46 35.5 C 46 29.71 41.29 25 35.5 25 z"/></svg>

After

Width:  |  Height:  |  Size: 546 B

View file

@ -0,0 +1 @@
<?xml version="1.0"?><svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="100px" height="100px"> <path d="M 16 3 C 8.83 3 3 8.83 3 16 L 3 34 C 3 41.17 8.83 47 16 47 L 34 47 C 41.17 47 47 41.17 47 34 L 47 16 C 47 8.83 41.17 3 34 3 L 16 3 z M 37 11 C 38.1 11 39 11.9 39 13 C 39 14.1 38.1 15 37 15 C 35.9 15 35 14.1 35 13 C 35 11.9 35.9 11 37 11 z M 25 14 C 31.07 14 36 18.93 36 25 C 36 31.07 31.07 36 25 36 C 18.93 36 14 31.07 14 25 C 14 18.93 18.93 14 25 14 z M 25 16 C 20.04 16 16 20.04 16 25 C 16 29.96 20.04 34 25 34 C 29.96 34 34 29.96 34 25 C 34 20.04 29.96 16 25 16 z"/></svg>

After

Width:  |  Height:  |  Size: 614 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 10 KiB

View file

@ -0,0 +1 @@
<?xml version="1.0"?><svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="100px" height="100px"> <path d="M41,4H9C6.24,4,4,6.24,4,9v32c0,2.76,2.24,5,5,5h32c2.76,0,5-2.24,5-5V9C46,6.24,43.76,4,41,4z M17,20v19h-6V20H17z M11,14.47c0-1.4,1.2-2.47,3-2.47s2.93,1.07,3,2.47c0,1.4-1.12,2.53-3,2.53C12.2,17,11,15.87,11,14.47z M39,39h-6c0,0,0-9.26,0-10 c0-2-1-4-3.5-4.04h-0.08C27,24.96,26,27.02,26,29c0,0.91,0,10,0,10h-6V20h6v2.56c0,0,1.93-2.56,5.81-2.56 c3.97,0,7.19,2.73,7.19,8.26V39z"/></svg>

After

Width:  |  Height:  |  Size: 518 B

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 100 100" width="100px" height="100px">
<g id="surface12014155">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 28 8 C 16.976562 8 8 16.976562 8 28 L 8 72 C 8 83.023438 16.976562 92 28 92 L 72 92 C 83.023438 92 92 83.023438 92 72 L 92 28 C 92 16.976562 83.023438 8 72 8 Z M 26 32 L 74 32 C 74.359375 32 74.699219 32.039062 75.019531 32.140625 L 55.359375 51.78125 C 52.398438 54.742188 47.582031 54.742188 44.621094 51.78125 L 24.980469 32.140625 C 25.300781 32.039062 25.640625 32 26 32 Z M 22.140625 34.980469 L 37.179688 50 L 22.140625 65.019531 C 22.039062 64.699219 22 64.359375 22 64 L 22 36 C 22 35.640625 22.039062 35.300781 22.140625 34.980469 Z M 77.859375 34.980469 C 77.960938 35.300781 78 35.640625 78 36 L 78 64 C 78 64.359375 77.960938 64.699219 77.859375 65.019531 L 62.800781 50 Z M 40 52.820312 L 41.78125 54.621094 C 44.042969 56.882812 47.019531 58 49.980469 58 C 52.960938 58 55.917969 56.882812 58.179688 54.621094 L 59.980469 52.820312 L 75.019531 67.859375 C 74.699219 67.960938 74.359375 68 74 68 L 26 68 C 25.640625 68 25.300781 67.960938 24.980469 67.859375 Z M 40 52.820312 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.4 KiB

View file

@ -0,0 +1 @@
<svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="100px" height="100px"><path d="M 50.0625 10.4375 C 48.214844 11.257813 46.234375 11.808594 44.152344 12.058594 C 46.277344 10.785156 47.910156 8.769531 48.675781 6.371094 C 46.691406 7.546875 44.484375 8.402344 42.144531 8.863281 C 40.269531 6.863281 37.597656 5.617188 34.640625 5.617188 C 28.960938 5.617188 24.355469 10.21875 24.355469 15.898438 C 24.355469 16.703125 24.449219 17.488281 24.625 18.242188 C 16.078125 17.8125 8.503906 13.71875 3.429688 7.496094 C 2.542969 9.019531 2.039063 10.785156 2.039063 12.667969 C 2.039063 16.234375 3.851563 19.382813 6.613281 21.230469 C 4.925781 21.175781 3.339844 20.710938 1.953125 19.941406 C 1.953125 19.984375 1.953125 20.027344 1.953125 20.070313 C 1.953125 25.054688 5.5 29.207031 10.199219 30.15625 C 9.339844 30.390625 8.429688 30.515625 7.492188 30.515625 C 6.828125 30.515625 6.183594 30.453125 5.554688 30.328125 C 6.867188 34.410156 10.664063 37.390625 15.160156 37.472656 C 11.644531 40.230469 7.210938 41.871094 2.390625 41.871094 C 1.558594 41.871094 0.742188 41.824219 -0.0585938 41.726563 C 4.488281 44.648438 9.894531 46.347656 15.703125 46.347656 C 34.617188 46.347656 44.960938 30.679688 44.960938 17.09375 C 44.960938 16.648438 44.949219 16.199219 44.933594 15.761719 C 46.941406 14.3125 48.683594 12.5 50.0625 10.4375 Z"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1 @@
<svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="100px" height="100px"><path d="M45,4H5C4.447,4,4,4.448,4,5v40c0,0.552,0.447,1,1,1h40c0.553,0,1-0.448,1-1V5C46,4.448,45.553,4,45,4z M29,26.445h-5V42h-4 V26.445h-5V23h14V26.445z M30.121,41.112v-4.158c0,0,2.271,1.712,4.996,1.712c2.725,0,2.62-1.782,2.62-2.026 c0-2.586-7.721-2.586-7.721-8.315c0-7.791,11.25-4.717,11.25-4.717l-0.14,3.704c0,0-1.887-1.258-4.018-1.258s-2.9,1.013-2.9,2.096 c0,2.795,7.791,2.516,7.791,8.141C42,44.955,30.121,41.112,30.121,41.112z"/></svg>

After

Width:  |  Height:  |  Size: 545 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 554 KiB

View file

@ -0,0 +1,9 @@
export default interface InfoCardProps {
title: string,
description: string,
listTitle: string,
list: string[],
linkTitle?: string,
link?: string,
listClassName?: string
}

8
src/types/Job.ts Normal file
View file

@ -0,0 +1,8 @@
export default interface Job {
title: string,
company: string,
uri?: string,
timespan: string,
items: string[]
image: string
}

4043
yarn.lock

File diff suppressed because it is too large Load diff