Even better now!

React
Cobular 5 years ago
parent 5ce52976f3
commit 75427aec2a

File diff suppressed because one or more lines are too long

@ -48,7 +48,7 @@
<div class="row"> <div class="row">
<div class="col-xl-3 col-lg-4 col-sm-6 tall top_buffer"> <div class="col-xl-3 col-lg-4 col-sm-6 tall top_buffer">
<div class="image"> <div class="image">
<img class="img-fluid" src="images/codedaysd.png" alt="CodeDay SD Logo"> <img class="img-fluid" src="../src/images/codedaysd.png" alt="CodeDay SD Logo">
</div> </div>
<div class="description"> <div class="description">
<p>CodeDay, an event by SRND, is a beginner-friendly 24 hour event for students that challenges <p>CodeDay, an event by SRND, is a beginner-friendly 24 hour event for students that challenges
@ -58,7 +58,7 @@
</div> </div>
<div class="col-xl-3 col-md-4 col-sm-6 tall top_buffer"> <div class="col-xl-3 col-md-4 col-sm-6 tall top_buffer">
<div class="image"> <div class="image">
<img class="img-fluid" src="images/codeday-notext-color.svg" alt="Redish Heart, SRND Logo"> <img class="img-fluid" src="../src/images/codeday-notext-color.svg" alt="Redish Heart, SRND Logo">
</div> </div>
<div class="description"> <div class="description">
<p>SRND is an educational nonprofit that works to provide CS education to high school and <p>SRND is an educational nonprofit that works to provide CS education to high school and
@ -68,7 +68,7 @@
</div> </div>
<div class="col-xl-3 col-md-4 col-sm-6 tall top_buffer"> <div class="col-xl-3 col-md-4 col-sm-6 tall top_buffer">
<div class="image"> <div class="image">
<img class="img-fluid" src="images/distest.svg" alt="Distest Logo"> <img class="img-fluid" src="../src/images/distest.svg" alt="Distest Logo">
</div> </div>
<div class="description"> <div class="description">
<p>Distest is a testing library for Discord bots that allows for full integration tests of your bot, <p>Distest is a testing library for Discord bots that allows for full integration tests of your bot,
@ -77,7 +77,7 @@
</div> </div>
<div class="col-xl-3 col-md-4 col-sm-6 tall top_buffer"> <div class="col-xl-3 col-md-4 col-sm-6 tall top_buffer">
<div class="image"> <div class="image">
<img class="img-fluid" src="images/scoresaver.svg" alt="Red to Blue Gradient w/ White Download Icon"> <img class="img-fluid" src="../src/images/scoresaver.svg" alt="Red to Blue Gradient w/ White Download Icon">
</div> </div>
<div class="description"> <div class="description">
<p>A Chrome extension to help you download beatsaber songs directly from ScoreSaber. No more searching <p>A Chrome extension to help you download beatsaber songs directly from ScoreSaber. No more searching
@ -86,7 +86,7 @@
</div> </div>
<div class="col-xs-12 wide top_buffer"> <div class="col-xs-12 wide top_buffer">
<div class="image"> <div class="image">
<img class="img-fluid" src="images/foresightsports.png" alt="ForeSight Sports Logo0"> <img class="img-fluid" src="../src/images/foresightsports.png" alt="ForeSight Sports Logo0">
</div> </div>
<div class="description"> <div class="description">
<p>Foresight Sports creates advanced augmented reality sports experiences. I created multiple games <p>Foresight Sports creates advanced augmented reality sports experiences. I created multiple games

29
package-lock.json generated

@ -1211,6 +1211,35 @@
} }
} }
}, },
"@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",

