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": {
"version": "2.1.4",
"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",
"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": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",

@ -23,7 +23,8 @@
"react-router-dom": "^5.2.0",
"react-scripts": "4.0.1",
"typescript": "^4.1.3",
"web-vitals": "^0.2.4"
"web-vitals": "^0.2.4",
"axios": "^0.21.1"
},
"scripts": {
"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="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" />
<!--
@ -24,7 +24,7 @@
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>Jake Cover</title>
</head>
<body>
<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",
"name": "Create React App Sample",
"short_name": "jakecover.me",
"name": "Jake Cover's Personal Website",
"icons": [
{
"src": "favicon.ico",
"sizes": "64x64 32x32 24x24 16x16",
"sizes": "256x256 128x128 64x64 32x32 24x24 16x16",
"type": "image/x-icon"
},
{

@ -6,7 +6,7 @@ import { Main } from "./components/Main";
function App() {
return (
<div className="App">
<div className="App" style={{maxWidth: 1823, margin: "auto"}}>
<Header />
<Main />
<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 {
font-family: "Montserrat", sans-serif;
@media screen and (min-width: 900px) {
font-size: 16px;
}
}
}
@ -17,6 +21,14 @@
display: flex;
justify-content: space-evenly;
.blurb {
flex: 9;
}
.links-container {
flex: 4;
}
.footer-links {
padding-left: 0;
margin: 0;

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

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

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

@ -1,6 +1,6 @@
@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()
@function min($numbers...) {
@ -12,11 +12,36 @@ $breakpoints: (x-small: 320px, small: 660px, medium: 900px, large: 1300px, x-lar
@return m#{a}x(#{$numbers});
}
#project-grid {
#project-grid-parent {
margin: 10px;
background: #FFD43B;
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;
@include media("<=x-small") {
@ -36,26 +61,26 @@ $breakpoints: (x-small: 320px, small: 660px, medium: 900px, large: 1300px, x-lar
@include media(">=small", "<medium") {
.GridSizer, .OneWide {
width: 32%;
width: 33%;
}
.FourByOne {
width: 95%;
width: 99%;
}
}
@include media(">=medium", "<large") {
.GridSizer, .OneWide {
width: 24.5%;
width: 24.9%;
}
.FourByOne {
width: 73%;
width: 74.6%;
}
}
@include media(">=large", "<x-large") {
.GridSizer, .OneWide {
max-width: 300px;
width: 19.5%;
width: 19.9%;
}
.FourByOne {
width: 58.5%;
@ -81,12 +106,12 @@ $breakpoints: (x-small: 320px, small: 660px, medium: 900px, large: 1300px, x-lar
border-radius: 5px;
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;
}
.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 {
@ -159,6 +184,6 @@ $breakpoints: (x-small: 320px, small: 660px, medium: 900px, large: 1300px, x-lar
font-size: 24px;
color: black;
background: rgba(224,255,255, 0.7);
background: rgba(224, 255, 255, 0.7);
border-radius: 5px;
}

@ -16,6 +16,7 @@ import CodeDaySD from "../images/SanDiego.svg";
import Foresight from "../images/foresightsports.png";
import Distest from "../images/distest.svg";
import Scoresaver from "../images/scoresaver.svg";
import Hashicorp from "../images/HashiCorp_Logo_no_text.png";
type GridElementImageProps = {
@ -163,93 +164,101 @@ export const ProjectGrid = () => {
});
return (
<div id={"project-grid-parent"}>
<div id={"project-grid"}>
<div className={"GridSizer"} />
<OneWide
title={"ElaticMatch"}
org={"CodeDay"}
text={"A set of tools, including a custom suggestion and weighting system, as well as a custom matching algorithm that I wrote and used to match around 350 students to the best-fitting mentors in the CodeDay Labs summer internship program in 2020."}
link={"https://github.com/codeday/labs-elastic-match"}
/>
<OneWide
title={"John Peter"}
org={"CodeDay"}
text={
"John Peter is a Discord bot used for moderation and server management for Virtual CodeDay. It has a very extensive featureset, and has been used for multiple CodeDays and has worked with over 1000 students."
}
link={"https://github.com/codeday/johnpeter-discord"}
/>
<OneWide
title={"CopyMoji"}
org={"BetterDiscord"}
text={
"An extension for the alternate discord client BetterDiscord that changes the functionality of copying emoji to copy the actual emoji characters rather than their names from the discord client."
}
link={"https://github.com/JakeCover/BetterDiscordExtensions/tree/main/plugins/CopyMoji"}
/>
<OneWidePic
image_url={CodeDaySD}
image_alt={"CodeDay San Diego Logo"}
org={"CodeDay"}
title={"CodeDay San Diego"}
text={
"A 24 hour hackathon occurring around the world a few times a year. I volunteered for and then later ran the San Diego event."
}
link={"https://event.codeday.org/sandiego"}
/>
<FourByOneGridElement
image_url={Foresight}
image_alt={"Foresight Sports Logo"}
title={"Foresight Sports"}
text={
"Foresight Sports creates advanced augmented reality sports experiences. I created multiple games using Unity that took data from their launch monitor technology and translated it into a seamless experience."
}
/>
<OneWidePic
image_url={Distest}
image_alt={"Distest Logo"}
title={"Distest"}
org={"Random Projects"}
text={
"Distest is a testing library I wrote for Discord bots that allows for full integration tests of bots, improving the discord bot development workflow significantly. As far as I know, it's the only tool available for this sort of testing."
}
link={"https://github.com/JakeCover/distest"}
/>
<OneWidePic
image_url={Scoresaver}
image_alt={"Scoresaver Logo"}
title={"ScoreSaver"}
org={"Random Projects"}
text={
"A Chrome extension to help you download beatsaber songs directly from ScoreSaber. No more searching for mapper names on BeatSaver, just download the newest ranked songs directly!"
}
link={"https://github.com/JakeCover/ScoreSaverExtention"}
/>
<OneWide
title={"Personal Website"}
org={"Random Projects"}
text={
"You're looking at it! There's not a whole lot to this, it's just a React site hosted on GitHub Pages, but I didn't know React before starting on this so I'm pretty proud of it."
}
link={"https://github.com/JakeCover/PersonalWebsite_Static"}
/>
<OneWidePic
image_url={"http://jakecover.me/images/codedaysd.png"}
image_alt={"CodeDay San Diego Logo"}
title={"CodeDay"}
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."
}
/>
<OneWidePic
image_url={"http://jakecover.me/images/codedaysd.png"}
image_alt={"CodeDay San Diego Logo"}
title={"CodeDay"}
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."
}
/>
<div>
<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 className={"GridSizer"}/>
<OneWide
title={"ElaticMatch"}
org={"CodeDay"}
text={"A set of tools, including a custom suggestion and weighting system, as well as a custom matching algorithm that I wrote and used to match around 350 students to the best-fitting mentors in the CodeDay Labs summer internship program in 2020."}
link={"https://github.com/codeday/labs-elastic-match"}
/>
<OneWide
title={"John Peter"}
org={"CodeDay"}
text={
"John Peter is a Discord bot used for moderation and server management for Virtual CodeDay. It has a very extensive featureset, and has been used for multiple CodeDays and has worked with over 1000 students."
}
link={"https://github.com/codeday/johnpeter-discord"}
/>
<OneWide
title={"CopyMoji"}
org={"BetterDiscord"}
text={
"An extension for the alternate discord client BetterDiscord that changes the functionality of copying emoji to copy the actual emoji characters rather than their names from the discord client."
}
link={"https://github.com/JakeCover/BetterDiscordExtensions/tree/main/plugins/CopyMoji"}
/>
<OneWidePic
image_url={CodeDaySD}
image_alt={"CodeDay San Diego Logo"}
org={"CodeDay"}
title={"CodeDay San Diego"}
text={
"A 24 hour hackathon occurring around the world a few times a year. I volunteered for and then later ran the San Diego event."
}
link={"https://event.codeday.org/sandiego"}
/>
<FourByOneGridElement
image_url={Foresight}
image_alt={"Foresight Sports Logo"}
title={"Foresight Sports"}
text={
"Foresight Sports creates advanced augmented reality sports experiences. I created multiple games using Unity that took data from their launch monitor technology and translated it into a seamless experience."
}
/>
<OneWidePic
image_url={Distest}
image_alt={"Distest Logo"}
title={"Distest"}
org={"Random Projects"}
text={
"Distest is a testing library I wrote for Discord bots that allows for full integration tests of bots, improving the discord bot development workflow significantly. As far as I know, it's the only tool available for this sort of testing."
}
link={"https://github.com/JakeCover/distest"}
/>
<OneWidePic
image_url={Scoresaver}
image_alt={"Scoresaver Logo"}
title={"ScoreSaver"}
org={"Random Projects"}
text={
"A Chrome extension to help you download beatsaber songs directly from ScoreSaber. No more searching for mapper names on BeatSaver, just download the newest ranked songs directly!"
}
link={"https://github.com/JakeCover/ScoreSaverExtention"}
/>
<OneWide
title={"Personal Website"}
org={"Random Projects"}
text={
"You're looking at it! There's not a whole lot to this, it's just a React site hosted on GitHub Pages, but I didn't know React before starting on this so I'm pretty proud of it."
}
link={"https://github.com/JakeCover/PersonalWebsite_Static"}
/>
<OneWidePic
image_url={Hashicorp}
image_alt={"HashiCorp Logo"}
title={"Hashicorp Stack Sysadmin"}
org={"CodeDay, Random Projects"}
text={
"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!"
}
/>
<OneWide
title={"CodeDay"}
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."
}
/>
</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