A portfolio is a curated file tree
Your portfolio’s job is to load quickly, look intentional, and not go down during job-hunt week. It rarely needs a database. It needs reliable HTTPS, a custom domain that matches your name, and the ability to roll back when an experiment goes wrong. That is static hosting.
StaticHost fits portfolios that are HTML/CSS/JS, generator output, or exported design sites. Zip or GitHub deploys, HTTPS preview immediately, certificates after DNS verifies, deploy history. It will not run npm for you, will not SPA-fallback history routes, and will not give you email or cPanel. Short trial ~1 day; then Starter $9/mo (1 site, 2 GB) is the usual home for a single portfolio.
Information architecture that maps to files
Prefer real pages over a clever client router:
/
/work/
/work/project-a/
/work/project-b/
/about/
/contact/ # form posts to a third party
Each path is a folder with index.html or an about.html style file. Generators (Eleventy, Hugo, Astro static) excel at this. If you insist on a React SPA, use hash routing or SSG—hard refreshes on /work/project-a 404 under try_files $uri $uri/ =404. Details: SPA, React.
Visual weight versus plan storage
Portfolios die from 8 MB PNGs. Compress, use modern formats, lazy-load below the fold. 2 GB on Starter is ample for carefully prepared stills; photography specialists may need Pro/Scale—photography portfolio. There is no built-in CDN product; small files remain your best performance lever—fast static.
Deploy rhythm for people who redesign at midnight
- Build locally (
npm run build,hugo --minify, or save hand-written HTML). - Upload contents of the output folder—dist guide.
- QA on HTTPS preview (share with mentors without touching DNS).
- Only then refresh the custom domain—custom domain.
- If the new case study layout breaks mobile, roll back from deploy history before sunrise.
GitHub deploys help if you already version the site; remember StaticHost does not npm ci remotely—git deploy.
Case study pages that behave like documents
Each project page should stand alone if shared as a URL (recruiters love deep links). That alone is an argument for multipage SSG over a history-mode SPA. Include alt text, readable contrast, and a contact path that does not depend on server-side mail—use a form provider.
What not to bolt on
- WordPress “portfolio themes” running PHP—wrong host.
- Member-only areas needing server sessions—wrong architecture for this origin.
- A blog you intend to manage like WordPress—either go static with a generator or pick a PHP host.
Domain naming
yourname.com or yourname.dev is enough. Avoid endless redirects between three brand domains until the files are stable. TLS after DNS verify—SSL / mixed content.
Adjacent guides
Designers exporting Webflow/Figma HTML: static hosting for designers. Students: students. Resume-only one-pagers: resume.
Worked example: junior designer portfolio on Starter
Maya has four case studies, an about page, and a contact form. She designs in Figma, then rebuilds in clean HTML/CSS (or exports and cleans paths).
- Folder layout:
index.html,about.html,work/index.html,work/aurora/index.html, …,styles.css,img/*.webp. - Images: long edge 1600px, WebP, under ~300 KB each for heroes; thumbs smaller for the grid.
- Contact form
action→ form provider HTTPS endpoint (StaticHost will not send mail). - Zip contents so
index.htmlis at the root; upload to StaticHost on Starter ($9) after the short trial. - Open HTTPS preview; send the link to a mentor. Click every case study URL in a new tab (hard navigation)—each must 200.
- Add
maya.exampledomain; create DNS; wait for verification; wait for certificate. - Night-before-interview redesign goes wrong on mobile—roll back to yesterday’s deploy from history, then iterate on preview again.
She never needed Scale ($65) or Business ($130). She needed file discipline and rollback. If she later adds a React filter UI, she will read the SPA guide before inventing deep links that 404.
Failure table: portfolio-specific pain
| Symptom | Likely cause | Fix |
|---|---|---|
| Recruiter link 404s | Client-only route /work/foo | Emit work/foo/index.html or use hash |
| Preview unstyled | Nested zip | Re-zip build contents |
| Out of storage on Starter | Full-res PNGs / video files | Compress; host video elsewhere |
| Contact never arrives | Expecting host email | Form SaaS |
| Fonts missing on custom domain | Hotlink blocked / omitted files | Self-host font files in the zip |
| Mixed content warnings | http:// image CDN leftovers | Grep; force HTTPS |
| “Personal site down” during interviews | Experimental deploy without rollback plan | Use deploy history; QA on preview first |
Extra procedure: case study deep-link QA (before you mass-email recruiters)
- List every URL you plan to put in applications (
/work/project-a/, etc.). - On HTTPS preview, open each in a fresh tab (not only in-app clicks).
- Confirm images and CSS return 200; fix path typos.
- Run a mobile width pass; portfolios fail quietly on small screens.
- Submit one dummy contact form and verify delivery upstream.
- Only then put the custom domain on business cards (after DNS + cert).
- Keep a dated zip of the “interview safe” build offline as well as in deploy history.
No forever-free after trial; no cPanel; no built-in CDN product—lean images matter more than plan mythology. When photography weight dominates, jump to the photography guide rather than stuffing RAW files into a brochure portfolio.
Writing case studies that survive recruiter skimming
Recruiters often open one deep link from your PDF resume and decide in thirty seconds. Each case study page should answer: context, your role, constraints, what you shipped, and outcome—above the fold enough that a slow image grid does not hide the story. Static multipage HTML helps because the URL they open is the document.
Avoid autoplaying video backgrounds on portfolio home pages; they tax mobile data and fail awkwardly on StaticHost the same as anywhere else when files are huge. Prefer a still poster image and an external video link. Update your portfolio on a cadence (monthly) rather than rewriting everything the night before interviews; deploy history exists so experimentation is safe, not so every hour is a production gamble. When a mentor reviews HTTPS preview, ask them to open case study URLs cold in a new profile—exactly how hiring managers will.
FAQ
Is Starter enough for a portfolio with video?
Maybe not if you self-host large video files. Prefer streaming hosts for video; keep StaticHost for pages and posters.
Can I password-protect a draft case study?
Not as a first-class app feature here. Use a separate unlinked preview URL, staging on Pro, or an external auth gate in front if you must.
Should my portfolio be a React app?
Only if the interactivity needs it. Many outstanding portfolios are HTML/CSS with restrained JS.
How do I show WIP work to one client?
Pro staging or a second site on higher plans; or a private netlify-style competitor—here, staging on Pro is the in-product answer.
Will history-mode project filters SEO well on this host?
URLs that 404 on refresh do not SEO well. Emit real pages.