# 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 in `index.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` (two `mailto:` 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 `
`s in `index.html` (replace with `…`): - `assets/images/hero-rack.jpg` — homelab, rack, or workstation photo - `assets/images/portrait.jpg` — portrait photo for the About section - `assets/screenshots/bytegeist-ad.jpg` — Windows Server / AD lab screenshot - `assets/screenshots/bytegeist-support.jpg` — Support Lab app screenshot - `assets/screenshots/linux-docker.jpg` — Grafana / Portainer / Uptime Kuma - `assets/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) 1. In the Amplify Console, choose **Host web app → Deploy without Git**. 2. Zip the whole project folder (`index.html`, `css/`, `js/`, `assets/`) and drag the zip into the uploader. Name the environment e.g. `prod`. 3. Amplify gives you an `*.amplifyapp.com` URL. To use a custom domain, open the app → **Domain management → Add domain**. For redeploys, upload a new zip to the same environment. ### GitHub Pages 1. Push this folder to a GitHub repo (e.g. `keith-portfolio`). 2. Repo → **Settings → Pages**. 3. Source: **Deploy from a branch**. Branch: `main` (or `master`), folder: `/ (root)`. Save. 4. GitHub publishes to `https://.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 1. Install the CLI once: `npm i -g vercel`. 2. From the project root: `vercel` (follow prompts) and then `vercel --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 (`
`, `