@ -3,26 +3,27 @@
"version": "0.1.0", "version": "0.1.0",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@ant-design/icons": "^4.3.0",
"@testing-library/jest-dom": "^5.11.6", "@testing-library/jest-dom": "^5.11.6",
"@testing-library/react": "^11.2.2", "@testing-library/react": "^11.2.2",
"@testing-library/user-event": "^12.6.0", "@testing-library/user-event": "^12.6.0",
"@types/jest": "^26.0.19", "@types/jest": "^26.0.19",
"@types/masonry-layout": "^4.2.2",
"@types/node": "^12.19.11", "@types/node": "^12.19.11",
"@types/react": "^16.14.2", "@types/react": "^16.14.2",
"@types/react-dom": "^16.9.10", "@types/react-dom": "^16.9.10",
"@types/react-router-dom": "^5.1.7", "@types/react-router-dom": "^5.1.7",
"@types/masonry-layout": "^4.2.2",
"antd": "^4.9.4", "antd": "^4.9.4",
"react-router-dom": "^5.2.0", "include-media": "^1.4.9",
"masonry-layout": "^4.2.2",
"node-sass": "^4.14.1", "node-sass": "^4.14.1",
"prettier": "^2.2.1", "prettier": "^2.2.1",
"react": "^17.0.1", "react": "^17.0.1",
"react-dom": "^17.0.1", "react-dom": "^17.0.1",
"react-router-dom": "^5.2.0",
"react-scripts": "4.0.1", "react-scripts": "4.0.1",
"include-media": "^1.4.9",
"typescript": "^4.1.3", "typescript": "^4.1.3",
"web-vitals": "^0.2.4", "web-vitals": "^0.2.4"
"masonry-layout": "^4.2.2"
}, },
"scripts": { "scripts": {
"start": "react-scripts start", "start": "react-scripts start",

@ -1,5 +1,6 @@
import React from "react"; import React from "react";
import "./App.scss"; import "./App.scss";
import { Footer } from "./components/Footer";
import { Header } from "./components/Header"; import { Header } from "./components/Header";
import { Main } from "./components/Main"; import { Main } from "./components/Main";
@ -8,6 +9,7 @@ function App() {
<div className="App"> <div className="App">
<Header /> <Header />
<Main /> <Main />
<Footer />
</div> </div>
); );
} }

@ -0,0 +1,37 @@
.site-footer {
background: darkgrey;
margin: 10px;
border-radius: 5px;
h2 {
font-family: "Fira Code", monospace;
margin: 0;
}
p {
font-family: "Montserrat", sans-serif;
}
}
.footer-grid {
display: flex;
justify-content: space-evenly;
.footer-links {
padding-left: 0;
margin: 0;
columns: 100px 2;
li {
list-style: none;
}
a {
//color: black;
font-family: "Montserrat", sans-serif;
text-decoration: underline;
}
}
}

@ -0,0 +1,42 @@
import "./Footer.scss"
export const Footer = () => {
return (
<footer className="site-footer">
<div className="footer-grid">
<div className="blurb">
<p className="text-justify">
Made with and by Jake Cover, a CS student who really needs to find something
witty and interesting to put here soon. Feel free to reach out!
<br />
Checklist Icon by Arthur Shlain from the Noun Project
</p>
</div>
<div className="links-container">
<h2>Links and Stuff</h2>
<ul className="footer-links">
<li>
<a href="index.html">Home</a>
</li>
<li>
<a href="contact.html">Contact</a>
</li>
<li>
<a href="about.html">About</a>
</li>
<li>
<a href="resume.html">Resume</a>
</li>
<li>
<a href="https://github.com/JakeCover">GitHub</a>
</li>
</ul>
</div>
</div>
<hr />
<div className="copyright-text">
Copyright &copy; 2020 All Rights Reserved by Jake Cover
</div>
</footer>
);
};

