About me is ready

replace/e77aff86510386d6f69db2c66fb1d7e6642376a3
Cobular 5 years ago
parent 895ccd8cb1
commit 5f76685897

File diff suppressed because one or more lines are too long

37
package-lock.json generated

@ -1211,35 +1211,6 @@
} }
} }
}, },
"@fortawesome/fontawesome-common-types": {
"version": "0.2.32",
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.32.tgz",
"integrity": "sha512-ux2EDjKMpcdHBVLi/eWZynnPxs0BtFVXJkgHIxXRl+9ZFaHPvYamAfCzeeQFqHRjuJtX90wVnMRaMQAAlctz3w=="
},
"@fortawesome/fontawesome-svg-core": {
"version": "1.2.32",
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.32.tgz",
"integrity": "sha512-XjqyeLCsR/c/usUpdWcOdVtWFVjPbDFBTQkn2fQRrWhhUoxriQohO2RWDxLyUM8XpD+Zzg5xwJ8gqTYGDLeGaQ==",
"requires": {
"@fortawesome/fontawesome-common-types": "^0.2.32"
}
},
"@fortawesome/free-solid-svg-icons": {
"version": "5.15.1",
"resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.1.tgz",
"integrity": "sha512-EFMuKtzRMNbvjab/SvJBaOOpaqJfdSap/Nl6hst7CgrJxwfORR1drdTV6q1Ib/JVzq4xObdTDcT6sqTaXMqfdg==",
"requires": {
"@fortawesome/fontawesome-common-types": "^0.2.32"
}
},
"@fortawesome/react-fontawesome": {
"version": "0.1.14",
"resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.14.tgz",
"integrity": "sha512-4wqNb0gRLVaBm/h+lGe8UfPPivcbuJ6ecI4hIgW0LjI7kzpYB9FkN0L9apbVzg+lsBdcTf0AlBtODjcSX5mmKA==",
"requires": {
"prop-types": "^15.7.2"
}
},
"@hapi/address": { "@hapi/address": {
"version": "2.1.4", "version": "2.1.4",
"resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz",
@ -3245,6 +3216,14 @@
"resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.1.tgz", "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.1.tgz",
"integrity": "sha512-5Kgy8Cz6LPC9DJcNb3yjAXTu3XihQgEdnIg50c//zOC/MyLP0Clg+Y8Sh9ZjjnvBrDZU4DgXS9C3T9r4/scGZQ==" "integrity": "sha512-5Kgy8Cz6LPC9DJcNb3yjAXTu3XihQgEdnIg50c//zOC/MyLP0Clg+Y8Sh9ZjjnvBrDZU4DgXS9C3T9r4/scGZQ=="
}, },
"axios": {
"version": "0.21.1",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
"integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
"requires": {
"follow-redirects": "^1.10.0"
}
},
"axobject-query": { "axobject-query": {
"version": "2.2.0", "version": "2.2.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",

@ -23,7 +23,8 @@
"react-router-dom": "^5.2.0", "react-router-dom": "^5.2.0",
"react-scripts": "4.0.1", "react-scripts": "4.0.1",
"typescript": "^4.1.3", "typescript": "^4.1.3",
"web-vitals": "^0.2.4" "web-vitals": "^0.2.4",
"axios": "^0.21.1"
}, },
"scripts": { "scripts": {
"start": "react-scripts start", "start": "react-scripts start",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 264 KiB

@ -7,7 +7,7 @@
<meta name="theme-color" content="#000000" /> <meta name="theme-color" content="#000000" />
<meta <meta
name="description" name="description"
content="Web site created using create-react-app" content="Jake Cover's Personal Website"
/> />
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" /> <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
<!-- <!--
@ -24,7 +24,7 @@
work correctly both with client-side routing and a non-root public URL. 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`. Learn how to configure a non-root public URL by running `npm run build`.
--> -->
<title>React App</title> <title>Jake Cover</title>
</head> </head>
<body> <body>
<noscript>You need to enable JavaScript to run this app.</noscript> <noscript>You need to enable JavaScript to run this app.</noscript>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 44 KiB

@ -1,10 +1,10 @@
{ {
"short_name": "React App", "short_name": "jakecover.me",
"name": "Create React App Sample", "name": "Jake Cover's Personal Website",
"icons": [ "icons": [
{ {
"src": "favicon.ico", "src": "favicon.ico",
"sizes": "64x64 32x32 24x24 16x16", "sizes": "256x256 128x128 64x64 32x32 24x24 16x16",
"type": "image/x-icon" "type": "image/x-icon"
}, },
{ {

@ -6,7 +6,7 @@ import { Main } from "./components/Main";
function App() { function App() {
return ( return (
<div className="App"> <div className="App" style={{maxWidth: 1823, margin: "auto"}}>
<Header /> <Header />
<Main /> <Main />
<Footer /> <Footer />

@ -0,0 +1,86 @@
#about-me-parent {
margin-left: 10px;
margin-right: 10px;
display: flex;
flex-direction: row;
justify-content: center;
b {
font-weight: 600;
}
.about-me-card {
background: #61dafb;
border-radius: 5px;
margin: 0 5px 0;
padding: 10px;
width: fit-content;
}
#about-me {
background: #61dafb;
border-radius: 5px;
padding: 15px;
width: fit-content;
#info-parent {
display: flex;
flex-direction: row;
#specific-info {
flex: 1 1 0;
}
#fun-info {
flex: 1 1 0;
}
@media screen and (max-width: 660px) {
flex-direction: column;
}
}
h1 {
font-family: "Fira Code", monospace;
font-weight: 500;
}
h2 {
font-family: "Fira Code", monospace;
line-height: normal;
margin-bottom: 0;
font-weight: 400;
text-align: left;
}
p {
font-family: "Montserrat", sans-serif;
font-size: 16px;
margin: 0;
}
ul {
text-align: left;
padding-left: 40px;
margin-bottom: 0;
}
li {
font-family: "Montserrat", sans-serif;
font-size: 18px;
list-style-type: symbols("+");
list-style-position: inside;
}
}
}
button {
background: none!important;
border: none;
padding: 0!important;
color: #1890ff;
cursor: pointer;
}

@ -0,0 +1,177 @@
import "./AboutMe.scss";
import { Link } from "react-router-dom";
import { Tooltip } from "antd";
import { useState, useEffect } from "react";
import axios from "axios";
const TelegramOutlinedSvg = () => {
return (
<svg
width="24px"
height="24px"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
style={{
fillRule: "evenodd",
clipRule: "evenodd",
strokeLinejoin: "round",
strokeMiterlimit: 1.41421,
}}
>
<path
id="telegram-1"
d="M18.384,22.779c0.322,0.228 0.737,0.285 1.107,0.145c0.37,-0.141 0.642,-0.457 0.724,-0.84c0.869,-4.084 2.977,-14.421 3.768,-18.136c0.06,-0.28 -0.04,-0.571 -0.26,-0.758c-0.22,-0.187 -0.525,-0.241 -0.797,-0.14c-4.193,1.552 -17.106,6.397 -22.384,8.35c-0.335,0.124 -0.553,0.446 -0.542,0.799c0.012,0.354 0.25,0.661 0.593,0.764c2.367,0.708 5.474,1.693 5.474,1.693c0,0 1.452,4.385 2.209,6.615c0.095,0.28 0.314,0.5 0.603,0.576c0.288,0.075 0.596,-0.004 0.811,-0.207c1.216,-1.148 3.096,-2.923 3.096,-2.923c0,0 3.572,2.619 5.598,4.062Zm-11.01,-8.677l1.679,5.538l0.373,-3.507c0,0 6.487,-5.851 10.185,-9.186c0.108,-0.098 0.123,-0.262 0.033,-0.377c-0.089,-0.115 -0.253,-0.142 -0.376,-0.064c-4.286,2.737 -11.894,7.596 -11.894,7.596Z"
/>
</svg>
);
};
const LastFmLi = () => {
const [nowPlayingSong, setNowPlayingSong] = useState<string>("nothing");
const [nowPlayingArtist, setNowPlayingArtist] = useState<string>("no-one");
const updateNowPlaying = async () => {
try {
const songData = await axios.get(
"https://jsonplaceholder.typicode.com/posts"
);
console.log(songData.data);
} catch (err) {
console.error(err);
}
};
useEffect(() => {
updateNowPlaying();
const interval = setInterval(updateNowPlaying, 10000);
return () => {
clearInterval(interval);
};
}, []);
return <li>listening to ____ by ____</li>;
};
const Age = () => {
const [age, setAge] = useState(
Math.round((new Date().getTime() - 1021004428000) / 1000)
);
const UpdateAge = () => {
setAge(Math.round((new Date().getTime() - 1021004428000) / 1000));
};
useEffect(() => {
UpdateAge();
const interval = setInterval(UpdateAge, 1000);
return () => {
clearInterval(interval);
};
}, []);
return (
<li>
<span style={{ fontFamily: "Fira Code" }}>{age}</span> seconds old{" "}
</li>
);
};
export const AboutMe = () => {
const EmailHandler = () => {
const email = "Y29udGFjdEBqYWtlY292ZXIubWU=";
window.prompt("Thanks for being a human! Here's my email:", atob(email));
};
return (
<div id={"about-me-parent"}>
<div id={"about-me"} className={"about-me-card"}>
<h1> Hi! I'm Jake!</h1>
<div id={"info-parent"}>
<div id={"specific-info"}>
<h2> A bit about me:</h2>
<ul>
<li>
<b>Name</b>: Jake Cover
</li>
<li>Occupation: Student</li>
<li>Location: Southern California</li>
<li>
Projects:{" "}
<button
onClick={() =>
document.getElementById("project-header")?.scrollIntoView({
behavior: "smooth",
block: "start",
})
}
>
Down there
</button>
</li>
<li>
Resume: <Link to={"/resume"}>Over here</Link>
</li>
<li>
Find Me:
<ul>
<li>
Email: <button onClick={EmailHandler}>Click This</button>
</li>
<li>
Twitter:{" "}
<Tooltip title={":("}>
<a
href={"https://github.com/JakeCover"}
target="_blank"
rel="noreferrer"
>
@cobular_
</a>
</Tooltip>
</li>
<li>
GitHub:{" "}
<a
href={"https://github.com/JakeCover"}
target="_blank"
rel="noreferrer"
>
JakeCover
</a>
</li>
<li>
Telegram:{" "}
<a
href={"https://t.me/cobular"}
target="_blank"
rel="noreferrer"
>
@cobular
</a>
</li>
<li>Elsewhere: Probably @cobular</li>
</ul>
</li>
</ul>
</div>
<div id={"fun-info"}>
<h2>I'm:</h2>
<ul>
<Age />
<LastFmLi />
<li>
doing (general stuff - in class, projects, sleeping, games)
</li>
</ul>
</div>
</div>
</div>
</div>
);
};

@ -10,6 +10,10 @@
p { p {
font-family: "Montserrat", sans-serif; font-family: "Montserrat", sans-serif;
@media screen and (min-width: 900px) {
font-size: 16px;
}
} }
} }
@ -17,6 +21,14 @@
display: flex; display: flex;
justify-content: space-evenly; justify-content: space-evenly;
.blurb {
flex: 9;
}
.links-container {
flex: 4;
}
.footer-links { .footer-links {
padding-left: 0; padding-left: 0;
margin: 0; margin: 0;

@ -1,4 +1,6 @@
import "./Footer.scss" import "./Footer.scss"
import { Link } from "react-router-dom";
export const Footer = () => { export const Footer = () => {
return ( return (
@ -16,16 +18,13 @@ export const Footer = () => {
<h2>Links and Stuff</h2> <h2>Links and Stuff</h2>
<ul className="footer-links"> <ul className="footer-links">
<li> <li>
<a href="index.html">Home</a> <Link to={"/"}>Home</Link>
</li>
<li>
<a href="contact.html">Contact</a>
</li> </li>
<li> <li>
<a href="about.html">About</a> <Link to={"/contact"}>Contact</Link>
</li> </li>
<li> <li>
<a href="resume.html">Resume</a> <Link to={"/resume"}>Resume</Link>
</li> </li>
<li> <li>
<a href="https://github.com/JakeCover">GitHub</a> <a href="https://github.com/JakeCover">GitHub</a>

@ -22,6 +22,7 @@ header {
h2 { h2 {
margin: 0; margin: 0;
border-radius: 5px; border-radius: 5px;
line-height: normal;
&:hover { &:hover {
background: #ddd; background: #ddd;
@ -36,7 +37,7 @@ header {
h2:last-of-type { h2:last-of-type {
margin-right: 5px; margin-right: 5px;
} }
}
/* Hide the link that should open and close the topnav on small screens */ /* Hide the link that should open and close the topnav on small screens */
.icon { .icon {
@ -51,15 +52,37 @@ header {
.icon { .icon {
margin-left: auto; margin-left: auto;
display: block; display: block;
position: absolute;
top: 19px;
right: 24px;
font-size: 30px;
border: none;
} }
.headerLinks {
visibility: hidden;
transition: visibility 0s, opacity 0.5s linear;
} }
} }
@media screen and (max-width: 660px) { @media screen and (max-width: 660px) {
&.responsive { &.responsive {
background: #282c34; display: block;
.headerLinks {
visibility: visible;
display: flex;
flex-direction: column;
align-items: flex-start;
}
h1 {
text-align: left;
}
h2 { h2 {
display: block; display: block;
margin-left: 5px;
} }
} }
} }

@ -1,9 +1,8 @@
import React from "react"; import React from "react";
import "./Header.scss"; import "./Header.scss";
import { Space } from "antd"; import { Button, Space } from "antd";
import { Link } from "react-router-dom"; import { Link } from "react-router-dom";
import {MenuOutlined} from "@ant-design/icons"; import { MenuOutlined } from "@ant-design/icons";
export const Header = () => { export const Header = () => {
function showHideHamburger() { function showHideHamburger() {
@ -23,6 +22,13 @@ export const Header = () => {
<Link to="/" className="navbar-brand"> <Link to="/" className="navbar-brand">
<h1>Jake Cover</h1> <h1>Jake Cover</h1>
</Link> </Link>
<Button
href={void 0}
className="icon"
onClick={() => showHideHamburger()}
>
<MenuOutlined className={"fa fa-bars"} />
</Button>
<Space className={"headerLinks"}> <Space className={"headerLinks"}>
<Link className="nav-link" to="/"> <Link className="nav-link" to="/">
@ -35,15 +41,13 @@ export const Header = () => {
<Link className="nav-link" to="/resume"> <Link className="nav-link" to="/resume">
<h2>Resume</h2> <h2>Resume</h2>
</Link> </Link>
<a className="nav-link" href="https://github.com/JakeCover">
<h2>GitHub</h2>
</a>
<a <a
href={void(0)} className="nav-link"
className="icon" href="https://github.com/JakeCover"
onClick={() => showHideHamburger()} target="_blank"
rel="noreferrer"
> >
<MenuOutlined className={"fa fa-bars"}/> <h2>GitHub</h2>
</a> </a>
</Space> </Space>
</header> </header>

@ -1,13 +1,2 @@
#about-me {
background: #61dafb;
border-radius: 5px;
margin: 10px auto;
padding: 10px;
width: fit-content;
p {
font-family: "Montserrat", sans-serif;
font-size: 16px;
}
}

@ -1,16 +1,12 @@
import "./Home.scss" import "./Home.scss";
import {ProjectGrid} from "./ProjectGrid"; import { ProjectGrid } from "./ProjectGrid";
import {AboutMe} from "./AboutMe";
export const Home = () => { export const Home = () => {
return ( return (
<div id={"home"}> <div id={"home"}>
<div id={"about-me"}> <AboutMe />
<p> <ProjectGrid />
Hi! I'm Jake, a CS student from the west coast! Take a look at some of my projects below! <br/>
This site is still under construction, so pardon the duplicate information and the horrendous colors. The final version should be up soon!
</p>
</div> </div>
<ProjectGrid/> );
</div> };
)
}

@ -1,6 +1,6 @@
@import "~include-media/dist/_include-media.scss"; @import "~include-media/dist/_include-media.scss";
$breakpoints: (x-small: 320px, small: 660px, medium: 900px, large: 1300px, x-large: 1560px); $breakpoints: (x-small: 400px, small: 660px, medium: 900px, large: 1300px, x-large: 1560px);
// Override Sass min() // Override Sass min()
@function min($numbers...) { @function min($numbers...) {
@ -12,11 +12,36 @@ $breakpoints: (x-small: 320px, small: 660px, medium: 900px, large: 1300px, x-lar
@return m#{a}x(#{$numbers}); @return m#{a}x(#{$numbers});
} }
#project-grid-parent {
#project-grid {
margin: 10px; margin: 10px;
background: #FFD43B; background: #FFD43B;
border-radius: 5px; border-radius: 5px;
& > #project-header {
background: grey;
border-radius: 5px 5px 0 0;
margin-bottom: 2px;
padding: 5px;
h2 {
margin-bottom: 0;
font-family: "Fira Code", monospace;
font-size: 24px;
}
p {
margin: 0 0 3px;
font-family: "Montserrat", sans-serif;
font-size: 18px;
}
}
}
#project-grid {
//padding: 10px; //padding: 10px;
@include media("<=x-small") { @include media("<=x-small") {
@ -36,26 +61,26 @@ $breakpoints: (x-small: 320px, small: 660px, medium: 900px, large: 1300px, x-lar
@include media(">=small", "<medium") { @include media(">=small", "<medium") {
.GridSizer, .OneWide { .GridSizer, .OneWide {
width: 32%; width: 33%;
} }
.FourByOne { .FourByOne {
width: 95%; width: 99%;
} }
} }
@include media(">=medium", "<large") { @include media(">=medium", "<large") {
.GridSizer, .OneWide { .GridSizer, .OneWide {
width: 24.5%; width: 24.9%;
} }
.FourByOne { .FourByOne {
width: 73%; width: 74.6%;
} }
} }
@include media(">=large", "<x-large") { @include media(">=large", "<x-large") {
.GridSizer, .OneWide { .GridSizer, .OneWide {
max-width: 300px; max-width: 300px;
width: 19.5%; width: 19.9%;
} }
.FourByOne { .FourByOne {
width: 58.5%; width: 58.5%;
@ -81,12 +106,12 @@ $breakpoints: (x-small: 320px, small: 660px, medium: 900px, large: 1300px, x-lar
border-radius: 5px; border-radius: 5px;
background: lightcyan; background: lightcyan;
box-shadow: 0 1px 2px rgba(0,0,0,0.15); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
transition: box-shadow 0.3s ease-in-out; transition: box-shadow 0.3s ease-in-out;
} }
.GridElementInternal:hover { .GridElementInternal:hover {
box-shadow: 0 2px 5px rgba(0,0,0,0.3); box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
} }
h2 { h2 {
@ -159,6 +184,6 @@ $breakpoints: (x-small: 320px, small: 660px, medium: 900px, large: 1300px, x-lar
font-size: 24px; font-size: 24px;
color: black; color: black;
background: rgba(224,255,255, 0.7); background: rgba(224, 255, 255, 0.7);
border-radius: 5px; border-radius: 5px;
} }

@ -16,6 +16,7 @@ import CodeDaySD from "../images/SanDiego.svg";
import Foresight from "../images/foresightsports.png"; import Foresight from "../images/foresightsports.png";
import Distest from "../images/distest.svg"; import Distest from "../images/distest.svg";
import Scoresaver from "../images/scoresaver.svg"; import Scoresaver from "../images/scoresaver.svg";
import Hashicorp from "../images/HashiCorp_Logo_no_text.png";
type GridElementImageProps = { type GridElementImageProps = {
@ -163,9 +164,17 @@ export const ProjectGrid = () => {
}); });
return ( return (
<div>
<div id={"project-grid-parent"}> <div id={"project-grid-parent"}>
<div id={"project-header"}>
<h2>&lt;/&gt; My Projects</h2>
<p>
A gallery of some of my most interesting projects. Look for <LinkOutlined />, click those projects for more information!
</p>
</div>
<div id={"project-grid"}> <div id={"project-grid"}>
<div className={"GridSizer"} />
<div className={"GridSizer"}/>
<OneWide <OneWide
title={"ElaticMatch"} title={"ElaticMatch"}
org={"CodeDay"} org={"CodeDay"}
@ -235,16 +244,15 @@ export const ProjectGrid = () => {
link={"https://github.com/JakeCover/PersonalWebsite_Static"} link={"https://github.com/JakeCover/PersonalWebsite_Static"}
/> />
<OneWidePic <OneWidePic
image_url={"http://jakecover.me/images/codedaysd.png"} image_url={Hashicorp}
image_alt={"CodeDay San Diego Logo"} image_alt={"HashiCorp Logo"}
title={"CodeDay"} title={"Hashicorp Stack Sysadmin"}
org={"CodeDay, Random Projects"}
text={ text={
"CodeDay, an event by SRND, is a beginner-friendly 24 hour event for students that challenges\n attendees to create a game or an app." "I've setup and used a stack consisting of Nomad, Consul, and Vault along with Traefik both at CodeDay, where it runs almost every service we have, as well as at home, where I use it to run a number of assorted services on a few old machines. I strongly recommend it, it's very powerful and not all that complex to get started with!"
} }
/> />
<OneWidePic <OneWide
image_url={"http://jakecover.me/images/codedaysd.png"}
image_alt={"CodeDay San Diego Logo"}
title={"CodeDay"} title={"CodeDay"}
text={ text={
"CodeDay, an event by SRND, is a beginner-friendly 24 hour event for students that challenges\n attendees to create a game or an app." "CodeDay, an event by SRND, is a beginner-friendly 24 hour event for students that challenges\n attendees to create a game or an app."
@ -252,5 +260,6 @@ export const ProjectGrid = () => {
/> />
</div> </div>
</div> </div>
</div>
); );
}; };

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

@ -1,2 +1,2 @@
@import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@400,600&family=Montserrat:wght@400;600;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600&family=Montserrat:wght@400;600;700&display=swap');

Loading…
Cancel
Save