Personal portfolio website for heymaikol.github.io, built as a lightweight static site and deployed with GitHub Pages.
This repository contains a single-page portfolio focused on clear presentation of background, experience, selected projects, and contact information. The site is intentionally simple to maintain: semantic HTML, custom CSS, and a small vanilla JavaScript theme module with no build step.
- Single-page layout with sections for Home, About, Experience, Projects, and Contact
- Four selectable color themes (
tokyo-night,aurora-fog,ember-forge,deep-forest) with saved preference inlocalStorage - Self-hosted fonts and SVG icons to reduce third-party dependencies
- Responsive design for desktop, tablet, and mobile breakpoints
- In-page navigation anchors account for sticky header height so section titles remain visible
- Security-minded metadata in
index.html(CSP, permissions policy, and strict referrer policy) - Downloadable resume and direct links to LinkedIn, GitHub, and email
- HTML5
- CSS3 (custom properties, layout grids, media queries)
- Vanilla JavaScript (theme persistence and UI synchronization)
- Self-hosted WOFF2 assets
- GitHub Actions (quality checks)
- GitHub Pages (deployment)
.
|- .github/
| `- workflows/
| `- quality-checks.yml
|- assets/
| |- fonts/
| | |- ibm-plex-mono-400-latin.woff2
| | |- ibm-plex-sans-400-700-latin.woff2
| | `- syne-700-latin.woff2
| |- icons/
| | |- cplusplus.svg
| | |- go.svg
| | |- java.svg
| | |- location-pin.svg
| | |- python.svg
| | |- rust.svg
| | |- typescript.svg
| | `- vuejs.svg
| `- resume/
| `- MichaelPlaczek_Resume.pdf
|- index.html
|- robots.txt
|- sitemap.xml
|- style.css
|- theme-switcher.js
`- README.md
No install or build process is required.
- Clone the repository.
- Open
index.htmldirectly in your browser.
Optional local server:
python3 -m http.server 8000Then visit http://localhost:8000.
- Content: Update portfolio copy, project cards, and contact information in
index.html. - Styling: Update layout, spacing, typography, and component styling in
style.css. - Anchor offset:
style.cssdefines--anchor-offsetand applies it viascroll-margin-toponmain > section[id]to prevent section headers from being hidden by the sticky nav. - Themes:
- Update theme variables in
:rootand each[data-theme="..."]block instyle.css. - Update the shared theme catalog in
<script id="theme-meta" type="application/json">inindex.html. - Keep each catalog key aligned with its matching
[data-theme="..."]block instyle.css; theme options are generated automatically bytheme-switcher.js.
- Update theme variables in
- Assets: Replace files in
assets/resume/,assets/icons/, orassets/fonts/as needed, then update references inindex.html/style.css. - Rust logo attribution:
assets/icons/rust.svgis the Rust programming language logo by the Rust Foundation, sourced from Wikimedia Commons and licensed under CC BY 4.0. The Rust logo is a trademark of the Rust Foundation.
- A GitHub Actions workflow runs on pushes to
mainand all pull requests. html-validateverifiesindex.html.- Lychee validates links and anchors in
index.htmlandREADME.md(including external links) with retries for transient network failures.
This repo is intended for GitHub Pages hosting as a user site (<username>.github.io).
Changes are published when pushed to the branch configured for Pages in repository settings.
- Email:
mplaczek99@gmail.com