@ -1,15 +1,6 @@
header { header {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-content: center;
:nth-child(2) {
margin-left: auto;
}
h2:last-of-type {
margin-right: 5px;
}
margin: 10px; margin: 10px;
padding: 10px; padding: 10px;
@ -22,7 +13,54 @@ header {
margin: 0 0 0 5px; margin: 0 0 0 5px;
} }
h2 { .headerLinks {
margin: 0 display: flex;
flex-direction: row;
align-content: center;
margin-left: auto;
h2 {
margin: 0;
border-radius: 5px;
&:hover {
background: #ddd;
}
&.active {
background-color: #4CAF50;
color: white;
}
}
h2:last-of-type {
margin-right: 5px;
}
/* Hide the link that should open and close the topnav on small screens */
.icon {
display: none;
}
@media screen and (max-width: 660px) {
h2 {
display: none;
}
.icon {
margin-left: auto;
display: block;
}
}
}
@media screen and (max-width: 660px) {
&.responsive {
background: #282c34;
h2 {
display: block;
}
}
} }
} }

@ -1,32 +1,51 @@
import React from "react"; import React from "react";
import "./Header.scss"; import "./Header.scss";
import {Button, Space, Typography} from "antd"; import { Space } from "antd";
import {Link} from "react-router-dom"; import { Link } from "react-router-dom";
import {MenuOutlined} from "@ant-design/icons";
const {Title} = Typography;
export const Header = () => { export const Header = () => {
return ( function showHideHamburger() {
<header> var x = document.getElementById("myHeader");
<Link to="/" className="navbar-brand"> // @ts-ignore
<h1>Jake Cover</h1> if (x.className === "header") {
</Link> // @ts-ignore
x.className += " responsive";
} else {
// @ts-ignore
x.className = "header";
}
}
<Space> return (
<Link className="nav-link" to="/"> <header className={"header"} id={"myHeader"}>
<h2>Home</h2> <Link to="/" className="navbar-brand">
</Link> <h1>Jake Cover</h1>
</Link>
<Link className="nav-link" to="/contact"> <Space className={"headerLinks"}>
<h2>Contact</h2> <Link className="nav-link" to="/">
</Link> <h2>Home</h2>
<Link className="nav-link" to="/resume"> </Link>
<h2>Resume</h2>
</Link> <Link className="nav-link" to="/contact">
<a className="nav-link" href="https://github.com/JakeCover"> <h2>Contact</h2>
<h2>GitHub</h2> </Link>
</a> <Link className="nav-link" to="/resume">
</Space> <h2>Resume</h2>
</header> </Link>
); <a className="nav-link" href="https://github.com/JakeCover">
<h2>GitHub</h2>
</a>
<a
href={void(0)}
className="icon"
onClick={() => showHideHamburger()}
>
<MenuOutlined className={"fa fa-bars"}/>
</a>
</Space>
</header>
);
}; };

