diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..03e373d --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +react_OLD +.venv +.vscode +.git +.git* +__pycache__ \ No newline at end of file diff --git a/.gitignore b/.gitignore index 987ae8e..14717bd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ .venv __pycache__ -srcReact notes.txt \ No newline at end of file diff --git a/react_OLD/.gitattributes b/react_OLD/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/react_OLD/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/react_OLD/.gitignore b/react_OLD/.gitignore new file mode 100644 index 0000000..b737a53 --- /dev/null +++ b/react_OLD/.gitignore @@ -0,0 +1,26 @@ +site + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* + + +notes.txt \ No newline at end of file diff --git a/react_OLD/Dockerfile b/react_OLD/Dockerfile new file mode 100644 index 0000000..b4709d3 --- /dev/null +++ b/react_OLD/Dockerfile @@ -0,0 +1,24 @@ +# pull official base image +FROM node:13.12.0-alpine + +# set working directory +WORKDIR /app + +# add `/app/node_modules/.bin` to $PATH +ENV PATH /app/node_modules/.bin:$PATH + +# install app dependencies +COPY package.json ./ +COPY package-lock.json ./ +RUN npm install --silent +RUN npm install react-scripts@3.4.1 -g --silent + +RUN mkdir node_modules/.cache && chmod -R 777 node_modules/.cache + + +# add app +COPY . ./ +ENV PORT=8080 + +# start app +CMD ["npm", "start"] diff --git a/react_OLD/public/.htaccess b/react_OLD/public/.htaccess new file mode 100644 index 0000000..9fcf23f --- /dev/null +++ b/react_OLD/public/.htaccess @@ -0,0 +1,6 @@ +# 301 REDIRECT WWW TO NON-WWW + +RewriteEngine On +RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] +RewriteRule ^(.*)$ http://%1/$1 [R=301,L] + \ No newline at end of file diff --git a/react_OLD/public/CNAME b/react_OLD/public/CNAME new file mode 100644 index 0000000..0bdd7d6 --- /dev/null +++ b/react_OLD/public/CNAME @@ -0,0 +1,2 @@ +asimonson.com +www.asimonson.com \ No newline at end of file diff --git a/react_OLD/public/Resume.pdf b/react_OLD/public/Resume.pdf new file mode 100644 index 0000000..38a0aa1 Binary files /dev/null and b/react_OLD/public/Resume.pdf differ diff --git a/react_OLD/public/_config.yml b/react_OLD/public/_config.yml new file mode 100644 index 0000000..c87a61e --- /dev/null +++ b/react_OLD/public/_config.yml @@ -0,0 +1 @@ +theme: minima \ No newline at end of file diff --git a/react_OLD/public/favicon.ico b/react_OLD/public/favicon.ico new file mode 100644 index 0000000..55d7672 Binary files /dev/null and b/react_OLD/public/favicon.ico differ diff --git a/react_OLD/public/index.html b/react_OLD/public/index.html new file mode 100644 index 0000000..9433416 --- /dev/null +++ b/react_OLD/public/index.html @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + Simonson - Portfolio + + + + +
+ + diff --git a/react_OLD/public/lol.jpg b/react_OLD/public/lol.jpg new file mode 100644 index 0000000..fc57ded Binary files /dev/null and b/react_OLD/public/lol.jpg differ diff --git a/react_OLD/public/manifest.json b/react_OLD/public/manifest.json new file mode 100644 index 0000000..080d6c7 --- /dev/null +++ b/react_OLD/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/react_OLD/public/readme-stats-vercel-01-25-2023.svg b/react_OLD/public/readme-stats-vercel-01-25-2023.svg new file mode 100644 index 0000000..353531c --- /dev/null +++ b/react_OLD/public/readme-stats-vercel-01-25-2023.svg @@ -0,0 +1,142 @@ + + + + + + + + + + + + + Most Used Languages + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JavaScript 42.78% + + + + + + + C++ 21.15% + + + + + + + Python 16.57% + + + + + + + HTML 11.23% + + + + + + + CSS 8.27% + + + + + + + + + \ No newline at end of file diff --git a/react_OLD/public/robots.txt b/react_OLD/public/robots.txt new file mode 100644 index 0000000..35e4ebf --- /dev/null +++ b/react_OLD/public/robots.txt @@ -0,0 +1,4 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: /404/ +Sitemap: https://asimonson.com/sitemap.xml \ No newline at end of file diff --git a/react_OLD/public/sitemap.xml b/react_OLD/public/sitemap.xml new file mode 100644 index 0000000..8fc4dbd --- /dev/null +++ b/react_OLD/public/sitemap.xml @@ -0,0 +1,10 @@ + + + + https://asimonson.com + https://asimonson.com/about + https://asimonson.com/projects + https://asimonson.com/Resume + 2022-06-04 + + \ No newline at end of file diff --git a/react_OLD/src/App.js b/react_OLD/src/App.js new file mode 100644 index 0000000..b9f349d --- /dev/null +++ b/react_OLD/src/App.js @@ -0,0 +1,56 @@ +import { Route, Link, Routes, BrowserRouter as Router, Navigate } from "react-router-dom"; + +import "./assets/css/App.css"; +import "./assets/css/checkbox.css" +import "./assets/css/head.scss"; +import menu from "./assets/icons/menu.svg"; +import Nav from "./componets/Nav.js"; +import Socials from "./componets/Socials.js"; +import Name from "./componets/Name.js"; +import Home from "./pages/Home.js"; +import Projects from "./pages/Projects"; +import Activities from "./pages/Activities"; +import AboutMe from "./pages/AboutMe"; +import Idler from "./componets/Idler"; +import ErrorNotFound from "./pages/Error"; +import AOS from "aos"; +// import 'aos/dist/aos.css'; // You can also use for styles +import { toggleMenu } from "./scripts/responsive"; + +AOS.init(); +function App() { + return ( + + +
+
+ + menu + +
+ + {/* } /> */} + }> + }> + }> + }> + } /> + } /> + +
+ +
+
+
+ ); +} + +export default App; diff --git a/react_OLD/src/assets/chesscom-embed/default.svg b/react_OLD/src/assets/chesscom-embed/default.svg new file mode 100644 index 0000000..926b604 --- /dev/null +++ b/react_OLD/src/assets/chesscom-embed/default.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/react_OLD/src/assets/chesscom-embed/diamonds.png b/react_OLD/src/assets/chesscom-embed/diamonds.png new file mode 100644 index 0000000..95ebe03 Binary files /dev/null and b/react_OLD/src/assets/chesscom-embed/diamonds.png differ diff --git a/react_OLD/src/assets/css/App.css b/react_OLD/src/assets/css/App.css new file mode 100644 index 0000000..11d2e4c --- /dev/null +++ b/react_OLD/src/assets/css/App.css @@ -0,0 +1,894 @@ +@import "~react-image-gallery/styles/css/image-gallery.css"; + +@font-face { + font-family: "neon-future"; + src: url("../fonts/Neon\ Future.ttf") +} + +@font-face { + font-family: "starixo"; + src: url("../fonts/Starixo.otf") +} + +@font-face { + font-family: "independent"; + src: url("../fonts/INDEPENDENT.ttf") +} + +@font-face { + font-family: "sunset-club"; + src: url("../fonts/SunsetClub.otf") +} + +@font-face { + font-family: "robotoreg"; + src: url("../fonts/RobotoCondensed-Regular.ttf") +} + +html, body { + overflow-x: hidden; +} + +body { + margin: 0; + /* background-image: url('../photos/plexus.jpg'); */ + /*url('https://i.pinimg.com/originals/d6/c3/ac/d6c3ac09021dbc0cda8ee27837d2c795.png')*/ + background-attachment: fixed; + background-size: 100% auto; + background-clip: border-box; +} + +* { + font-family: "Roboto Condensed", sans-serif; +} + +#menu { + height: 2rem; + display: none; + filter: brightness(0) saturate(100%) invert(72%) sepia(0%) saturate(1%) hue-rotate(151deg) brightness(95%) contrast(86%); + float: right; + margin-right: 1rem; + margin-top: .25rem; + cursor: pointer; +} + +h1, h2 { + color: #ecebeb; +} + +h2 { + font-size: 2rem; + margin-top: 1rem; + margin-bottom: 2rem; +} + +h3, h4 { + color: #a8a8a8; +} + +strong { + color: #ecebeb; +} + +p, li { + color: rgb(212, 212, 212); + font-size: 1rem; +} + +a { + color: #a0a0a0a0; + text-decoration: none; +} + +.header h1 { + display: inline-block; + transition: .4s; + margin-bottom: 0px; + margin-top: .5rem; + margin-left: 1rem; + font-size: 2rem; +} + +.header { + margin-bottom: 0px; + margin-left: 0rem; + background-color: #1a1a1a; + width: 100%; + z-index: 99; + position: fixed; + top: 0; + left: 0; + transition: .4s; + overflow: hidden; +} + +#name-container { + display: inline; +} + +.name { + display: inline; + background: url("../../assets/photos/sun.png") 0/5rem no-repeat; + background-size: contain; + padding-left: 5.5rem; +} + +.glitch { + display: inline; +} + +.textGrad { + font-family: "sunset-club" !important; +} + +.navControl { + transition: .4s; +} + +.navBar { + display: flex; + justify-content: space-between; + padding-left: 0px; + margin: 0px; + width: 100%; +} + +.navElement { + border: solid black .2rem; + width: 25vw; + text-align: center; + font-size: 1.2rem; + font-size: 1rem; + background-color: rgb(156, 49, 45, .4); +} + +.navElement:hover { + background-color: rgb(156, 49, 45, .8); +} + +.navElement * { + color: white; + margin: 0px; + display: block; + padding-top: .3rem; + padding-bottom: .3rem; + transition: .4s; +} + +#home { + /* height: 100vh; */ + overflow-y: hidden; +} + +.concentratedHead { + display: inline-block; + padding-right: 4rem; + border-bottom: #0f0f0f solid 5px; + color: white; +} + +.foreground { + position: relative; + padding-top: 7rem; + padding-left: 8rem; + width: calc(100%-8rem); + min-height: calc(100vh - 8rem); + background-color: rgb(44, 44, 44, .85); + padding-bottom: 1rem; + overflow: hidden; + transition: .4s; +} + +.foreground p { + line-height: 1.5em; + max-width: min(90%, 40rem); +} + +.homeground { + position: relative; + padding-top: 7rem; + min-height: calc(100vh - 8rem); + padding-bottom: 1rem; + overflow: hidden; + transition: .4s; +} + +.noBackground { + background: none; +} + +.relative { + position: relative; +} + +.noPad { + padding-left: 0px !important; + padding-right: 0px !important; +} + +.centerContent { + position: absolute; + top: 0; + left: 0; + width: 100vw; + height: 100vh; +} + +.centerContent>div { + margin-top: 30vh; + margin-left: auto; + margin-right: auto; + text-align: center; +} + +#HomeContent { + padding: 3rem; + display: inline-block; + background-color: rgb(44, 44, 44, .75); + border: solid black 4px; + text-align: center; +} + +.flex { + display: flex; + justify-content: space-around; +} + +.vFlex { + display: flex; + flex-direction: column; + height: 100%; +} + +.spaceBetween { + justify-content: space-between; +} + +.start { + justify-content: left; +} + +.onRight { + position: absolute; + right: 0; + top: 0; + max-width: 100vw; +} + +.onRight > * { + margin: auto; +} + +.bgi { + background-size: contain; + background-repeat: no-repeat; + background-position-y: center; + opacity: 0.4; + height: 100%; + width: 100%; + position: absolute; + z-index: 0; +} + +#Vertical { + margin-left: auto; + margin-right: auto; + width: 0; + height: 3rem; + border-right: rgb(156, 49, 45) solid 1px; +} + +.sideimg { + float: right; + top: 0; + right: 0; + display: block; + max-width: min(40rem, 80%); + max-height: min(30rem, 100%); +} + +.col { + float: left; + margin-right: 3rem; + width: calc(50% - 3rem); +} + +.boxedImg { + border: .5rem solid rgba(22, 22, 22, .8); + max-width: calc(90% - 1rem); + display: block; + margin-left: auto; + margin-right: auto; +} + +.carousel-container { + margin-left: 10%; + max-width: 80%; +} + +.elementBlock { + margin-top: 3rem; +} + +.skills { + display: inline-block; + background-color: rgba(0, 0, 0, 0.3); + border: solid rgba(156, 49, 45, .8) .3rem; + text-align: center; + padding: 1rem; +} + +.skill { + display: inline-block; + border: rgba(156, 49, 45, .8) solid .15rem; + padding: .2rem; + margin: .5rem; + background-color: rgba(11, 11, 11, .8); + color: rgb(212, 212, 212); +} + +#skillList { + color: white; + display: flex; + flex-wrap: wrap; +} + +#skillDisp { + width: 30em; + position: relative; +} + +#skillDisp::after { + background-repeat: no-repeat; + background-size: contain; + background-position: right top; + opacity: .2; + position: absolute; + height: 60%; + width: 100%; + top: 0; + right: 0; + content: ""; + z-index: -1; +} + +#skillDisp.python::after { + background-image: url('https://upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Python-logo-notext.svg/1200px-Python-logo-notext.svg.png') +} + +#skillDisp.js::after { + background-image: url('https://external-content.duckduckgo.com/iu/?u=http%3A%2F%2F3.bp.blogspot.com%2F-PTty3CfTGnA%2FTpZOEjTQ_WI%2FAAAAAAAAAeo%2FKeKt_D5X2xo%2Fs1600%2Fjs.jpg&f=1&nofb=1&ipt=c8ae673676226ae40a5cd1408a5c7607e6b9725025888f4994a705309a16d1c3&ipo=images') +} + +#skillDisp.html::after { + background-image: url('https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Flogos-download.com%2Fwp-content%2Fuploads%2F2017%2F07%2FHTML5_badge.png&f=1&nofb=1&ipt=db644f64f96f334aad37d31dc1c9dab28021476f6effaa0cb682297f8fd14240&ipo=images') +} + +#skillDisp.sql::after { + background-image: url('https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fcdn3.iconfinder.com%2Fdata%2Ficons%2Fbasicolor-computer-tech%2F24%2F091_database_data_sql-512.png&f=1&nofb=1&ipt=cffc17203486b92c9733b992733e6934c03f984bc530c94b75bed278bc73477d&ipo=images') +} + +#skillDisp.cpp::after { + background-image: url('https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fen.nokiawroclaw.pl%2Fwp-content%2Fuploads%2Fsites%2F5%2F2018%2F11%2Fcpp_logo.png&f=1&nofb=1&ipt=5fc23951b00bcbdec1977f3bc4591a7b8511ab29f5982963c541526902c0b4fd&ipo=images') +} + +#skillDisp.other::after { + background-image: url('https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fcdn.freebiesupply.com%2Flogos%2Flarge%2F2x%2Fgit-icon-logo-png-transparent.png&f=1&nofb=1&ipt=834c5a11f63e26429713be2b7d9c9d1e45ce53d771862b9ab49bc35571513894&ipo=images') +} + +#skillDisp.tools::after { + background-image: url('https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fimages.g2crowd.com%2Fuploads%2Fproduct%2Fimage%2Flarge_detail%2Flarge_detail_64636a5c446c22391d4ed719e0987cd2%2Farcgis-pro.png&f=1&nofb=1&ipt=812a2905dd03e5c68f55a9f095bfe7a54feb801bf7f3f11cc01352f45f8a4f8d&ipo=images') +} + +.hex-wrapper { + display: flex; + flex-direction: column; + margin-top: 50px; +} + +.hex-row { + display: flex; +} + +.hex { + width: 100px; + height: 100px; + position: relative; + margin: 0px 5px; +} + +.hex:hover { + transform: scaleX(1.1) scaleY(1.1); +} + +.hex>* { + position: absolute; +} + +.hex-odd { + margin: 0px 55px; +} + +.hex-border { + border-left: solid black 3px; + border-right: solid black 3px; + width: 100%; + height: 58%; +} + +.hex>.hex-border:nth-child(1) { + rotate: 60deg; +} + +.hex>.hex-border:nth-child(2) { + rotate: 120deg; +} + +.projectList { + padding: 0px; + display: flex; + flex-wrap: wrap; + justify-content: center; + margin-left: auto; + margin-right: auto; + width: 100%; + text-align: center; +} + +.project { + display: inline-block; + text-align: left; + margin: 1rem; + width: 20rem; + height: 22rem; + border: .3rem rgba(156, 49, 45, .8) solid; + background-color: rgba(22, 22, 22, .8); + transition: .3s; + overflow: hidden; +} + +.projTitle > * { + margin-bottom: 0; +} + +.projBody { + position: relative; + z-index: 3; +} + +.project .topBox, .project .bottomBox, .project .projTitle { + padding: 0 1rem; + z-index: inherit; +} + +.backedBody { + background-color: #1a1a1a; + padding: .25em; +} + +.tab { + display: inline; + float: right; +} + +.project h3 { + display: inline-block; + border-bottom: black solid .2rem; +} + +.project img { + margin-top: auto; + height: 3rem; +} + +.bottomBox a, .placeholding { + vertical-align: middle; + display: inline; + text-align: left; + height: unset; +} + +.project a img, .project a p { + padding: .5rem; + filter: invert(100%) sepia(0%) saturate(1%) hue-rotate(52deg) brightness(106%) contrast(101%); +} + +.project a img:hover, .project a p:hover { + filter: invert(66%) sepia(0%) saturate(3964%) hue-rotate(99deg) brightness(100%) contrast(105%); +} + +.incomplete { + color: red; +} + +.WIP { + color: yellow; +} + +.complete { + color: green; +} + +.footer { + position: fixed; + bottom: 0; + left: 0; +} + +.socials { + margin-left: 1rem; + width: 0px; +} + +.socials img { + height: 2rem; + margin-bottom: 1rem; + filter: invert(29%) sepia(20%) saturate(1786%) hue-rotate(314deg) brightness(101%) contrast(110%); + transition: .2s; +} + +.socials img:hover { + opacity: .5; +} + +#vertLine { + border-right: 1px solid rgb(156, 49, 45); + margin-left: 1rem; + height: 10rem; +} + +.neon { + display: inline-block; + font-family: "neon-future"; + color: #fff; + text-shadow: 0 0 7px #fff, 0 0 10px #fff, 0 0 21px #fff, 0 0 42px #5271ff, + 0 0 82px #5271ff, 0 0 92px #5271ff, 0 0 102px #5271ff, 0 0 151px #5271ff; + animation: pulsate 0.11s ease-in-out infinite alternate; +} + +.neonBox h1 { + font-size: min(4em, 12vw); +} + +.neonBox h3 { + font-size: min(2em, 6vw); +} + +.neonBox { + border: 0.2rem solid #fff; + border-radius: 2rem; + padding: 2em; + margin: 2em; + box-shadow: 0 0 0.2rem #fff, 0 0 0.2rem #fff, 0 0 2rem #5271ff, + 0 0 0.8rem #5271ff, 0 0 2.8rem #5271ff, inset 0 0 1.3rem #5271ff; + background-image: url('https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fwww.thedermacompany.co.uk%2Fwp-content%2Fuploads%2F2020%2F11%2Fblack-brick-scaled.jpg&f=1&nofb=1&ipt=d10be6df79141da1b4ec0c725575cef0f7b67e957e391662226d66cff02d25e6&ipo=images'); + /* background-blend-mode: ; */ + text-align: center; +} + +@keyframes pulsate { + 100% { + text-shadow: 0 0 4px #fff, 0 0 11px #fff, 0 0 19px #fff, + 0 0 40px #5271ff, 0 0 80px #5271ff, 0 0 90px #5271ff, + 0 0 100px #5271ff, 0 0 150px #5271ff; + } + + 0% { + text-shadow: 0 0 4px #fff, 0 0 10px #fff, 0 0 18px #fff, + 0 0 38px #5271ff, 0 0 73px #5271ff, 0 0 80px #5271ff, 0 0 94px #5271ff, + 0 0 140px #5271ff; + } +} + +@keyframes swipeIn { + 100% { + opacity: 1; + transform: translateX(0); + } + + 0% { + opacity: 0; + transform: translateX(100px); + } +} + +.swipeIn { + animation: swipeIn 1s 1; +} + +.fPage { + height: 100vh; + width: 100%; + display: flex; + position: absolute; + justify-content: center; + background-position: center; + background-repeat: no-repeat; + background-size: cover; +} + +.heightBox { + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; +} + +.chess { + width: 300px; + border: none; + /* transform: scale(.8); + float: right; */ +} + +#chessProfile { + border-radius: 5px; + width: 300px; + height: calc(125px + 2em); + color: #AAAAAA; + display: grid; + grid-template-columns: 1fr 1fr; + cursor: pointer; +} + +.chessInfo { + background-color: rgba(0, 0, 0, .3); + ; + margin: 1em; +} + +.bottomtext { + font-size: x-small; + margin: 3px; + color: white; + text-align: right; +} + +.black { + background-color: black; +} + +.identity { + margin-right: 0px; +} + +.identity h5 { + margin: 0px; + margin-top: -25px; + background: black; + z-index: 50; + position: relative; + width: 90%; + margin-left: 10px; + +} + +.pfpContainer { + display: flex; + justify-content: center; + height: 100%; +} + +.pfpContainer>div { + display: flex; + flex-direction: column; + justify-content: center; +} + +.pfp { + border-radius: 50%; + width: 100px; + text-align: center; +} + +.vContainer { + display: flex; + flex-direction: column; + max-height: 100%; + max-width: 100%; +} + +.vItem { + display: inline-block; +} + +.vItem p { + margin: 0px; + display: inline; +} + +.chessIcon { + display: inline-block; + font-family: Chess New; + font-size: x-large; + width: 25px; + text-align: center; +} + +.rapid { + color: #6c9d41; +} + +.blitz { + color: #f7c045; +} + +.bullet { + color: #a58a45; +} + +.puzzles { + color: #db7e3b; +} + +.timeitem { + transition: .4s; + overflow-y: clip; + height: auto; + max-height: 500px; +} + +.timeitem a { + color: inherit; + font-family: inherit; + font-size: inherit; + text-decoration: underline; +} + +.timeline-item{ + border-left: solid #AAAAAA 3px; +} + +.timeline-item h2{ + margin-top: 0px; + margin-left: .5em; + font-family: robotoreg; +} + +.timeline-item p{ + margin-bottom: 0px; + padding-bottom: 2em; + padding-left: 3em; + font-family: robotoreg; +} + +/* .timeline-item::before{ + content: ""; + background-color: red; + border: solid black 3px; + border-radius: 100%; + padding: 5px; + position: absolute; + margin-left: -8px; +} */ + +.datetext { + margin: .25em; + font-size: small; + margin-left: -1.5em; + font-family: robotoreg; +} + +@font-face { + font-family: Chess New; + src: url('https://www.chess.com/bundles/web/fonts/chessglyph-new.0cc8115c.woff2'); +} + +@media screen and (max-width: 1200px) { + + #menu { + display: unset; + } + + .header { + background-color: #1a1a1a; + border-bottom: solid 3px rgb(156, 49, 45, .4); + } + + .header h1 { + font-size: 1.5rem; + } + + .navBar { + flex-direction: column; + } + + .navElement { + width: 100vw; + } + + .navControl { + max-height: 0px; + } + + .projectList { + width: 95%; + } + + .sideimg { + position: relative; + } + + body { + background-size: auto 100%; + } + + .foreground { + width: 100%; + padding-left: 2rem; + /* centered objects will need to remove 1.5 of this to center */ + padding-right: .5rem; + padding-bottom: 36px; + } + + .homeground { + width: 90%; + padding-bottom: 36px; + display: flex; + margin: auto; + overflow: visible; + } + + .centeredForeground { + margin-left: -1.5rem; + /* remove .foreground excess margin */ + } + + .onRight { + position: unset; + margin-top: 3rem; + } + + .col { + width: 90%; + margin-bottom: 3rem; + } + + #aboutMe { + float: none; + display: block; + width: 90%; + } + + #skills { + float: none; + margin-right: auto; + display: block; + width: 90%; + } + + .footer { + position: relative; + width: 100%; + display: inline-block; + background-color: rgb(156, 49, 45); + } + + .socials { + display: flex; + justify-content: space-around; + padding-top: .5rem; + padding-bottom: .5rem; + margin-right: auto; + margin-left: auto; + width: min(100vw, 400px); + } + + .socials * { + display: inline; + text-align: center; + padding-left: 0px; + padding-right: 0px; + } + + .socials img { + height: 2rem; + margin-bottom: 0px; + filter: none; + } + + #vertLine { + display: none; + height: 0px; + } +} \ No newline at end of file diff --git a/react_OLD/src/assets/css/checkbox.css b/react_OLD/src/assets/css/checkbox.css new file mode 100644 index 0000000..326f863 --- /dev/null +++ b/react_OLD/src/assets/css/checkbox.css @@ -0,0 +1,70 @@ +.hidden { + display: none; +} + +.hiddenup { + max-height: 0px !important; +} + +.checkbox-wrapper > div { + display: inline-block; + margin-right: 1em; + margin-bottom: 1em; +} + +.checkbox-wrapper > div:last-child { + margin-bottom: 0;; +} + +.checkbox-wrapper .switch { + display: flex; + position: relative; + cursor: pointer; +} + +.checkbox-wrapper .switch > * { + align-self: center; +} + +.checkbox-wrapper .switch input { + display: none; +} + + +.checkbox-wrapper .slider { + background-color: #ccc; + transition: 0.4s; + height: 34px; + width: 60px; +} + +.checkbox-wrapper .slider:before { + background-color: #fff; + bottom: 4px; + content: ""; + height: 26px; + left: 4px; + position: absolute; + transition: 0.4s; + width: 26px; +} + +.checkbox-wrapper input:checked+.slider { + background-color: #66bb6a; +} + +.checkbox-wrapper input:checked+.slider:before { + transform: translateX(26px); +} + +.checkbox-wrapper .slider.round { + border-radius: 34px; +} + +.checkbox-wrapper .slider.round:before { + border-radius: 50%; +} + +.checkbox-wrapper strong { + margin-left: .5em; +} diff --git a/react_OLD/src/assets/css/head.scss b/react_OLD/src/assets/css/head.scss new file mode 100644 index 0000000..b9abb8f --- /dev/null +++ b/react_OLD/src/assets/css/head.scss @@ -0,0 +1,60 @@ +.line { + &:not(:first-child) { + position: absolute; + top: 0; + left: 0; + } + + @for $i from 1 through 10 { + &:nth-child(#{$i}) { + animation: + clip 6000ms $i * -600ms linear infinite, + glitch#{$i} 2500ms random(1000) * -1ms linear infinite; + + @keyframes glitch#{$i} { + 0% { + transform: translateX(0); + } + 96% { + transform: translateX(0); + color: #fff; + } + 97% { + transform: translateX(random(10) - 5px); + color: #4E9A26; + } + 98% { + transform: translateX(random(10) - 5px); + color: #AC1212; + } + 99% { + transform: translateX(random(10) - 5px); + color: #fff; + } + 100% { + transform: translateX(0); + } + } + } + } +} + +@keyframes clip { + 0% { + clip-path: polygon( + 0 100%, + 100% 100%, + 100% 120%, + 0 120% + ); + } + + 100% { + clip-path: polygon( + 0 -20%, + 100% -20%, + 100% 0%, + 0 0 + ); + } +} diff --git a/react_OLD/src/assets/fonts/INDEPENDENT.ttf b/react_OLD/src/assets/fonts/INDEPENDENT.ttf new file mode 100644 index 0000000..98356f3 Binary files /dev/null and b/react_OLD/src/assets/fonts/INDEPENDENT.ttf differ diff --git a/react_OLD/src/assets/fonts/Neon Future.ttf b/react_OLD/src/assets/fonts/Neon Future.ttf new file mode 100644 index 0000000..ef61e4a Binary files /dev/null and b/react_OLD/src/assets/fonts/Neon Future.ttf differ diff --git a/react_OLD/src/assets/fonts/RobotoCondensed-Regular.ttf b/react_OLD/src/assets/fonts/RobotoCondensed-Regular.ttf new file mode 100644 index 0000000..17e8ea5 Binary files /dev/null and b/react_OLD/src/assets/fonts/RobotoCondensed-Regular.ttf differ diff --git a/react_OLD/src/assets/fonts/Starixo.otf b/react_OLD/src/assets/fonts/Starixo.otf new file mode 100644 index 0000000..2b7f38e Binary files /dev/null and b/react_OLD/src/assets/fonts/Starixo.otf differ diff --git a/react_OLD/src/assets/fonts/SunsetClub.otf b/react_OLD/src/assets/fonts/SunsetClub.otf new file mode 100644 index 0000000..e80988e Binary files /dev/null and b/react_OLD/src/assets/fonts/SunsetClub.otf differ diff --git a/react_OLD/src/assets/icons/email.svg b/react_OLD/src/assets/icons/email.svg new file mode 100644 index 0000000..7fef27b --- /dev/null +++ b/react_OLD/src/assets/icons/email.svg @@ -0,0 +1,10 @@ + +Created with Fabric.js 1.7.22 + + + + + + + + \ No newline at end of file diff --git a/react_OLD/src/assets/icons/github.svg b/react_OLD/src/assets/icons/github.svg new file mode 100644 index 0000000..bf9fbba --- /dev/null +++ b/react_OLD/src/assets/icons/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/react_OLD/src/assets/icons/globe.svg b/react_OLD/src/assets/icons/globe.svg new file mode 100644 index 0000000..ac79245 --- /dev/null +++ b/react_OLD/src/assets/icons/globe.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/react_OLD/src/assets/icons/instagram.svg b/react_OLD/src/assets/icons/instagram.svg new file mode 100644 index 0000000..80542ae --- /dev/null +++ b/react_OLD/src/assets/icons/instagram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/react_OLD/src/assets/icons/linkedin.svg b/react_OLD/src/assets/icons/linkedin.svg new file mode 100644 index 0000000..b076257 --- /dev/null +++ b/react_OLD/src/assets/icons/linkedin.svg @@ -0,0 +1,10 @@ + +Created with Fabric.js 1.7.22 + + + + + + + + \ No newline at end of file diff --git a/react_OLD/src/assets/icons/menu.svg b/react_OLD/src/assets/icons/menu.svg new file mode 100644 index 0000000..562f644 --- /dev/null +++ b/react_OLD/src/assets/icons/menu.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/react_OLD/src/assets/photos/AcademicTeam.jpg b/react_OLD/src/assets/photos/AcademicTeam.jpg new file mode 100644 index 0000000..3cc0ad8 Binary files /dev/null and b/react_OLD/src/assets/photos/AcademicTeam.jpg differ diff --git a/react_OLD/src/assets/photos/WeThePeople.jpg b/react_OLD/src/assets/photos/WeThePeople.jpg new file mode 100644 index 0000000..0e92ca3 Binary files /dev/null and b/react_OLD/src/assets/photos/WeThePeople.jpg differ diff --git a/react_OLD/src/assets/photos/WeThePeople_Districts.jpg b/react_OLD/src/assets/photos/WeThePeople_Districts.jpg new file mode 100644 index 0000000..53eac4d Binary files /dev/null and b/react_OLD/src/assets/photos/WeThePeople_Districts.jpg differ diff --git a/react_OLD/src/assets/photos/WeThePeople_NationalsSetup.jpg b/react_OLD/src/assets/photos/WeThePeople_NationalsSetup.jpg new file mode 100644 index 0000000..413a31d Binary files /dev/null and b/react_OLD/src/assets/photos/WeThePeople_NationalsSetup.jpg differ diff --git a/react_OLD/src/assets/photos/ceoOfYugo.png b/react_OLD/src/assets/photos/ceoOfYugo.png new file mode 100644 index 0000000..0c13e30 Binary files /dev/null and b/react_OLD/src/assets/photos/ceoOfYugo.png differ diff --git a/react_OLD/src/assets/photos/chessbed.png b/react_OLD/src/assets/photos/chessbed.png new file mode 100644 index 0000000..0400d6d Binary files /dev/null and b/react_OLD/src/assets/photos/chessbed.png differ diff --git a/react_OLD/src/assets/photos/geovisF.png b/react_OLD/src/assets/photos/geovisF.png new file mode 100644 index 0000000..172189e Binary files /dev/null and b/react_OLD/src/assets/photos/geovisF.png differ diff --git a/react_OLD/src/assets/photos/hagerstownVex2019.jpg b/react_OLD/src/assets/photos/hagerstownVex2019.jpg new file mode 100644 index 0000000..0cff15a Binary files /dev/null and b/react_OLD/src/assets/photos/hagerstownVex2019.jpg differ diff --git a/react_OLD/src/assets/photos/itsa_me.JPG b/react_OLD/src/assets/photos/itsa_me.JPG new file mode 100644 index 0000000..6cd7514 Binary files /dev/null and b/react_OLD/src/assets/photos/itsa_me.JPG differ diff --git a/react_OLD/src/assets/photos/me_robot.jpeg b/react_OLD/src/assets/photos/me_robot.jpeg new file mode 100644 index 0000000..ac0c36d Binary files /dev/null and b/react_OLD/src/assets/photos/me_robot.jpeg differ diff --git a/react_OLD/src/assets/photos/occupyRIT.png b/react_OLD/src/assets/photos/occupyRIT.png new file mode 100644 index 0000000..a919a21 Binary files /dev/null and b/react_OLD/src/assets/photos/occupyRIT.png differ diff --git a/react_OLD/src/assets/photos/placeholder.png b/react_OLD/src/assets/photos/placeholder.png new file mode 100644 index 0000000..2ce6417 Binary files /dev/null and b/react_OLD/src/assets/photos/placeholder.png differ diff --git a/react_OLD/src/assets/photos/plexus.jpg b/react_OLD/src/assets/photos/plexus.jpg new file mode 100644 index 0000000..b4de7b2 Binary files /dev/null and b/react_OLD/src/assets/photos/plexus.jpg differ diff --git a/react_OLD/src/assets/photos/resume.png b/react_OLD/src/assets/photos/resume.png new file mode 100644 index 0000000..f810c68 Binary files /dev/null and b/react_OLD/src/assets/photos/resume.png differ diff --git a/react_OLD/src/assets/photos/slate.png b/react_OLD/src/assets/photos/slate.png new file mode 100644 index 0000000..2588b8f Binary files /dev/null and b/react_OLD/src/assets/photos/slate.png differ diff --git a/react_OLD/src/assets/photos/sun.png b/react_OLD/src/assets/photos/sun.png new file mode 100644 index 0000000..176f5bf Binary files /dev/null and b/react_OLD/src/assets/photos/sun.png differ diff --git a/react_OLD/src/assets/photos/vexcodeButtons.jpeg b/react_OLD/src/assets/photos/vexcodeButtons.jpeg new file mode 100644 index 0000000..ad7a861 Binary files /dev/null and b/react_OLD/src/assets/photos/vexcodeButtons.jpeg differ diff --git a/react_OLD/src/assets/photos/website.png b/react_OLD/src/assets/photos/website.png new file mode 100644 index 0000000..2736411 Binary files /dev/null and b/react_OLD/src/assets/photos/website.png differ diff --git a/react_OLD/src/componets/Carousel.js b/react_OLD/src/componets/Carousel.js new file mode 100644 index 0000000..47ffe89 --- /dev/null +++ b/react_OLD/src/componets/Carousel.js @@ -0,0 +1,12 @@ +import React from "react"; +import ImageGallery from 'react-image-gallery'; + +export default function ResponsiveCarousel(props) { + return ( +
+
+ +
+
+ ); +} \ No newline at end of file diff --git a/react_OLD/src/componets/ChessBed.js b/react_OLD/src/componets/ChessBed.js new file mode 100644 index 0000000..12929e3 --- /dev/null +++ b/react_OLD/src/componets/ChessBed.js @@ -0,0 +1,127 @@ +import React from "react"; +import bg from "../assets/chesscom-embed/diamonds.png"; +import def from "../assets/chesscom-embed/default.svg"; + +export default class ChessBed extends React.Component { + constructor(props) { + super(props); + this.seeAccount = this.seeAccount.bind(this, props.username); + this.addChessEmbed = this.addChessEmbed.bind(this, props.username); + this.state = { + name: "Loading..", + pic: def, + ratings: { + rapid: "Loading", + blitz: "Loading", + bullet: "Loading", + tactics: "Loading", + }, + loaded: "hidden" + }; + this.diamonds = { + background: "black", + backgroundImage: `linear-gradient(rgba(0, 0, 0, .5), rgba(0, 0, 0, .75)), url(${bg})`, + }; + } + + seeAccount(username) { + window.top.location.href = "https://chess.com/member/" + username; + } + + async addChessEmbed(username) { + let user, stats; + try { + user = await fetch(`https://api.chess.com/pub/player/${username}`); + stats = await fetch( + `https://api.chess.com/pub/player/${username}/stats` + ); + } catch (e) { + this.setState({ + name: "Chess.com request failed", + ratings: { + rapid: "Site may", + blitz: "be blocked", + bullet: "by client.\n\n", + tactics: "not my fault :(", + }, + }); + return; + } + if (user.status === 200) { + user = await user.json(); + stats = await stats.json(); + this.setState({ + name: user["username"], + pic: user.avatar, + ratings: { + rapid: stats.chess_rapid.last.rating, + blitz: stats.chess_blitz.last.rating, + bullet: stats.chess_bullet.last.rating, + tactics: stats.tactics.highest.rating, + }, + loaded: '' + }); + } else if (user === null || user.status === 403 || user.status === null) { + this.setState({ + name: "Chess.com request failed" + }); + } else { + this.setState({ + name: "User Not Found", + loaded: '' + }); + } + } + + componentDidMount() { + this.addChessEmbed(); + } + + render() { + return ( + <> +
+
+
+
+
+ {this.username} +
+
+
{this.state.name}
+
+
+
+
+

{this.state.ratings.rapid}

+
+
+
+

{this.state.ratings.blitz}

+
+
+
+

{this.state.ratings.bullet}

+
+
+
+

{this.state.ratings.tactics}

+
+
+
+
+ Chess.com Stat Embed by Andrew Simonson +
+
+ + ); + } +} diff --git a/react_OLD/src/componets/HexGrid.js b/react_OLD/src/componets/HexGrid.js new file mode 100644 index 0000000..76aecd7 --- /dev/null +++ b/react_OLD/src/componets/HexGrid.js @@ -0,0 +1,50 @@ +import { skill } from '../scripts/skill' + +export default function HexGrid() { + return ( +
+
+
skill('python')}> +
+
+
+
+
skill('js')}> +
+
+
+
+
+
+
skill('html')}> +
+
+
+

