Retroframe is a retro Web 2.0 style academic personal website template for researchers, professors, and technical builders.
It is designed for people who want a structured, publication-ready homepage that feels distinctive and content-focused, rather than a generic modern landing page.
Free to use and modify. Attribution in the footer is highly appreciated but not required.
content/site.js: site-wide copy, profile data, links, ticker items, and partner logoscontent/projects/*.js: one file per project or publicationcontent/projects/_template.js: starter file for a new projectscripts/build.js: generates the static siteassets/: shared CSS, JavaScript, and imagesindex.htmlandprojects/*/index.html: generated output
npm install
npm run build
npm run previewThen open http://localhost:8888.
Most edits happen in:
content/site.jscontent/projects/*.js
This template also works well with coding tools such as Claude Code, Codex, and Cursor. You can ask them to replace the demo content with your own projects, publications, links, and profile information very quickly.
Then rebuild:
npm run build- A retro-style homepage with sidebar profile, logo strip, featured work, and a ticker
- Project detail pages with a consistent side column
- A gallery slider for media-heavy projects
- A clean relative-link build system so the output can be hosted as static files
- A demo setup aimed at researchers and engineers, including projects and publications
- The demo profile photo and work images use free photos from Unsplash. Replace them with your own images before publishing if you want a fully personal site.
- The "Trusted By" logo strip uses major tech company logos as demo placeholders. Those brands are not affiliations unless you actually add them for your own site.
This template builds to plain static files, so it can be hosted on GitHub Pages without a server.
- Fork this repository into your own GitHub account.
- Rename the forked repository to
<username>.github.io. - Run
npm installandnpm run build. - Commit the generated
index.html,projects/,publications/,about/, andassets/output. - Push the changes to your fork.
- On GitHub, open
Settings->Pages. - Choose your publishing source:
Use
Deploy from a branchif you want to publish the built files directly frommainorgh-pages. Use a custom GitHub Actions workflow if you want GitHub to run the build for you. - If you publish from a branch and do not want Jekyll processing, add an empty
.nojekyllfile in the publishing root. - Wait for the Pages deployment to finish, then open your
https://<username>.github.iosite.
Notes:
- For a user or organization site, the repository name should be
<username>.github.io. - For a project site, the URL is usually
https://<username>.github.io/<repository>/. - If your repository is public, GitHub Pages hosting is free.
You can connect a custom domain you bought from Namecheap, Cloudflare, Squarespace Domains, GoDaddy, or another DNS provider.
- Publish the site on GitHub Pages first and confirm the default
github.ioURL works. - In GitHub, open
Settings->Pages, enter your custom domain, and save. - In your domain provider DNS settings, add the records GitHub Pages expects.
For an apex domain such as example.com:
- Add
Arecords pointing to185.199.108.153 - Add
Arecords pointing to185.199.109.153 - Add
Arecords pointing to185.199.110.153 - Add
Arecords pointing to185.199.111.153 - Optionally add the four
AAAArecords from GitHub Docs if you want IPv6 support
For a subdomain such as www.example.com:
- Add a
CNAMErecord fromwwwto your default Pages host, such as<username>.github.io
Recommended setup:
- Use
www.example.comas the main custom domain because GitHub Docs describeswwwas the most stable option - Also configure the apex domain so GitHub can redirect
example.comtowww.example.com - Verify the domain in GitHub to reduce takeover risk
- Wait for DNS propagation, which GitHub Docs says can take up to 24 hours
If you want the simplest setup, use this workflow:
- Edit
content/site.jsandcontent/projects/*.js - Run
npm run build - Push the generated static files to GitHub
- Turn on GitHub Pages
- Add a custom domain later if you need it
npm run build
npm run previewpreview runs on port 8888.
- Creating a GitHub Pages site
- Managing a custom domain for your GitHub Pages site
- About custom domains and GitHub Pages
- Verifying your custom domain for GitHub Pages
MIT

