Press Start is designed to deploy to GitHub Pages out of the box. Because the build output is fully static HTML, JavaScript, and CSS, GitHub Pages can serve it with zero server configuration. The repo already includes aDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/press-start/llms.txt
Use this file to discover all available pages before exploring further.
.nojekyll file and a complete set of per-route HTML shells under pages/ so that direct URL navigation works correctly without any redirect rules.
Deployment steps
Fork or clone the repository
Start with your own copy of the repo so you can push changes and configure GitHub Pages under your account:Replace
your-username with your GitHub username after forking.Build with Vite
Compile the React application into the static Vite writes
dist/ directory:dist/index.html, dist/assets/main.js, dist/assets/main.css, and the full set of dist/pages/*.html shells. The build typically finishes in a few seconds.Configure GitHub Pages in repository Settings
In your GitHub repository, navigate to Settings → Pages.
- Source: select the branch that contains your built files (usually
mainor a dedicatedgh-pagesbranch). - Folder: set to
/ (root)if the built files are at the repo root, or/distif you push only thedist/contents.
Push the built files
Commit and push the Option B — push dist/ contents to a gh-pages branch:With Option B, set the GitHub Pages source branch to
dist/ output (or the files within it) to the branch you configured above.Option A — commit dist/ to main:gh-pages and folder to / (root).Access your live site
Once GitHub Pages finishes deploying, your portfolio is available at:Replace
[username] with your GitHub username and press-start with your repository name if you renamed the fork. Each route is accessible directly, for example https://[username].github.io/press-start/pages/About.html.The .nojekyll file
The repo root contains an empty file named.nojekyll. By default, GitHub Pages runs every repository through Jekyll — a static site generator that deliberately ignores files and folders whose names begin with an underscore (_). This would silently drop asset directories named _assets or similar, breaking the page.
Placing an empty .nojekyll file at the root of the published branch tells GitHub Pages to skip Jekyll processing entirely and serve files exactly as they appear in the repository. The file has no contents — its presence alone is the signal.
Static HTML shell routing strategy
GitHub Pages is a static file host. It has no awareness of React Router, so a visitor navigating directly to a client-side route — for example by typinghttps://[username].github.io/press-start/pages/About.html into the address bar or sharing a link — would normally receive a 404 error because there is no server to rewrite the URL to index.html.
Press Start solves this without any server configuration. Each route has a corresponding HTML shell file under pages/. When the browser loads one of these files, a small inline bootstrap script immediately sets the browser’s URL hash to the correct route path and stores the intended route in window.__STATIC_PAGE_ROUTE__. The main React bundle then reads window.location.hash on mount and renders the matching page component.
The full set of route shells is:
| File | Route rendered |
|---|---|
pages/About.html | /about — biography and background |
pages/Projects.html | /projects — project showcase |
pages/Skills.html | /skills — technology skill set |
pages/Writing.html | /writing — articles and posts |
pages/CaseStudies.html | /case-studies — in-depth case studies |
pages/Contact.html | /contact — contact form |
pages/About.html:
assets/main.js bundle that powers the root index.html is loaded as an ES module. React mounts into <div id="root">, React Router reads the hash, and the correct view renders — all without a server redirect.
Custom domain
To serve Press Start from your own domain (for exampleportfolio.yourname.dev), add a CNAME file to the root of your published branch containing just the domain name:
CNAME DNS record at your domain registrar pointing to [username].github.io. GitHub Pages detects the CNAME file automatically and provisions an HTTPS certificate via Let’s Encrypt within a few minutes.
The current repository already contains a pre-built
assets/ directory committed at the repo root. If you are deploying the repository as-is without any code changes, you can configure GitHub Pages to serve directly from the main branch root and skip running npm run build entirely. The committed build artefacts are production-ready.