@ -6,7 +6,8 @@ export const Home = () => {
<div id={"home"}> <div id={"home"}>
<div id={"about-me"}> <div id={"about-me"}>
<p> <p>
Hi! I'm Julie, a CS student from the west coast! Take a look at some of my projects below! 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> </p>
</div> </div>
<ProjectGrid/> <ProjectGrid/>

@ -20,13 +20,13 @@ $breakpoints: (x-small: 320px, small: 660px, medium: 900px, large: 1300px, x-lar
//padding: 10px; //padding: 10px;
@include media("<=x-small") { @include media("<=x-small") {
.GridSizer, .OneByOne, .FourByOne { .GridSizer, .OneWide, .FourByOne {
width: 100%; width: 100%;
} }
} }
@include media(">x-small", "<small") { @include media(">x-small", "<small") {
.GridSizer, .OneByOne { .GridSizer, .OneWide {
width: 49%; width: 49%;
} }
.FourByOne { .FourByOne {
@ -35,7 +35,7 @@ $breakpoints: (x-small: 320px, small: 660px, medium: 900px, large: 1300px, x-lar
} }
@include media(">=small", "<medium") { @include media(">=small", "<medium") {
.GridSizer, .OneByOne { .GridSizer, .OneWide {
width: 32%; width: 32%;
} }
.FourByOne { .FourByOne {
@ -44,7 +44,7 @@ $breakpoints: (x-small: 320px, small: 660px, medium: 900px, large: 1300px, x-lar
} }
@include media(">=medium", "<large") { @include media(">=medium", "<large") {
.GridSizer, .OneByOne { .GridSizer, .OneWide {
width: 24.5%; width: 24.5%;
} }
.FourByOne { .FourByOne {
@ -53,60 +53,112 @@ $breakpoints: (x-small: 320px, small: 660px, medium: 900px, large: 1300px, x-lar
} }
@include media(">=large", "<x-large") { @include media(">=large", "<x-large") {
.GridSizer, .OneByOne { .GridSizer, .OneWide {
max-width: 300px; max-width: 300px;
width: 19.5%; width: 19.5%;
} }
.FourByOne { .FourByOne {
width: 79.5%; width: 58.5%;
max-width: 1200px; max-width: 900px;
} }
} }
@include media(">=x-large") { @include media(">=x-large") {
.GridSizer, .OneByOne { .GridSizer, .OneWide {
width: 300px; width: 300px;
} }
.FourByOne { .FourByOne {
width: 1200px; width: 900px;
} }
} }
}
.GridElement {
padding: 5px;
.GridElementInternal {
padding: 9px;
border-radius: 5px;
background: lightcyan;
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);
}
h2 {
font-family: "Fira Code", monospace;
font-weight: 400;
margin-bottom: 0px;
line-height: normal;
}
h3 {
line-height: normal;
color: darkgrey;
margin-bottom: 3px;
}
p {
font-family: "Montserrat", sans-serif;
color: black;
margin-bottom: 0;
}
} }
.OneByOne { .OneWide {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
width: available; width: available;
padding: 10px;
img { img {
width: 100%; width: 100%;
} margin-bottom: 5px;
p {
} }
} }
.FourByOne { .FourByOne {
grid-column: span 2; .GridElementInternal {
display: flex; display: flex;
flex-direction: row; align-items: center;
.image { .image {
flex: 1; flex: 1;
img { img {
width: 100%; width: 100%;
max-width: 100%; max-width: 100%;
}
} }
}
p { .description {
min-width: 20ch; min-width: 20ch;
width: 30ch; width: 30ch;
}
@include media(">small") {
flex-direction: row;
}
@include media("<=small") {
flex-direction: column;
.description {
width: 95%;
}
}
} }
} }
.LinkIcon {
position: absolute;
right: 12px;
top: 12px;
font-size: 24px;
color: black;
background: rgba(224,255,255, 0.7);
border-radius: 5px;
}

@ -1,172 +1,256 @@
/**
* TODO:
* - For things that can't be linked, use <ExpandAltOutlined /> to signal that clicking will open a modal https://ant.design/components/modal/
* in order to give a more complex writeup and some pictures
* - Tooltip for modal and linkable items, possibly <QuestionCircleOutlined /> which displays a modal with an example card with tooltips or explanations
* - Footer
* - Responsive top bar
*
*/
import "./ProjectGrid.scss"; import "./ProjectGrid.scss";
import Masonry from "masonry-layout"; import Masonry from "masonry-layout";
import {useEffect} from "react"; import { useEffect } from "react";
import {LinkOutlined} from "@ant-design/icons";
import CodeDaySD from "../images/SanDiego.svg";
import Foresight from "../images/foresightsports.png";
import Distest from "../images/distest.svg";
import Scoresaver from "../images/scoresaver.svg";
type GridElementImageProps = { type GridElementImageProps = {
image_url: string; image_url: string;
image_alt: string; image_alt: string;
title: string; title: string;
text: string; text: string;
link?: string;
org?: string;
}; };
type GridElementProps = { type GridElementProps = {
image_url: string; title: string;
image_alt: string; text: string;
title: string; link?: string;
text: string; org?: string;
}; };
const OneWide = ({title, text}: GridElementProps) => { const OneWide = ({ title, text, link, org }: GridElementProps) => {
if (link === undefined) {
return ( return (
<div className={"OneByOne GridElement"}> <div className={"OneWide GridElement"}>
<div className={"title"}> <div className={"GridElementInternal"}>
<h2>{title}</h2> <div className={"title"}>
</div> <h2>{title}</h2>
<div className={"description"}> {org && <h3>{org}</h3>}
<p>{text}</p> </div>
</div> <div className={"description"}>
<p>{text}</p>
</div>
</div> </div>
</div>
); );
}
return (
<a className={"OneWide GridElement Link"} href={link} rel={"noreferrer"} target={"_blank"}>
<div className={"GridElementInternal"}>
<div className={"title"}>
<h2>{title}</h2>
{org && <h3>{org}</h3>}
<LinkOutlined className={"LinkIcon"}/>
</div>
<div className={"description"}>
<p>{text}</p>
</div>
</div>
</a>
);
}; };
const OneWidePic = ({ const OneWidePic = ({
image_url, image_url,
image_alt, image_alt,
title, title,
text, text,
}: GridElementImageProps) => { link,
org,
}: GridElementImageProps) => {
if (link === undefined) {
return ( return (
<div className={"OneByOne GridElement"}> <div className={"OneWide Pic GridElement"}>
<div className={"image"}> <div className={"GridElementInternal"}>
<img src={image_url} alt={image_alt}/> <div className={"image"}>
</div> <img src={image_url} alt={image_alt} />
<div className={"description"}> </div>
<h2>{title}</h2> <div className={"description"}>
<p>{text}</p> <h2>{title}</h2>
</div> {org && <h3>{org}</h3>}
<p>{text}</p>
</div>
</div> </div>
</div>
); );
}
return (
<a className={"OneWide Pic GridElement Link"} href={link} target={"_blank"} rel={"noreferrer"}>
<div className={"GridElementInternal"}>
<div className={"image"}>
<img src={image_url} alt={image_alt} />
<LinkOutlined className={"LinkIcon"}/>
</div>
<div className={"description"}>
<h2>{title}</h2>
{org && <h3>{org}</h3>}
<p>{text}</p>
</div>
</div>
</a>
);
}; };
const FourByOneGridElement = ({ const FourByOneGridElement = ({
image_url, image_url,
image_alt, image_alt,
title, title,
text, text,
}: GridElementImageProps) => { link,
org,
}: GridElementImageProps) => {
if (link === undefined) {
return ( return (
<div className={"FourByOne GridElement"}> <div className={"FourByOne GridElement"}>
<div className={"image"}> <div className={"GridElementInternal"}>
<img src={image_url} alt={image_alt}/> <div className={"image"}>
</div> <img src={image_url} alt={image_alt} />
<div className={"description"}> </div>
<h2>{title}</h2> <div className={"description"}>
<h2>{title}</h2>
<p>{text}</p> {org && <h3>{org}</h3>}
</div> <p>{text}</p>
</div>
</div> </div>
</div>
); );
}
return (
<a className={"FourByOne GridElement Link"} href={link} target={"_blank"} rel={"noreferrer"}>
<div className={"GridElementInternal"}>
<div className={"image"}>
<img src={image_url} alt={image_alt} />
<LinkOutlined className={"LinkIcon"}/>
</div>
<div className={"description"}>
<h2>{title}</h2>
{org && <h3>{org}</h3>}
<p>{text}</p>
</div>
</div>
</a>
);
}; };
export const ProjectGrid = () => { export const ProjectGrid = () => {
useEffect(() => { useEffect(() => {
var elem = document.querySelector("#project-grid"); var elem = document.querySelector("#project-grid");
// @ts-ignore // @ts-ignore
var msnry = new Masonry(elem, { var msnry = new Masonry(elem, {
itemSelector: ".GridElement", itemSelector: ".GridElement",
gutter: 5, gutter: 0,
columnWidth: ".GridSizer", columnWidth: ".GridSizer",
percentPosition: true, percentPosition: true,
});
}); });
});
return ( return (
<div id={"project-grid-parent"}> <div id={"project-grid-parent"}>
<div id={"project-grid"}> <div id={"project-grid"}>
<div className={"GridSizer"}/> <div className={"GridSizer"} />
<OneWidePic <OneWide
image_url={"http://jakecover.me/images/codedaysd.png"} title={"ElaticMatch"}
image_alt={"CodeDay San Diego Logo"} org={"CodeDay"}
title={"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."}
text={ link={"https://github.com/codeday/labs-elastic-match"}
"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." />
} <OneWide
/> title={"John Peter"}
<OneWidePic org={"CodeDay"}
image_url={"http://jakecover.me/images/codedaysd.png"} text={
image_alt={"CodeDay San Diego Logo"} "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."
title={"CodeDay"} }
text={ link={"https://github.com/codeday/johnpeter-discord"}
"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." />
} <OneWide
/> title={"CopyMoji"}
<OneWidePic org={"BetterDiscord"}
image_url={"http://jakecover.me/images/codedaysd.png"} text={
image_alt={"CodeDay San Diego Logo"} "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."
title={"CodeDay"} }
text={ link={"https://github.com/JakeCover/BetterDiscordExtensions/tree/main/plugins/CopyMoji"}
"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={CodeDaySD}
<OneWidePic image_alt={"CodeDay San Diego Logo"}
image_url={"http://jakecover.me/images/codedaysd.png"} org={"CodeDay"}
image_alt={"CodeDay San Diego Logo"} title={"CodeDay San Diego"}
title={"CodeDay"} text={
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."
"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." }
} link={"https://event.codeday.org/sandiego"}
/> />
<FourByOneGridElement <FourByOneGridElement
image_url={"http://jakecover.me/images/foresightsports.png"} image_url={Foresight}
image_alt={"Foresight Sports Logo"} image_alt={"Foresight Sports Logo"}
title={"Foresight Sports"} title={"Foresight Sports"}
text={ 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." "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 <OneWidePic
image_url={"http://jakecover.me/images/codedaysd.png"} image_url={Distest}
image_alt={"CodeDay San Diego Logo"} image_alt={"Distest Logo"}
title={"CodeDay"} title={"Distest"}
text={ org={"Random Projects"}
"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." 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={"http://jakecover.me/images/codedaysd.png"} <OneWidePic
image_alt={"CodeDay San Diego Logo"} image_url={Scoresaver}
title={"CodeDay"} image_alt={"Scoresaver Logo"}
text={ title={"ScoreSaver"}
"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." 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!"
<OneWidePic }
image_url={"http://jakecover.me/images/codedaysd.png"} link={"https://github.com/JakeCover/ScoreSaverExtention"}
image_alt={"CodeDay San Diego Logo"} />
title={"CodeDay"} <OneWide
text={ title={"Personal Website"}
"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." 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."
<OneWidePic }
image_url={"http://jakecover.me/images/codedaysd.png"} link={"https://github.com/JakeCover/PersonalWebsite_Static"}
image_alt={"CodeDay San Diego Logo"} />
title={"CodeDay"} <OneWidePic
text={ image_url={"http://jakecover.me/images/codedaysd.png"}
"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." image_alt={"CodeDay San Diego Logo"}
} title={"CodeDay"}
/> text={
<OneWidePic "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."
image_url={"http://jakecover.me/images/codedaysd.png"} }
image_alt={"CodeDay San Diego Logo"} />
title={"CodeDay"} <OneWidePic
text={ image_url={"http://jakecover.me/images/codedaysd.png"}
"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." image_alt={"CodeDay San Diego Logo"}
} title={"CodeDay"}
/> text={
</div> "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>
);
}; };

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Before

Width:  |  Height:  |  Size: 429 KiB

After

Width:  |  Height:  |  Size: 429 KiB

Before

Width:  |  Height:  |  Size: 3.3 MiB

After

Width:  |  Height:  |  Size: 3.3 MiB

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Loading…
Cancel
Save