Ahoy

+
+
skill('sql')}> +
+
+
+
+
skill('cpp')}> +
+
+
+
+
+
+
skill('other')}> +
+
+
+
+
skill('tools')}> +
+
+
+
+
+
+ ); +} diff --git a/react_OLD/src/componets/Idler.js b/react_OLD/src/componets/Idler.js new file mode 100644 index 0000000..038fb06 --- /dev/null +++ b/react_OLD/src/componets/Idler.js @@ -0,0 +1,102 @@ +import Sketch from "react-p5"; +import React from "react"; + +const balls = []; +const density = 0.00005; +let screenWidth = window.innerWidth + 10; +let screenHeight = window.innerHeight + 10; + +export default class Idler extends React.Component { + setup = (p5, parentRef) => { + p5.frameRate(15); + const pix = screenHeight * screenWidth; + p5.createCanvas(screenWidth, screenHeight).parent(parentRef); + for (let i = 0; i < pix * density; i++) { + let thisBall = new Ball( + p5.random(screenWidth), + p5.random(screenHeight), + p5.random(6) + 3, + Math.exp(p5.random(4) + 3) / 1000 + 1, + p5.random(360) + ); + balls.push(thisBall); + } + + p5.stroke(255); + }; + + draw = (p5) => { + p5.background(32); + + for (let i = 0; i < balls.length; i++) { + balls[i].update(); + p5.stroke(200, 100); + p5.strokeWeight(2); + p5.fill(0); + p5.ellipse(balls[i].x, balls[i].y, balls[i].size, balls[i].size); + } + for (let i = 0; i < balls.length - 1; i++) { + for (let j = i + 1; j < balls.length; j++) { + let distance = p5.dist(balls[i].x, balls[i].y, balls[j].x, balls[j].y); + if (distance < 100){ + p5.stroke(150); + p5.line(balls[i].x, balls[i].y, balls[j].x, balls[j].y); + } + else if (distance < 150) { + p5.stroke(100); + let chance = 0.3 ** (((p5.random(0.2) + 0.8) * distance) / 150); + if (chance < 0.5) { + p5.stroke(50); + } + p5.line(balls[i].x, balls[i].y, balls[j].x, balls[j].y); + } + } + } + }; + render() { + const windowResized = (p5) => { + p5.resizeCanvas(p5.windowWidth, p5.windowHeight); + screenWidth = window.innerWidth + 10; + screenHeight = window.innerHeight + 10; + }; + return ( + + ); + } +} + +class Ball { + constructor(x, y, size, speed, angle) { + this.x = x; + this.y = y; + this.size = size; + this.speed = speed; + this.angle = angle; + this.calcChange(); + } + + calcChange() { + this.xSpeed = this.speed * Math.sin((this.angle * Math.PI) / 180); + this.ySpeed = this.speed * Math.cos((this.angle * Math.PI) / 180); + } + + update() { + this.x += this.xSpeed; + this.y += this.ySpeed; + if (this.x > screenWidth) { + this.x -= screenWidth; + } else if (this.x < 0) { + this.x += screenWidth; + } + if (this.y > screenHeight) { + this.y -= screenHeight; + } else if (this.y < 0) { + this.y += screenHeight; + } + } +} diff --git a/react_OLD/src/componets/Name.js b/react_OLD/src/componets/Name.js new file mode 100644 index 0000000..57936d3 --- /dev/null +++ b/react_OLD/src/componets/Name.js @@ -0,0 +1,37 @@ +export default function Name() { + return ( + +
+
+
+

Andrew Simonson

+
+
+

Andrew Simonson

+
+
+

Andrew Simonson

+
+
+

Andrew Simonson

+
+
+

Andrew Simonson

+
+
+

Andrew Simonson

+
+
+

Andrew Simonson

+
+
+

Andrew Simonson

+
+
+

Andrew Simonson

+
+
+
+
+ ); +} diff --git a/react_OLD/src/componets/Nav.js b/react_OLD/src/componets/Nav.js new file mode 100644 index 0000000..34eabe3 --- /dev/null +++ b/react_OLD/src/componets/Nav.js @@ -0,0 +1,20 @@ +import React from 'react'; + +export default function Nav(props) { + let items; + for (let i = 0; i < props.children.length; i++) { + items = ( + <> + {items} +
{props.children[i]}
+ + ) + } + return ( +
+
+ {items} +
+
+ ) +} \ No newline at end of file diff --git a/react_OLD/src/componets/Neon.js b/react_OLD/src/componets/Neon.js new file mode 100644 index 0000000..fdecf74 --- /dev/null +++ b/react_OLD/src/componets/Neon.js @@ -0,0 +1,21 @@ +export default function ProjectList(props) { + let text; + props.children.forEach(function (x) { + text = ( + <> + {text} + {x} + + ); + }); + text = (
{text}
) + return ( + <> +
+
+
{text}
+
+
+ + ); +} diff --git a/react_OLD/src/componets/Project.js b/react_OLD/src/componets/Project.js new file mode 100644 index 0000000..fcb94e0 --- /dev/null +++ b/react_OLD/src/componets/Project.js @@ -0,0 +1,44 @@ +import React from "react"; +import placeholder from "../assets/photos/placeholder.png"; + +export default class Project extends React.Component { + render() { + let style = { + backgroundImage: "url(" + this.props.bgi + ")", + }; + let links = <>; + if (this.props.links != null) { + this.props.links.forEach((x) => { + links = ( + <> + {links} + {x[1]} + + ); + }); + } else { + links = ( +
+ no links! +
+ ); + } + return ( +
+
+
+

{this.props.title}

+

+
+
+
+
+

{this.props.children}

+
+
{links}
+
+
+
+ ); + } +} diff --git a/react_OLD/src/componets/ProjectList.js b/react_OLD/src/componets/ProjectList.js new file mode 100644 index 0000000..463bf45 --- /dev/null +++ b/react_OLD/src/componets/ProjectList.js @@ -0,0 +1,18 @@ +import React from 'react' + +export default function ProjectList(props){ + let projects; + props.children.forEach(function(x){ + projects = ( + <> + {projects} + {x} + + ); + }); + return( +
+ {projects} +
+ ); +} \ No newline at end of file diff --git a/react_OLD/src/componets/Skills.js b/react_OLD/src/componets/Skills.js new file mode 100644 index 0000000..08625a8 --- /dev/null +++ b/react_OLD/src/componets/Skills.js @@ -0,0 +1,17 @@ +import React from 'react' + +export default function Skills(props){ + let allSkills; + props.children.forEach(x => { + allSkills = ( + <> + {allSkills} +
  • {x}
  • + + ) + }); + return ( + ); +} \ No newline at end of file diff --git a/react_OLD/src/componets/Socials.js b/react_OLD/src/componets/Socials.js new file mode 100644 index 0000000..4a8b85c --- /dev/null +++ b/react_OLD/src/componets/Socials.js @@ -0,0 +1,18 @@ +import React from 'react'; + +import github from '../assets/icons/github.svg' +import instagram from '../assets/icons/instagram.svg' +import linkedin from '../assets/icons/linkedin.svg' +import email from '../assets/icons/email.svg' + +export default function Socials(){ + return( +
    + Github + Instagram + LinkedIn + E-mail +
    +
    + ) +} \ No newline at end of file diff --git a/react_OLD/src/componets/TimeItem.js b/react_OLD/src/componets/TimeItem.js new file mode 100644 index 0000000..6b4e959 --- /dev/null +++ b/react_OLD/src/componets/TimeItem.js @@ -0,0 +1,21 @@ +import React from "react"; + +export default class TimeItem extends React.Component { + constructor(props) { + super(props); + this.date = props.date; + this.classes = props.classes; + this.item = ( + <> +

    {props.title}

    +
    +

    {props.children}

    +
    + + ); + } + + render() { + return

    {this.date}

    {this.item}
    ; + } +} diff --git a/react_OLD/src/componets/Timeline.js b/react_OLD/src/componets/Timeline.js new file mode 100644 index 0000000..9d19da5 --- /dev/null +++ b/react_OLD/src/componets/Timeline.js @@ -0,0 +1,17 @@ +import React from "react"; + +export default class Timeline extends React.Component { + constructor(props) { + super(props); + this.items = props.children; + this.classes = props.classes; + } + + componentDidMount() {} + + render() { + return
    + {this.items} +
    ; + } +} diff --git a/react_OLD/src/index.js b/react_OLD/src/index.js new file mode 100644 index 0000000..92e9aab --- /dev/null +++ b/react_OLD/src/index.js @@ -0,0 +1,11 @@ +import React from 'react'; +import { createRoot } from 'react-dom/client'; +import App from './App'; + +const container = document.getElementById('root'); +const root = createRoot(container); +root.render( + // + + // + ); diff --git a/react_OLD/src/pages/AboutMe.js b/react_OLD/src/pages/AboutMe.js new file mode 100644 index 0000000..59a1679 --- /dev/null +++ b/react_OLD/src/pages/AboutMe.js @@ -0,0 +1,265 @@ +import React, { useEffect } from "react"; +// import MyCarousel from "../componets/Carousel.js"; +import ChessBed from "../componets/ChessBed.js"; +// import HexGrid from "../componets/HexGrid"; +import Skills from "../componets/Skills"; +import Timeline from "../componets/Timeline"; +import TimeItem from "../componets/TimeItem.js"; +import { toggle } from "../scripts/checkbox"; +// import img1 from '../assets/photos/itsa_me.JPG' +// import img2 from '../assets/photos/me_robot.jpeg' +// import img3 from "../assets/photos/AcademicTeam.jpg"; +// import img4 from "../assets/photos/hagerstownVex2019.jpg"; +// import img5 from "../assets/photos/WeThePeople_Districts.jpg"; +// import img6 from "../assets/photos/WeThePeople.jpg"; +// import img7 from "../assets/photos/WeThePeople_NationalsSetup.jpg"; + +export default function AboutMe() { + useEffect(() => { + // This will run when the page first loads and whenever the title changes + document.title = "Andrew Simonson - About Me"; + }, []); + + return ( +
    toggle("up")}> + + +
    +
    +

    About Me

    +

    + I'm Andrew Simonson, a second year (third year standing) student at{" "} + Rochester Institute of Technology + in the Computer Science BS program, pursuing a career in data + science with a focus on predictive analytics. +

    +

    + When I'm not in class, you can find me working on extra + collaborative projects, building discord bots, playing chess, + reading up on some recent geopolitical development, or haphazardly + expanding my list of unusable, yet bizzarely wise quotes. +

    + {/*

    + My goal is to strive to make the biggest positive impact on the + world that I can. I'm here to improve and optimize what we have so + that we can spend more time on the things that matter. +

    +

    + I also value the ability to understand the world at large. That + awareness is what grounds a person into reality and gives their + place in the world value. My favorite part of learning about + grographies and cultures is when I can justify to myself the hidden + causality to historic events, which presents an inside look into how + we can act in the present. +

    +

    + It is my belief that being able to channel each distinct creative + interest into a final product is vital. With this philosophy that + promotes dedication and enables an in-depth understanding, I can + take pride in each of my projects, bridging the gap between the the + multifaceted purpose present in everything around us. +

    */} + {/*Me*/} +
    +
    +
    +
    +

    Skills

    + {/*
    + +
    +

    +

    +
    +
    */} + + {[ + "Python", + "JavaScript", + "Java", + "C", + "C++", + "MIPS Assembly", + "Processing", + "P5.js", + "SQL", + "SQLite", + "PostgreSQL", + "SQLAlchemy", + "HTML", + "CSS", + "Docker", + "LaTeX", + "ArcGIS", + "Git", + "Github", + "Linux", + "OKD4", + "Kubernetes", + "Angular", + "Flask", + "Jinja", + "DOM Scraping", + "Google API", + "React", + "Node.js", + "ArcGIS", + ]} + +
    + +
    +
    + {/*
    +

    Extracirricular Awards

    + + {[ + { + original: img4, + description: + "High School VEX Robotics President and Team Leader", + }, + { + original: img5, + description: + "We the People Civics Competition District Champions", + }, + { + original: img6, + description: "We The People State Civics Competition Champions", + }, + { + original: img7, + description: + "what it looks like to compete in We the People Nationals, circa 2020", + }, + { + original: img3, + description: "Academic Team county championships", + }, + ]} + +
    */} +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + + + Spring 2023 Semester Co-op under Dow Chemical's Global Reactive + Chemicals team in Analytical Sciences. Responsibilities included + management of chemical compatability data and tool creation for + parsing, generating, and submitting reports. + + + I started building this website on this day. I wish I could say I + was farther along than I am. + + + Studying in Rochester Institute of Technology's Computer Science BS + program with a minor in International Relations. + + + Worked part-time as a chef, managing active ingredient supply and + fulfilling orders. I personally recommend the stuffed pretzels. + + + Trained in voter registry operations and provisional voting by the + Washington County Board of Elections for the 2020 US Presidential + Election. + + + Graduated high school with highest honors. +
    + Member of National Honor Society, Academic Team County Champions. + Participated in Physics Olympics, Robotics Club, and scored at state + championships in{" "} + + Cross Country and Track and Field (4x800, 800) + + .{" "} +
    + + Led 5 teams through middle and high school to VEX Robotics + Competitions, elevating Boonsboro from county group-stage + elimination to its first state championship participation. + Reorganized club and set up its first interface with the community + + sponsors + +
    +
    +
    + ); +} diff --git a/react_OLD/src/pages/Activities.js b/react_OLD/src/pages/Activities.js new file mode 100644 index 0000000..43a737b --- /dev/null +++ b/react_OLD/src/pages/Activities.js @@ -0,0 +1,14 @@ +import Neon from "../componets/Neon"; + +export default function ErrorNotFound() { + return ( + <> + + +

    ERROR 404

    +
    +

    URL Not Found

    +
    + + ); +} diff --git a/react_OLD/src/pages/Error.js b/react_OLD/src/pages/Error.js new file mode 100644 index 0000000..46163c2 --- /dev/null +++ b/react_OLD/src/pages/Error.js @@ -0,0 +1,8 @@ +import Neon from '../componets/Neon' + +export default function ErrorNotFound() { + return (<> + +

    ERROR 404


    URL Not Found

    + ) +} \ No newline at end of file diff --git a/react_OLD/src/pages/Home.js b/react_OLD/src/pages/Home.js new file mode 100644 index 0000000..72ba298 --- /dev/null +++ b/react_OLD/src/pages/Home.js @@ -0,0 +1,49 @@ +import React, { useEffect } from "react"; +import ChessBed from "../componets/ChessBed.js"; + +export default function Home() { + const langstyle = { + width: "350px", + height: "165px", + border: "none", + display: "block", + }; + + useEffect(() => { + // This will run when the page first loads and whenever the title changes + document.title = "Andrew Simonson - Portfolio Home"; + }, []); + + return ( +
    + + + +
    +
    +
    +
    +

    Andrew Simonson

    +

    + Computer Science student at Rochester Institute of Technology +

    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + ); +} diff --git a/react_OLD/src/pages/Projects.js b/react_OLD/src/pages/Projects.js new file mode 100644 index 0000000..81988c3 --- /dev/null +++ b/react_OLD/src/pages/Projects.js @@ -0,0 +1,287 @@ +import React, { useEffect } from "react"; +import ProjectList from "../componets/ProjectList"; +import Project from "../componets/Project"; +import { toggle } from "../scripts/checkbox"; +import github from "../assets/icons/github.svg"; +import globe from "../assets/icons/globe.svg"; + +import geovisF from "../assets/photos/geovisF.png"; +import chessbed from "../assets/photos/chessbed.png"; +import occupyrit from "../assets/photos/occupyRIT.png"; +import slate from "../assets/photos/slate.png"; +import website from "../assets/photos/website.png"; +import resume from "../assets/photos/resume.png"; +import yugoslavia from "../assets/photos/ceoOfYugo.png"; +import vexbutt from "../assets/photos/vexcodeButtons.jpeg"; + +export default function Projects() { + useEffect(() => { + // This will run when the page first loads and whenever the title changes + document.title = "Andrew Simonson - Projects"; + }, []); + + return ( +
    toggle('')}> + + +
    +

    Projects

    +

    + Project status is indicated by the color of the project card: +
    + - Complete +
    + - Work In Progress +
    + - Incomplete +

    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + + , + ], + ]} + > + ArcGIS Map of the most effective alternative energy sources in the + continental United States + + , + ], + ]} + > + Collects RIT Gym Occupancy data, determining busiest workout + times. + + , + ], + ]} + > + A template for creating Chess.com user profile embeds + + , + ], + [ + "https://asimonson.com/Resume.pdf/", + site, + ], + ]} + > + My Resume, made in LaTeX with a custom design derived by the AltaCV + template on OverLeaf. + + , + ], + ["https://asimonson.com/", site], + ]} + > + A personal portfolio site made with React.js. + + , + ], + ["https://slate.csh.rit.edu/", site], + ]} + > + Slate is a web app designed to help event coordinators schedule events + by congregating participant calendar data. Includes Computer Science + House account integration. + + , + ], + ]} + > + A Discord bot to handle role management and statistics for RIT's + Humans vs. Zombies games. + + , + ], + ]} + > + A team derived from the RIT Financial Management Association dedicated + to learning about financial management of equities using automated + solutions developed by students. + + + A tampermonkey tool used to automatically answer and submit online + trivia forms, which can be tailored to different site layouts. +
    +
    + Source is currently private. +
    + , + ], + ]} + > + A modular discord bot to manage class discord servers divided by class + sections. Used in my Web and Mobile 101 class discord server. + + , + ], + ]} + > + A personal Discord bot focused on statistical insight and role + management for NationsGame, including NG Rolls Sim accessibility. + + , + ], + ]} + > + A simulator for the browser game, NationsGame, to analyze unit + composition and predict in-game victors and unit statistics. +
    + Unfortunately, NationsGame is now defunct. Limited screenshots of + functionality. +
    + , + ], + ]} + > + A GNOME extension that cycles through a folder of wallpapers. + + , + ], + ]} + > + VEXcode button library + examples and template for the VEX V5 brain + + , + ], + ]} + > + A C++ keylogger for windows based off a udemy course with my custom + modifications and powershell script. + +
    +
    + ); +} diff --git a/react_OLD/src/scripts/checkbox.js b/react_OLD/src/scripts/checkbox.js new file mode 100644 index 0000000..fabbd56 --- /dev/null +++ b/react_OLD/src/scripts/checkbox.js @@ -0,0 +1,27 @@ +export function toggle(dir) { + let toggles = document.querySelectorAll( + ".checkbox-wrapper input[type=checkbox]" + ); + let allow = []; + toggles.forEach(function (x) { + if (x.checked) { + allow.push(x.id); + } + }); + let list = document.querySelectorAll(".checkbox-client > div"); + if (allow.length === 0) { + for (let i = 0; i < list.length; i++) { + list[i].classList.remove("hidden" + dir); + } + } else { + for (let i = 0; i < list.length; i++) { + list[i].classList.remove("hidden" + dir); + for (let x = 0; x < allow.length; x++) { + if (!list[i].classList.contains(allow[x])) { + list[i].classList.add("hidden" + dir); + break; + } + } + } + } +} diff --git a/react_OLD/src/scripts/responsive.js b/react_OLD/src/scripts/responsive.js new file mode 100644 index 0000000..c41f9f7 --- /dev/null +++ b/react_OLD/src/scripts/responsive.js @@ -0,0 +1,89 @@ +window.onload = function () { + onLoaded(); +}; +function onLoaded() { + document.body.scrollTop = 0; // For Safari + document.documentElement.scrollTop = 0; // For Chrome, Firefox, IE and Opera + let navs = document.querySelectorAll(".navElement"); + navs.forEach(function (element) { + element.onclick = function () { + window.scrollTo(0, 0); + toggleMenu(); + }; + }); + + window.onresize = function () { + resizer(); + }; + resizer(); + if (window.innerWidth < 1200) { + const e = document.querySelector(".navControl"); + e.style.maxHeight = "0px"; + } +} + +function resizer() { + const e = document.querySelector(".navControl"); + if (window.innerWidth > 1200) { + // desktop view + scrollFunction(); + window.onscroll = function () { + scrollFunction(); + }; + e.style.maxHeight = `${e.scrollHeight + 10}px`; + } else { + // mobile view + window.onscroll = ""; + document.querySelector(".header").style.backgroundColor = "#1a1a1a"; + document.querySelectorAll(".header .name h1").forEach(function (x) { + x.style.fontSize = "1.5rem"; + }); + // document.querySelector('.header > h1').style.color = "#ecebeb"; + document.querySelector(".header").style.borderBottomWidth = "3px"; + e.style.maxHeight = "0px"; + document.querySelectorAll(".navElement *").forEach((x) => { + x.style.paddingTop = ".3rem"; + x.style.paddingBottom = ".3rem"; + x.style.fontSize = "1rem"; + }); + } +} + +function scrollFunction() { + if (document.body.scrollTop > 10 || document.documentElement.scrollTop > 10) { + document.querySelector(".header").style.backgroundColor = "#1a1a1a"; + document.querySelectorAll(".header .name h1").forEach(function (x) { + x.style.fontSize = "1.5rem"; + }); + document.querySelectorAll(".navElement *").forEach((x) => { + x.style.paddingTop = ".3rem"; + x.style.paddingBottom = ".3rem"; + x.style.fontSize = "1rem"; + }); + } else { + document.querySelector(".header").style.backgroundColor = "rgba(0,0,0,0)"; + document.querySelectorAll(".header .name h1").forEach(function (x) { + x.style.fontSize = "2rem"; + }); + // document.querySelector('.header > h1').style.color = "#ecebeb"; + document.querySelectorAll(".navElement *").forEach((x) => { + x.style.paddingTop = ".5rem"; + x.style.paddingBottom = ".5rem"; + x.style.fontSize = "1.2rem"; + }); + } +} + +export function toggleMenu() { + if (window.innerWidth < 1200) { + const e = document.querySelector(".navControl"); + const bar = document.querySelector(".header"); + if (e.style.maxHeight === "0px") { + e.style.maxHeight = `${e.scrollHeight + 10}px`; + bar.style.borderBottomWidth = "0px"; + } else { + e.style.maxHeight = "0px"; + bar.style.borderBottomWidth = "3px"; + } + } +} diff --git a/react_OLD/src/scripts/skill.js b/react_OLD/src/scripts/skill.js new file mode 100644 index 0000000..612e65e --- /dev/null +++ b/react_OLD/src/scripts/skill.js @@ -0,0 +1,26 @@ +let currentType = ""; + +const dict = { + 'python': {'name': 'Python', 'info': 'Python and shit'}, + 'js': {'name': 'Javascript', 'info': 'JS and shit'}, + 'html': {'name': 'HTML/CSS', 'info': 'also SCSS'}, + 'sql': {'name': 'HTML/CSS', 'info': 'also SCSS'}, + 'cpp': {'name': 'HTML/CSS', 'info': 'also SCSS'}, + 'other': {'name': 'HTML/CSS', 'info': 'also SCSS'}, + 'tools': {'name': 'HTML/CSS', 'info': 'also SCSS'} +} + +export function skill(type) { + if (currentType === type) { + return; + } + currentType = type; + let disp = document.getElementById("skillDisp"); + disp.classList = []; + let ugh = disp.offsetWidth; // without this delay the animation doesn't begin. idfk. + disp.querySelector('h2').textContent = dict[type]['name']; + disp.querySelector('p').textContent = dict[type]['info']; + disp.classList.add(type); + disp.classList.add('swipeIn'); + return ugh; // gets rid of unused variable warning +} diff --git a/src/templates/header.html b/src/templates/header.html index 57a9ec3..00d3b00 100644 --- a/src/templates/header.html +++ b/src/templates/header.html @@ -8,7 +8,7 @@ - +