Compare commits
35 Commits
homepage
...
7f76759b03
| Author | SHA1 | Date | |
|---|---|---|---|
| 7f76759b03 | |||
|
|
c1377d50a0 | ||
|
|
d2f424a7c9 | ||
|
|
9697866181 | ||
|
|
a793d7ce4b | ||
|
|
aa4fdaf435 | ||
|
|
8f6d45ca53 | ||
|
|
de2506ad9d | ||
|
|
cc4b87d9c5 | ||
|
|
81f467e16a | ||
|
|
9ac21fac1e | ||
|
|
662bc0a2ed | ||
|
|
1452840240 | ||
|
|
ec2e17cee1 | ||
|
|
a554ca8fa6 | ||
|
|
9611cde594 | ||
|
|
7edafd8677 | ||
|
|
7463c1927a | ||
|
|
fed3479ed1 | ||
|
|
810ede3202 | ||
|
|
a4a4e04ab2 | ||
|
|
219a7543de | ||
|
|
87a3c3d2b4 | ||
|
|
34e75a3748 | ||
|
|
f0b2bc0474 | ||
|
|
28e1dcc5d5 | ||
|
|
e011480ad1 | ||
|
|
77991356f4 | ||
|
|
875a80488c | ||
|
|
86434d5248 | ||
|
|
128c97900c | ||
|
|
fe013e056b | ||
|
|
03c19781e9 | ||
|
|
e264abd558 | ||
|
|
c1c1c664a3 |
@@ -19,7 +19,7 @@ jobs:
|
|||||||
node-version: '16'
|
node-version: '16'
|
||||||
|
|
||||||
- name: Install dependencies.
|
- name: Install dependencies.
|
||||||
run: npm i -g terser csso-cli html-minifier
|
run: npm i -g terser csso-cli
|
||||||
|
|
||||||
- name: "Copying changes over to build."
|
- name: "Copying changes over to build."
|
||||||
run: git checkout -b build
|
run: git checkout -b build
|
||||||
@@ -28,7 +28,6 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
find . -name "*.js" -type f -exec terser {} -c -o {} \;
|
find . -name "*.js" -type f -exec terser {} -c -o {} \;
|
||||||
find . -name "*.css" -type f -exec csso {} -o {} \;
|
find . -name "*.css" -type f -exec csso {} -o {} \;
|
||||||
find . -name "*.html" -type f -exec html-minifier --remove-comments --collapse-whitespace {} -o {} \;
|
|
||||||
|
|
||||||
- name: "Commiting changes."
|
- name: "Commiting changes."
|
||||||
run: |
|
run: |
|
||||||
8
.gitignore
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
_site
|
||||||
|
.bundle
|
||||||
|
.jekyll-cache
|
||||||
|
vendor
|
||||||
|
.vscode
|
||||||
|
.DS_Store
|
||||||
|
Gemfile
|
||||||
|
Gemfile.lock
|
||||||
16
404.html
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
title: 404
|
||||||
|
description: Oops! The page you wanted does not exist.
|
||||||
|
layout: default
|
||||||
|
---
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="/styles/404.css">
|
||||||
|
|
||||||
|
<section id="notfound" class="back">
|
||||||
|
<div id="text-outer">
|
||||||
|
<i>Looks like your lost!</i>
|
||||||
|
<h1 id="text-404" class="shadow">404</h1>
|
||||||
|
</div>
|
||||||
|
<hr class="lighter">
|
||||||
|
<button type="button" class="nav-link white button" onclick="history.back(-1)">Go Back.</button>
|
||||||
|
</section>
|
||||||
10
README.md
@@ -1,3 +1,7 @@
|
|||||||
# The Personal Website of Maxim Voldman Hutz
|
# 🖼️ Max Hutz's Digital Portfolio
|
||||||
This website serves as an exhibit of who I am, what I've done, what I'm doing,
|
### Hey!
|
||||||
and what I plan to do.
|
I'm Max Hutz, and this is my personal website.
|
||||||
|
|
||||||
|
It details who I am, what I've done, and were I'm headed in the field of software engineering. (And it looks cool too!)
|
||||||
|
|
||||||
|
Check it out now at [www.maximhutz.me](https://www.maximhutz.me)!
|
||||||
|
|||||||
16
_data/home.yml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
welcome:
|
||||||
|
Hey! 👋 I'm Max Hutz.
|
||||||
|
|
||||||
|
status:
|
||||||
|
Software developer in New York.
|
||||||
|
|
||||||
|
about:
|
||||||
|
I'm a passionate computer science student skilled in building responsive,
|
||||||
|
full-stack applications. I love learning from colleagues and teaching future
|
||||||
|
developers. I thrive where teamwork and creativity are key.
|
||||||
|
|
||||||
|
email:
|
||||||
|
maximhutz@gmail.com
|
||||||
|
|
||||||
|
featured:
|
||||||
|
[ malung, freshmanual, pollbuddy, rpi-crisis ]
|
||||||
79
_data/techs.yml
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
html:
|
||||||
|
name: HTML
|
||||||
|
fore: '#FFFFFF'
|
||||||
|
back: '#E44D26'
|
||||||
|
link: https://html.spec.whatwg.org/multipage/
|
||||||
|
|
||||||
|
css:
|
||||||
|
name: CSS
|
||||||
|
fore: '#FFFFFF'
|
||||||
|
back: '#2965F1'
|
||||||
|
link: https://www.w3.org/Style/CSS/Overview.en.html
|
||||||
|
|
||||||
|
js:
|
||||||
|
name: JavaScript
|
||||||
|
fore: '#323330'
|
||||||
|
back: '#F0DB4F'
|
||||||
|
link: https://en.wikipedia.org/wiki/JavaScript
|
||||||
|
|
||||||
|
php:
|
||||||
|
name: PHP
|
||||||
|
fore: '#242434'
|
||||||
|
back: '#8B93BB'
|
||||||
|
link: https://www.php.net
|
||||||
|
|
||||||
|
docker:
|
||||||
|
name: Docker
|
||||||
|
fore: '#2494EC'
|
||||||
|
back: '#FFFFFF'
|
||||||
|
link: https://www.docker.com
|
||||||
|
|
||||||
|
azure:
|
||||||
|
name: Azure
|
||||||
|
fore: '#EEEEEE'
|
||||||
|
back: 'linear-gradient(-45deg, #2892DF, #3CCBF4)'
|
||||||
|
link: https://azure.microsoft.com/en-us/
|
||||||
|
|
||||||
|
mariadb:
|
||||||
|
name: MariaDB
|
||||||
|
fore: '#1C335C'
|
||||||
|
back: '#C4745C'
|
||||||
|
link: https://mariadb.org
|
||||||
|
|
||||||
|
#*----------------------------------------------------------------------------*#
|
||||||
|
|
||||||
|
react:
|
||||||
|
name: React
|
||||||
|
fore: '#04D8F8'
|
||||||
|
back: '#242323'
|
||||||
|
link: https://reactjs.org
|
||||||
|
|
||||||
|
swift:
|
||||||
|
name: Swift
|
||||||
|
fore: white
|
||||||
|
back: 'linear-gradient(-45deg, #FF3527, #FBAB3F)'
|
||||||
|
link: https://www.swift.org
|
||||||
|
|
||||||
|
objective-c:
|
||||||
|
name: Objective-C
|
||||||
|
fore: '#000000'
|
||||||
|
back: '#EEEEEE'
|
||||||
|
link: https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html
|
||||||
|
|
||||||
|
firebase:
|
||||||
|
name: Firebase
|
||||||
|
fore: '#F57C00'
|
||||||
|
back: '#EEF3F5'
|
||||||
|
link: https://firebase.google.com
|
||||||
|
|
||||||
|
python:
|
||||||
|
name: Python
|
||||||
|
fore: '#FFD94B'
|
||||||
|
back: '#346C94'
|
||||||
|
link: https://www.python.org
|
||||||
|
|
||||||
|
bs:
|
||||||
|
name: Beautiful Soup
|
||||||
|
fore: '#97DACB'
|
||||||
|
back: '#1C4E63'
|
||||||
|
link: https://www.crummy.com/software/BeautifulSoup/bs4/doc/
|
||||||
116
_data/work.yml
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
malung:
|
||||||
|
id: malung
|
||||||
|
title: Malung
|
||||||
|
subtitle: COVID-19 Classifier
|
||||||
|
stack: [ html, css, js, php, docker, mariadb, azure ]
|
||||||
|
color: malung
|
||||||
|
image: /res/projects/malung.webp
|
||||||
|
|
||||||
|
ready: true
|
||||||
|
|
||||||
|
description:
|
||||||
|
Led a team of 3 to create Malung, an <b>online COVID-19 classifier</b>. With
|
||||||
|
Malung, you can detect COVID-19 in lung scans using machine learning, and
|
||||||
|
<b>manage patient data on the cloud</b>. <br><br> Doubled as the <b>backend
|
||||||
|
/ DevOps lead</b> during development, managing the site and its database.
|
||||||
|
|
||||||
|
|
||||||
|
outcomes:
|
||||||
|
- Hosted site through Microsoft Azure.
|
||||||
|
|
||||||
|
- Managed database with MariaDB; Containerized on Docker instance for local
|
||||||
|
development.
|
||||||
|
|
||||||
|
- Built account system with PHP, which interfaced with frontend through
|
||||||
|
backend API.
|
||||||
|
|
||||||
|
- Collaboratively designed site’s UI with Figma, focusing on responsive
|
||||||
|
design.
|
||||||
|
|
||||||
|
#*----------------------------------------------------------------------------*#
|
||||||
|
|
||||||
|
freshmanual:
|
||||||
|
id: freshmanual
|
||||||
|
title: FreshManual
|
||||||
|
subtitle: Mobile App
|
||||||
|
stack: [ react, js, firebase, swift, objective-c ]
|
||||||
|
link: https://apps.apple.com/us/app/freshmanuals/id1627091250
|
||||||
|
color: freshmanual
|
||||||
|
image: /res/projects/freshmanual.webp
|
||||||
|
|
||||||
|
ready: false
|
||||||
|
|
||||||
|
description:
|
||||||
|
Lead developer during the initial development of the FreshManuals app.
|
||||||
|
Worked with <b>team of 5</b> at Tightrope Interactive to design, build, and
|
||||||
|
test the <b>mobile product manual aggregator</b>.<br><br>FreshManuals is
|
||||||
|
currently available for download on the <b>iPhone app store</b>.
|
||||||
|
|
||||||
|
outcomes:
|
||||||
|
- User interface built using React/React-Native, for multiplatform
|
||||||
|
integration.
|
||||||
|
|
||||||
|
- Used Firestore/Firebase to store and access user account data.
|
||||||
|
|
||||||
|
- Integrated paid yahoo search results into mobile search results.
|
||||||
|
|
||||||
|
- Used Fetch API to request user manual data from website API endpoints.
|
||||||
|
|
||||||
|
#*----------------------------------------------------------------------------*#
|
||||||
|
|
||||||
|
pollbuddy:
|
||||||
|
id: pollbuddy
|
||||||
|
title: Poll Buddy
|
||||||
|
stack: [ react, js, docker ]
|
||||||
|
link: https://pollbuddy.app
|
||||||
|
color: pollbuddy
|
||||||
|
image: /res/projects/pollbuddy.webp
|
||||||
|
|
||||||
|
ready: false
|
||||||
|
|
||||||
|
description:
|
||||||
|
React developer for Poll Buddy, an <b>online questionnaire service</b> used by
|
||||||
|
hundreds of students and teachers on the Rensselaer Polytechnic Institute
|
||||||
|
campus. Worked on <b>cleaning source code</b>, transitioning from legacy
|
||||||
|
technology, and <b>improving the site’s user experience</b>.
|
||||||
|
|
||||||
|
outcomes:
|
||||||
|
- Cut 30% of the front-end codebase by switching to the modern, functional
|
||||||
|
style.
|
||||||
|
|
||||||
|
- Wrote and refined dozens of front-end tests using Jest for React
|
||||||
|
components.
|
||||||
|
|
||||||
|
- Ran discount usability study on Poll Buddy’s UI, to isolate and correct
|
||||||
|
flaws that novel users encountered.
|
||||||
|
|
||||||
|
#*----------------------------------------------------------------------------*#
|
||||||
|
|
||||||
|
rpi-crisis:
|
||||||
|
id: rpi-crisis
|
||||||
|
title: CRISIS
|
||||||
|
stack: [ python, bs ]
|
||||||
|
link: https://rpicrisis.org
|
||||||
|
color: rpi-crisis
|
||||||
|
image: /res/projects/rpi-crisis.webp
|
||||||
|
|
||||||
|
ready: false
|
||||||
|
|
||||||
|
description:
|
||||||
|
<b>Backend developer</b> for Correcting Rensselaer’s Insufferable Student
|
||||||
|
Information System (CRISIS), a web-app to help students organize and <b>manage
|
||||||
|
their curriculum</b> at Rensselaer Polytechnic Institute (RPI). Worked to
|
||||||
|
<b>expand data collection</b> system, and decipher information from RPI’s
|
||||||
|
legacy SIS.
|
||||||
|
|
||||||
|
outcomes:
|
||||||
|
- Wrote web-scrapers using Beautiful Soup to pull data from QuACS, another
|
||||||
|
well-known course scheduler, jump-starting the site’s backend.
|
||||||
|
|
||||||
|
- Wrote web-scrapers to extract course templates from RPI’s numerous
|
||||||
|
major-specific websites.
|
||||||
|
|
||||||
|
- Used Lark to parse course requirements from RPI’s convoluted course
|
||||||
|
catalog.
|
||||||
|
|
||||||
|
#*----------------------------------------------------------------------------*#
|
||||||
33
_includes/default.html
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="description" content="{{ include.description }}">
|
||||||
|
<meta name="cache-control" content="max-age=31536000">
|
||||||
|
|
||||||
|
<link rel="shortcut icon" type="image/png" href="/res/favicon.png">
|
||||||
|
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||||
|
|
||||||
|
<link rel="preload stylesheet" as="font" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,500,1,200&display=swap">
|
||||||
|
<link rel="preload stylesheet" as="font" href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,300;1,400;1,500;1,600;1,700;1,800&display=swap">
|
||||||
|
<link rel="preload stylesheet" as="font" href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;900&display=swap">
|
||||||
|
|
||||||
|
<link rel="preload stylesheet" as="style" href="/styles/global.css">
|
||||||
|
<link rel="preload stylesheet" as="style" href="/styles/default.css">
|
||||||
|
|
||||||
|
<title>{{ include.title }} ─ Max Hutz</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
{% include header.html %}
|
||||||
|
|
||||||
|
{{ include.content }}
|
||||||
|
|
||||||
|
<div class="flex dark back npad"></div>
|
||||||
|
|
||||||
|
{% include footer.html %}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
13
_includes/footer.html
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<link rel="preload stylesheet" as="style" href="/styles/footer.css">
|
||||||
|
|
||||||
|
<footer class="dark back">
|
||||||
|
<h2>© 2022</h2>
|
||||||
|
<div class="flex"></div>
|
||||||
|
<a href="https://github.com/MajorDroolz" class="png-icon" target="_blank">
|
||||||
|
<img src="/res/icons/github.webp" alt="GitHub" width="30" height="30">
|
||||||
|
</a>
|
||||||
|
<a href="https://www.linkedin.com/in/maximhutz/" class="png-icon" target="_blank">
|
||||||
|
<img src="/res/icons/linkedin.webp" alt="LinkedIn" width="30" height="30">
|
||||||
|
</a>
|
||||||
|
<a href="mailto:maximhutz@gmail.com" class="nav-link white icon" data-i="mail" aria-label="Contact" target="_blank"></a>
|
||||||
|
</footer>
|
||||||
30
_includes/header.html
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<link rel="stylesheet" href="/styles/header.css">
|
||||||
|
|
||||||
|
<header class="light back shadow">
|
||||||
|
<a href="/" class="nav-link dark">MAX HUTZ</a>
|
||||||
|
<div class="flex"></div>
|
||||||
|
<a href="/experiences" class="nav-link dark icon nav3" data-i="work">Experience</a>
|
||||||
|
<a href="/resume" class="nav-link dark icon nav3" data-i="clinical_notes" target="_blank">Resume</a>
|
||||||
|
<a href="mailto:maximhutz@gmail.com" class="nav-link dark icon nav3" data-i="mail">Contact</a>
|
||||||
|
<a href="/experiences" class="nav-link dark icon nav2" data-i="work" aria-label="Experience"></a>
|
||||||
|
<a href="/resume" class="nav-link dark icon nav2" data-i="clinical_notes" aria-label="Resume" target="_blank"></a>
|
||||||
|
<a href="mailto:maximhutz@gmail.com" class="nav-link dark icon nav2" data-i="mail" aria-label="Contact"></a>
|
||||||
|
<button class="nav-link dark icon nav1" data-i="menu" aria-label="Menu" onclick="document.getElementById('menu')?.showModal()"></button>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<dialog id="menu">
|
||||||
|
<div class="light width-pad shadow">
|
||||||
|
<div id="menu-inner">
|
||||||
|
<div id="menu-top">
|
||||||
|
<a href="/home" class="nav-link dark">MAX HUTZ</a>
|
||||||
|
<div class="flex"></div>
|
||||||
|
<form method="dialog">
|
||||||
|
<button class="nav-link dark icon" data-i="close" aria-label="Close"></button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<a href="/experiences" class="nav-link dark icon" data-i="work">Experience</a>
|
||||||
|
<a href="/resume" class="nav-link dark icon" data-i="clinical_notes" target="_blank">Resume</a>
|
||||||
|
<a href="mailto:maximhutz@gmail.com" class="nav-link dark icon" data-i="mail">Contact</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</dialog>
|
||||||
1
_includes/style.html
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<link rel="stylesheet" href="/styles/{{ include.name }}.css">
|
||||||
1
_layouts/default.html
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{% include default.html title=page.title content=content description=page.description %}
|
||||||
54
_layouts/experience.html
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
{% capture description %}
|
||||||
|
A description of work done by Maxim Voldman Hutz for {{page.title}}.
|
||||||
|
{% endcapture %}
|
||||||
|
|
||||||
|
{% capture inner %}
|
||||||
|
{% assign malung = site.data.work[page.project_id] %}
|
||||||
|
{% assign techs = site.data.techs %}
|
||||||
|
|
||||||
|
<link rel="preload stylesheet" href="/styles/experience.css">
|
||||||
|
<link rel="preload stylesheet" href="/styles/tech.css">
|
||||||
|
|
||||||
|
<section id="experience" class="dark back">
|
||||||
|
<section id="banner" class="{{malung.color}} back">
|
||||||
|
<div>
|
||||||
|
<h1>{{malung.title}}</h1>
|
||||||
|
<i>{{malung.subtitle}}</i>
|
||||||
|
</div>
|
||||||
|
<button id="close-icon" class="nav-link dark icon" data-i="close" aria-label="Exit" type="button" onclick="history.back(-1)"></button>
|
||||||
|
</section>
|
||||||
|
<div id="content">
|
||||||
|
<div id="description">
|
||||||
|
<p>
|
||||||
|
{{malung.description}}
|
||||||
|
</p>
|
||||||
|
<hr class="lighter">
|
||||||
|
<ul>
|
||||||
|
{% for outcome in malung.outcomes %}
|
||||||
|
<li>{{outcome}}</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% if malung.link %}
|
||||||
|
<a href="{{malung.link}}" id="experience-button" class="nav-link white button r-icon" data-i="arrow_right" target="_blank">View {{malung.title}}</a>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<div id="image-side">
|
||||||
|
<div id="image" class="shadow">
|
||||||
|
{% if malung.image %}
|
||||||
|
<img id="image-inner" src="{{malung.image}}" alt="Image of {{malung.title}}">
|
||||||
|
{% else %}
|
||||||
|
<h1 aria-hidden="true">Image Not Available</h1>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<div id="stack">
|
||||||
|
{% for tech in malung.stack %}
|
||||||
|
{% assign data = techs[tech] %}
|
||||||
|
<a class="chip {{tech}} shadow" href="{{data.link}}" target="_blank">{{data.name}}</a>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{% endcapture %}
|
||||||
|
|
||||||
|
{% include default.html content=inner description=description title=page.title %}
|
||||||
5
experience/freshmanual.html
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
layout: experience
|
||||||
|
project_id: freshmanual
|
||||||
|
title: FreshManual
|
||||||
|
---
|
||||||
5
experience/malung.html
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
layout: experience
|
||||||
|
project_id: malung
|
||||||
|
title: Malung
|
||||||
|
---
|
||||||
5
experience/pollbuddy.html
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
layout: experience
|
||||||
|
project_id: pollbuddy
|
||||||
|
title: Poll Buddy
|
||||||
|
---
|
||||||
5
experience/rpi-crisis.html
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
layout: experience
|
||||||
|
project_id: rpi-crisis
|
||||||
|
title: CRISIS
|
||||||
|
---
|
||||||
36
experiences.html
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
---
|
||||||
|
title: Experiences
|
||||||
|
description: A list of work and projects done by Maxim Voldman Hutz.
|
||||||
|
layout: default
|
||||||
|
---
|
||||||
|
|
||||||
|
{% assign work = site.data.work %}
|
||||||
|
|
||||||
|
<section id="projects" class="dark back">
|
||||||
|
<h2>My experiences.</h2>
|
||||||
|
<div id="project-list">
|
||||||
|
{% for item in work %}
|
||||||
|
{% assign id = item[0] %}
|
||||||
|
{% assign data = item[1] %}
|
||||||
|
|
||||||
|
<a class="{{ data.color }} project-item shadow" href="/experience/{{ id }}">
|
||||||
|
{% if data.image %}
|
||||||
|
<div class="space project-image-outer">
|
||||||
|
<img src="{{data.image}}" alt="{{data.title}}" class="project-image">
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
<div class="project-noimage" aria-hidden="true">Image Not Available</div>
|
||||||
|
{% endif %}
|
||||||
|
<div class="nav-link project-link r-icon" data-i="arrow_right">
|
||||||
|
{{ data.title }}
|
||||||
|
<!-- Add the subtitle, if it exists. -->
|
||||||
|
{% if data.subtitle %}
|
||||||
|
<span>:</span>
|
||||||
|
|
||||||
|
<p>{{ data.subtitle }}</p>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
120
home/index.html
@@ -1,120 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<meta name="description" content="This is the home page of Maxim Voldman Hutz's personal website.">
|
|
||||||
|
|
||||||
<link rel="icon" type="image/x-icon" href="/res/favicon.ico">
|
|
||||||
|
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,500,1,200">
|
|
||||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,300;1,400;1,500;1,600;1,700;1,800&display=swap">
|
|
||||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;900&display=swap">
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="/styles.css">
|
|
||||||
<link rel="stylesheet" href="index.css">
|
|
||||||
<title>Max Hutz</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="header-outer" class="light width-pad shadow">
|
|
||||||
<header>
|
|
||||||
<a href="#" class="nav-link dark">MAX HUTZ</a>
|
|
||||||
<div class="flex"></div>
|
|
||||||
<a href="/experience" class="nav-link dark icon nav3" data-i="work">Experience</a>
|
|
||||||
<a href="/resume" class="nav-link dark icon nav3" data-i="clinical_notes">Resume</a>
|
|
||||||
<a href="mailto:maximhutz@gmail.com" class="nav-link dark icon nav3" data-i="mail">Contact</a>
|
|
||||||
<a href="/experience" class="nav-link dark icon nav2" data-i="work" aria-label="Experience"></a>
|
|
||||||
<a href="/resume" class="nav-link dark icon nav2" data-i="clinical_notes" aria-label="Resume"></a>
|
|
||||||
<a href="mailto:maximhutz@gmail.com" class="nav-link dark icon nav2" data-i="mail" aria-label="Contact"></a>
|
|
||||||
<button class="nav-link dark icon nav1" data-i="menu" aria-label="Menu" onclick="document.getElementById('menu')?.showModal()"></button>
|
|
||||||
</header>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="light width-pad">
|
|
||||||
<section id="about">
|
|
||||||
<div class="flex"></div>
|
|
||||||
<div class="flex"></div>
|
|
||||||
<div>
|
|
||||||
<h1>Hey! 👋 <span class="pre">I'm Max Hutz.</span></h1>
|
|
||||||
<i>Software engineer in New York.</i>
|
|
||||||
</div>
|
|
||||||
<p id="about-me">
|
|
||||||
I’m a passionate computer science student skilled in building
|
|
||||||
responsive, full-stack applications. I love learning from colleagues
|
|
||||||
and teaching future developers. I thrive where teamwork and creativity
|
|
||||||
are key.
|
|
||||||
</p>
|
|
||||||
<hr class="darker">
|
|
||||||
<nav>
|
|
||||||
<div id="inner-nav">
|
|
||||||
<a href="mailto:maximhutz@gmail.com" class="nav-link blue button flex">maximhutz@gmail.com</a>
|
|
||||||
<a href="/resume" class="nav-link red button r-icon flex" data-i="arrow_right" target="_blank">View Resume</a>
|
|
||||||
</div>
|
|
||||||
<div class="space"></div>
|
|
||||||
</nav>
|
|
||||||
<div class="flex"></div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="dark width-pad">
|
|
||||||
<section id="projects">
|
|
||||||
<h2>Worked on:</h2>
|
|
||||||
<div id="project-list">
|
|
||||||
<a class="yellow project-item shadow" href="/experience/malung">
|
|
||||||
<div class="space"></div>
|
|
||||||
<div class="nav-link project-link r-icon" data-i="arrow_right">Malung: COVID-19 Classifier</div>
|
|
||||||
</a>
|
|
||||||
<a class="blue project-item shadow" href="/experience/freshmanual">
|
|
||||||
<div class="space"></div>
|
|
||||||
<div class="nav-link project-link r-icon" data-i="arrow_right">Freshmanual: Mobile App</div>
|
|
||||||
</a>
|
|
||||||
<a class="green project-item shadow" href="/experience/pollbuddy">
|
|
||||||
<div class="space"></div>
|
|
||||||
<div class="nav-link project-link r-icon" data-i="arrow_right">Poll Buddy</div>
|
|
||||||
</a>
|
|
||||||
<a class="red project-item shadow" href="/experience/rpi-crisis">
|
|
||||||
<div class="space"></div>
|
|
||||||
<div class="nav-link project-link r-icon" data-i="arrow_right">CRISIS</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<hr class="lighter">
|
|
||||||
<a href="/experience" id="experience-button" class="nav-link white button">View all experiences.</a>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="footer-pad" class="dark width-pad">
|
|
||||||
<footer>
|
|
||||||
<h2>© 2022</h2>
|
|
||||||
<div class="flex"></div>
|
|
||||||
<a href="https://github.com/MajorDroolz" class="png-icon" target="_blank">
|
|
||||||
<img src="/res/icons/github.png" alt="GitHub" width="30" height="30">
|
|
||||||
</a>
|
|
||||||
<a href="https://www.linkedin.com/in/maximhutz/" class="png-icon" target="_blank">
|
|
||||||
<img src="/res/icons/linkedin.png" alt="LinkedIn" width="30" height="30">
|
|
||||||
</a>
|
|
||||||
<a href="mailto:maximhutz@gmail.com" class="nav-link white icon" data-i="mail" aria-label="Contact" target="_blank"></a>
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<dialog id="menu">
|
|
||||||
<div class="light width-pad shadow">
|
|
||||||
<div id="menu-inner">
|
|
||||||
<div id="menu-top">
|
|
||||||
<a href="/home" class="nav-link dark">MAX HUTZ</a>
|
|
||||||
<div class="flex"></div>
|
|
||||||
<form method="dialog">
|
|
||||||
<button class="nav-link dark icon" data-i="close" aria-label="Close"></button>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
<a href="/experience" class="nav-link dark icon" data-i="work">Experience</a>
|
|
||||||
<a href="/resume" class="nav-link dark icon" data-i="clinical_notes">Resume</a>
|
|
||||||
<a href="mailto:maximhutz@gmail.com" class="nav-link dark icon" data-i="mail">Contact</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</dialog>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
62
index.html
@@ -1,7 +1,55 @@
|
|||||||
<!DOCTYPE html>
|
---
|
||||||
<html>
|
title: Home
|
||||||
<head>
|
description: This is the home page of Maxim Voldman Hutz's personal website.
|
||||||
<meta http-equiv="Refresh" content="0; url=resume">
|
layout: default
|
||||||
<link rel="stylesheet" href="/styles.css">
|
---
|
||||||
</head>
|
|
||||||
</html>
|
{% assign home = site.data.home %}
|
||||||
|
{% assign work = site.data.work %}
|
||||||
|
|
||||||
|
<section id="about" class="light back">
|
||||||
|
<div class="flex"></div>
|
||||||
|
<div class="flex"></div>
|
||||||
|
<div>
|
||||||
|
<h1>{{ home.welcome }}</h1>
|
||||||
|
<i>{{ home.status }}</i>
|
||||||
|
</div>
|
||||||
|
<p id="about-me">{{ home.about }}</p>
|
||||||
|
<hr class="darker">
|
||||||
|
<nav>
|
||||||
|
<div id="inner-nav">
|
||||||
|
<a href="mailto:{{ home.email }}" class="nav-link blue button flex">{{ home.email }}</a>
|
||||||
|
<a href="/resume" class="nav-link red button r-icon flex" data-i="arrow_right" target="_blank">View Resume</a>
|
||||||
|
</div>
|
||||||
|
<div class="space"></div>
|
||||||
|
</nav>
|
||||||
|
<div class="flex"></div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id="projects" class="dark back">
|
||||||
|
<h2>Worked on:</h2>
|
||||||
|
<div id="project-list">
|
||||||
|
{% for project in home.featured %}
|
||||||
|
<a class="{{ work[project].color }} project-item shadow" href="/experience/{{ project }}">
|
||||||
|
{% if work[project].image %}
|
||||||
|
<div class="space project-image-outer">
|
||||||
|
<img src="{{work[project].image}}" alt="{{work[project].title}}" class="project-image">
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
<div class="project-noimage" aria-hidden="true">Image Not Available</div>
|
||||||
|
{% endif %}
|
||||||
|
<div class="nav-link project-link r-icon" data-i="arrow_right">
|
||||||
|
{{ work[project].title }}
|
||||||
|
<!-- Add the subtitle, if it exists. -->
|
||||||
|
{% if work[project].subtitle %}
|
||||||
|
<span>:</span>
|
||||||
|
|
||||||
|
<p>{{ work[project].subtitle }}</p>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
<hr class="lighter">
|
||||||
|
<a href="/experiences" id="experience-button" class="nav-link white button">View all experiences.</a>
|
||||||
|
</section>
|
||||||
BIN
res/.DS_Store
vendored
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
BIN
res/icons/.DS_Store
vendored
BIN
res/icons/github.webp
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 8.5 KiB |
BIN
res/icons/linkedin.webp
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 8.6 KiB |
BIN
res/projects/freshmanual.webp
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
res/projects/full/freshmanual.webp
Normal file
|
After Width: | Height: | Size: 683 KiB |
BIN
res/projects/full/malung.webp
Normal file
|
After Width: | Height: | Size: 550 KiB |
BIN
res/projects/full/pollbuddy.webp
Normal file
|
After Width: | Height: | Size: 351 KiB |
BIN
res/projects/full/rpi-crisis.webp
Normal file
|
After Width: | Height: | Size: 330 KiB |
BIN
res/projects/malung.webp
Normal file
|
After Width: | Height: | Size: 119 KiB |
BIN
res/projects/pollbuddy.webp
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
res/projects/rpi-crisis.webp
Normal file
|
After Width: | Height: | Size: 39 KiB |
@@ -3,7 +3,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<title>Resume of Maxim Voldman Hutz</title>
|
<title>Resume of Maxim Voldman Hutz</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="This page holds a preview of the resume of Maxim Voldman Hutz.">
|
<meta name="description" content="A preview of the resume of Maxim Voldman Hutz.">
|
||||||
|
|
||||||
<!-- Header metadata. -->
|
<!-- Header metadata. -->
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
@@ -16,8 +16,8 @@
|
|||||||
">
|
">
|
||||||
|
|
||||||
<!-- Resume styling. -->
|
<!-- Resume styling. -->
|
||||||
<link rel="preload stylesheet" as="style" href="/styles.css">
|
<link rel="preload stylesheet" as="style" href="/styles/global.css">
|
||||||
<link rel="preload stylesheet" as="style" href="index.css">
|
<link rel="preload stylesheet" as="style" href="/styles/resume.css">
|
||||||
|
|
||||||
<!-- Site's Icon -->
|
<!-- Site's Icon -->
|
||||||
<link rel="icon" type="image/png" href="/res/favicon.ico">
|
<link rel="icon" type="image/png" href="/res/favicon.ico">
|
||||||
38
styles.css
@@ -1,38 +0,0 @@
|
|||||||
* {
|
|
||||||
padding: 0;
|
|
||||||
border: 0;
|
|
||||||
margin: 0;
|
|
||||||
outline: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
:root {
|
|
||||||
--light: #FEFADC;
|
|
||||||
--dark: #504B43;
|
|
||||||
--red: #EC1B24;
|
|
||||||
--yellow: #E19200;
|
|
||||||
--green: #4CB753;
|
|
||||||
--blue: #2B9EB3;
|
|
||||||
|
|
||||||
--timing: cubic-bezier(0.2, 1, 0, 1);
|
|
||||||
--start-timing: cubic-bezier(0,.5,0,.9);
|
|
||||||
|
|
||||||
--grad: linear-gradient(45deg, #F008, #00F8);
|
|
||||||
--shadow: 0px 10px 50px 0 #0008;
|
|
||||||
}
|
|
||||||
|
|
||||||
.light { --color: var(--light) }
|
|
||||||
.dark { --color: var(--dark) }
|
|
||||||
.red { --color: var(--red) }
|
|
||||||
.yellow { --color: var(--yellow) }
|
|
||||||
.green { --color: var(--green) }
|
|
||||||
.blue { --color: var(--blue) }
|
|
||||||
.white { --color: white }
|
|
||||||
|
|
||||||
.flex-space, .flex { flex-grow: 1 }
|
|
||||||
.space { flex: 1000 }
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
html {
|
|
||||||
background: var(--dark);
|
|
||||||
}
|
|
||||||
30
styles/404.css
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
#notfound {
|
||||||
|
--color: var(--dark) linear-gradient(#0000, #0003);
|
||||||
|
flex: 99999999999999;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
color: white;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#notfound > * {
|
||||||
|
max-width: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#text-outer > i {
|
||||||
|
font-size: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#text-outer {
|
||||||
|
display: inline-flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#text-404 {
|
||||||
|
font-size: 160px;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
@@ -1,5 +1,23 @@
|
|||||||
|
html {
|
||||||
|
scroll-behavior: smooth;
|
||||||
|
background-image: linear-gradient(#0003 0% 50%, #0000 50% 100%),
|
||||||
|
linear-gradient(var(--dark) 0% 50%, var(--light) 50% 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
min-height: 100vh;
|
||||||
|
width: min(100vw, 1024px);
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin: auto;
|
||||||
|
padding: 0 20px;
|
||||||
|
line-height: 1.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
* {
|
* {
|
||||||
overflow: hidden;
|
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -7,20 +25,6 @@ button {
|
|||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
flex-direction: column;
|
|
||||||
justify-content: flex-start;
|
|
||||||
width: 100vw;
|
|
||||||
overflow-y: scroll;
|
|
||||||
}
|
|
||||||
|
|
||||||
html {
|
|
||||||
overflow-y: scroll;
|
|
||||||
scroll-behavior: smooth;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pre {
|
.pre {
|
||||||
all: unset;
|
all: unset;
|
||||||
white-space: pre;
|
white-space: pre;
|
||||||
@@ -41,18 +45,21 @@ html {
|
|||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon::before {
|
.icon::before {
|
||||||
font-family: 'Material Symbols Outlined';
|
font-family: 'Material Symbols Outlined';
|
||||||
content: attr(data-i);
|
content: attr(data-i);
|
||||||
font-size: 36px;
|
font-size: 36px;
|
||||||
|
width: 1em;
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.r-icon::after {
|
.r-icon::after {
|
||||||
font-family: 'Material Symbols Outlined';
|
font-family: 'Material Symbols Outlined';
|
||||||
content: attr(data-i);
|
content: attr(data-i);
|
||||||
|
width: 1em;
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,15 +77,24 @@ h2 {
|
|||||||
|
|
||||||
i {
|
i {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
font-size: "Source Serif Pro";
|
font-family: "Source Serif Pro";
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p, section {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
font-family: "Open Sans";
|
font-family: "Open Sans";
|
||||||
font-weight: 100;
|
font-weight: 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
list-style-type: "- ";
|
||||||
|
padding-left: 2ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
.lighter {
|
.lighter {
|
||||||
background: #fff4;
|
background: #fff4;
|
||||||
}
|
}
|
||||||
@@ -96,6 +112,7 @@ hr {
|
|||||||
color: var(--color);
|
color: var(--color);
|
||||||
position: relative;
|
position: relative;
|
||||||
padding: 10px 30px;
|
padding: 10px 30px;
|
||||||
|
font-size: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.button::before {
|
.button::before {
|
||||||
@@ -123,26 +140,6 @@ hr {
|
|||||||
|
|
||||||
/*----------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#header-outer {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
z-index: 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
header {
|
|
||||||
margin: auto;
|
|
||||||
max-width: 1024px;
|
|
||||||
display: flex;
|
|
||||||
gap: 40px;
|
|
||||||
font-size: 25px;
|
|
||||||
font-family: "Open Sans";
|
|
||||||
font-weight: bolder;
|
|
||||||
color: var(--dark);
|
|
||||||
align-items: center;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
#about {
|
#about {
|
||||||
position: relative;
|
position: relative;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
@@ -151,9 +148,8 @@ header {
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
max-width: 1024px;
|
max-width: 1024px;
|
||||||
min-height: 90vh;
|
min-height: 85vh;
|
||||||
color: var(--dark);
|
color: var(--dark);
|
||||||
padding-top: 30px;
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
gap: 30px;
|
gap: 30px;
|
||||||
}
|
}
|
||||||
@@ -178,7 +174,7 @@ nav {
|
|||||||
/*----------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#projects {
|
#projects {
|
||||||
margin: 30px auto;
|
padding: 30px 0;
|
||||||
position: relative;
|
position: relative;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@@ -199,7 +195,7 @@ nav {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.project-item {
|
.project-item {
|
||||||
min-width: max(40%, 300px);
|
min-width: min(max(40%, 400px), 100%);
|
||||||
flex: 1;
|
flex: 1;
|
||||||
height: 300px;
|
height: 300px;
|
||||||
background-color: var(--color);
|
background-color: var(--color);
|
||||||
@@ -220,19 +216,6 @@ nav {
|
|||||||
align-self: center;
|
align-self: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
#footer-pad {
|
|
||||||
background: var(--dark) linear-gradient(#0002, #0002);
|
|
||||||
}
|
|
||||||
|
|
||||||
footer {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
color: white;
|
|
||||||
max-width: 1024px;
|
|
||||||
margin: auto;
|
|
||||||
gap: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#menu {
|
#menu {
|
||||||
@@ -282,3 +265,32 @@ footer {
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.project-noimage {
|
||||||
|
color: #0002;
|
||||||
|
font-size: 40px;
|
||||||
|
font-family: "Open Sans";
|
||||||
|
font-weight: 900;
|
||||||
|
display: flex;
|
||||||
|
flex: 1000;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
text-align: center;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.project-image-outer {
|
||||||
|
position: relative;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.project-image {
|
||||||
|
position: absolute;
|
||||||
|
max-height: 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
83
styles/experience.css
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
#banner {
|
||||||
|
margin-top: 10px;
|
||||||
|
padding: 20px 0;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#experience {
|
||||||
|
color: white;
|
||||||
|
gap: 30px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
#content {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap-reverse;
|
||||||
|
align-items: flex-end;
|
||||||
|
gap: 30px;
|
||||||
|
padding-bottom: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#image {
|
||||||
|
background-color: #ccc;
|
||||||
|
border-radius: 10px;
|
||||||
|
height: 300px;
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
color: #aaa;
|
||||||
|
position: relative;
|
||||||
|
text-align: center;
|
||||||
|
padding: 10px;
|
||||||
|
hyphens: manual;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
#description {
|
||||||
|
flex: 1;
|
||||||
|
gap: 30px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
min-width: min(300px, 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
#image-side {
|
||||||
|
flex: 1;
|
||||||
|
gap: 20px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
min-width: min(500px, 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
#stack {
|
||||||
|
display: flex;
|
||||||
|
gap: 10px;
|
||||||
|
flex-flow: row wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
#stack .chip {
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#stack::after {
|
||||||
|
content: "";
|
||||||
|
flex: 1000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#image-inner {
|
||||||
|
max-width: 100%;
|
||||||
|
max-height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#close-icon {
|
||||||
|
font-size: 36px;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
12
styles/footer.css
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
footer {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
color: white;
|
||||||
|
max-width: 1024px;
|
||||||
|
margin: auto;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer::before {
|
||||||
|
filter: brightness(0.8);
|
||||||
|
}
|
||||||
71
styles/global.css
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
* {
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
margin: 0;
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--light: #FEFADC;
|
||||||
|
--dark: #504B43;
|
||||||
|
--red: #EC1B24;
|
||||||
|
--yellow: #E19200;
|
||||||
|
--green: #4CB753;
|
||||||
|
--blue: #2B9EB3;
|
||||||
|
|
||||||
|
--timing: cubic-bezier(0.2, 1, 0, 1);
|
||||||
|
--start-timing: cubic-bezier(0,.5,0,.9);
|
||||||
|
|
||||||
|
--grad: linear-gradient(45deg, #F008, #00F8);
|
||||||
|
--shadow: 0px 10px 50px 0 #0008;
|
||||||
|
|
||||||
|
--width: 1024px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.light { --color: var(--light) }
|
||||||
|
.dark { --color: var(--dark) }
|
||||||
|
.red { --color: var(--red) }
|
||||||
|
.yellow { --color: var(--yellow) }
|
||||||
|
.green { --color: var(--green) }
|
||||||
|
.blue { --color: var(--blue) }
|
||||||
|
.white { --color: white }
|
||||||
|
.malung { --color: #F76F8E }
|
||||||
|
.freshmanual { --color: #3b91db }
|
||||||
|
.pollbuddy { --color: #7f6491 }
|
||||||
|
.rpi-crisis { --color: #a06ce4 }
|
||||||
|
|
||||||
|
.flex-space, .flex, br { flex-grow: 1 }
|
||||||
|
.flex.dark { background-color: var(--dark) }
|
||||||
|
.space { flex: 1000 }
|
||||||
|
.npad { padding: 0 !important }
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
html {
|
||||||
|
background-color: var(--dark);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
.back {
|
||||||
|
position: relative;
|
||||||
|
padding: 10px 0;
|
||||||
|
width: min(100vw, 1024px, 100%);
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.back::before {
|
||||||
|
background: var(--color);
|
||||||
|
width: 100vw;
|
||||||
|
height: 100%;
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
top: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
content: "";
|
||||||
|
z-index: -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark-back::before {
|
||||||
|
filter: brightness(0.8);
|
||||||
|
}
|
||||||
13
styles/header.css
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
header {
|
||||||
|
position: sticky !important;
|
||||||
|
top: 0;
|
||||||
|
z-index: 10000;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
gap: 40px;
|
||||||
|
font-size: 25px;
|
||||||
|
font-family: "Open Sans";
|
||||||
|
font-weight: bolder;
|
||||||
|
color: var(--dark);
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
24
styles/tech.scss
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
---
|
||||||
|
|
||||||
|
.chip {
|
||||||
|
font-size: 15px;
|
||||||
|
font-family: "Open Sans";
|
||||||
|
font-weight: 900;
|
||||||
|
display: inline-flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
padding: 5px 20px;
|
||||||
|
border-radius: 10px;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
{% for tech in site.data.techs %}
|
||||||
|
{% assign id = tech[0] %}
|
||||||
|
{% assign data = tech[1] %}
|
||||||
|
|
||||||
|
.chip.{{id}} {
|
||||||
|
background: {{data.back}};
|
||||||
|
color: {{data.fore}};
|
||||||
|
}
|
||||||
|
{% endfor %}
|
||||||