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

  1. Build locally (npm run build, hugo --minify, or save hand-written HTML).
  2. Upload contents of the output folder—dist guide.
  3. QA on HTTPS preview (share with mentors without touching DNS).
  4. Only then refresh the custom domain—custom domain.
  5. 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).

  1. Folder layout: index.html, about.html, work/index.html, work/aurora/index.html, …, styles.css, img/*.webp.
  2. Images: long edge 1600px, WebP, under ~300 KB each for heroes; thumbs smaller for the grid.
  3. Contact form action → form provider HTTPS endpoint (StaticHost will not send mail).
  4. Zip contents so index.html is at the root; upload to StaticHost on Starter ($9) after the short trial.
  5. Open HTTPS preview; send the link to a mentor. Click every case study URL in a new tab (hard navigation)—each must 200.
  6. Add maya.example domain; create DNS; wait for verification; wait for certificate.
  7. 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

SymptomLikely causeFix
Recruiter link 404sClient-only route /work/fooEmit work/foo/index.html or use hash
Preview unstyledNested zipRe-zip build contents
Out of storage on StarterFull-res PNGs / video filesCompress; host video elsewhere
Contact never arrivesExpecting host emailForm SaaS
Fonts missing on custom domainHotlink blocked / omitted filesSelf-host font files in the zip
Mixed content warningshttp:// image CDN leftoversGrep; force HTTPS
“Personal site down” during interviewsExperimental deploy without rollback planUse deploy history; QA on preview first

Extra procedure: case study deep-link QA (before you mass-email recruiters)

  1. List every URL you plan to put in applications (/work/project-a/, etc.).
  2. On HTTPS preview, open each in a fresh tab (not only in-app clicks).
  3. Confirm images and CSS return 200; fix path typos.
  4. Run a mobile width pass; portfolios fail quietly on small screens.
  5. Submit one dummy contact form and verify delivery upstream.
  6. Only then put the custom domain on business cards (after DNS + cert).
  7. 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.