4.0 KiB
Keith Casko — Portfolio
A static personal portfolio for Keith Casko, targeting IT Support, Help Desk, Desktop Support, Junior SysAdmin, and Cloud Support / Operations roles.
Stack: plain HTML, CSS, and a tiny vanilla JS file (mobile nav + footer year). No build step. No frameworks.
Run locally
Any static server works. Easiest options from the project root:
# Python 3
python -m http.server 8080
# Node (if installed)
npx serve .
Then open http://localhost:8080
Opening index.html directly in a browser also works; using a local server
is only needed if you later add fetches or routing.
Project structure
keith-portfolio/
├── index.html
├── css/
│ └── styles.css
├── js/
│ └── main.js
├── assets/
│ ├── images/ # portrait, hero rack/workstation photos
│ ├── screenshots/ # project screenshots
│ └── resume/ # keith-casko-resume.pdf
└── README.md
Things to replace before publishing
Every spot that needs a real value is marked with REPLACE in an HTML
comment. Search the project for REPLACE to find all of them. The main ones:
- Resume PDF — put the file at
assets/resume/keith-casko-resume.pdf(two links inindex.html: hero "Download Resume" button and footer). - GitHub — footer link, replace
https://github.com/REPLACE_ME. - LinkedIn — footer link, replace
https://www.linkedin.com/in/REPLACE_ME. - Email — footer and Contact section, replace
you@example.com(twomailto:links). - Project links — four
View Project ›links in the Featured Projects section currently point to#. Point each to the real repo or live demo.
Screenshots & images
Drop the real files into these paths and remove the placeholder <div>s
in index.html (replace with <img src="…" alt="…">):
assets/images/hero-rack.jpg— homelab, rack, or workstation photoassets/images/portrait.jpg— portrait photo for the About sectionassets/screenshots/bytegeist-ad.jpg— Windows Server / AD lab screenshotassets/screenshots/bytegeist-support.jpg— Support Lab app screenshotassets/screenshots/linux-docker.jpg— Grafana / Portainer / Uptime Kumaassets/screenshots/aws-tracker.jpg— AWS Cloud Study Tracker UI
Keep images reasonably sized (e.g. 1600px wide max, JPEG quality ~80, or WebP) for fast loads.
Deploy
AWS Amplify (manual deploy, no Git connection required)
- In the Amplify Console, choose Host web app → Deploy without Git.
- Zip the whole project folder (
index.html,css/,js/,assets/) and drag the zip into the uploader. Name the environment e.g.prod. - Amplify gives you an
*.amplifyapp.comURL. To use a custom domain, open the app → Domain management → Add domain.
For redeploys, upload a new zip to the same environment.
GitHub Pages
- Push this folder to a GitHub repo (e.g.
keith-portfolio). - Repo → Settings → Pages.
- Source: Deploy from a branch. Branch:
main(ormaster), folder:/ (root). Save. - GitHub publishes to
https://<username>.github.io/keith-portfolio/. Allow a minute for the first build.
For a custom domain, add a CNAME file at the project root containing
the domain, and configure DNS to point at GitHub Pages.
Vercel
- Install the CLI once:
npm i -g vercel. - From the project root:
vercel(follow prompts) and thenvercel --prod.
Or connect the GitHub repo in the Vercel dashboard — framework preset is
Other; no build command; output directory is . (the repo root).
Accessibility & performance notes
- Semantic HTML (
<header>,<nav>,<main>,<section>,<article>,<footer>), one<h1>, proper heading hierarchy. - Visible focus outlines on links and buttons.
- Mobile nav toggle, responsive layouts at 980px and 640px.
- No external JS/CSS dependencies — single CSS file, single JS file.
alttext /aria-labels on image placeholders; update them when swapping placeholders for real images.