This is a static portfolio website for samfa12.com, showcasing games, books,
apps, music, assets, and links for Samfa12.
index.html– all sections and layoutstyles.css– dark, responsive styling and component stylesscript.js– data-driven project rendering and filteringdata/projects.json– editable source of projects/cardsassets/favicon.svg– site iconassets/og-image.png– social preview imageassets/thumbnails/– local project card thumbnailsCNAME–samfa12.comdomain file.github/workflows/pages.yml– optional GitHub Pages deploy workflow
Update the file data/projects.json.
Each project entry has:
titlecategorytypestatusdescriptiontagsfeatured(true/false)links(array of{ "label": "...", "url": "..." })
Project categories used by the site:
GamesBooksApps & ToolsAssetsMusicSocialStorefronts
Option A: Simple Python server
python -m http.server 8000Then open:
http://localhost:8000
Option B: VS Code Live Server
- Open the folder in VS Code.
- Right-click
index.htmland choose Open with Live Server.
- Go to GitHub repo Settings.
- Open Pages.
- Choose Deploy from branch.
- Branch:
main. - Folder:
/root. - Save.
If your workflow file exists (.github/workflows/pages.yml), pushing to
main will publish to GitHub Pages automatically.
For samfa12.com, keep the following records in Porkbun:
- Root/apex A records for
@:185.199.108.153185.199.109.153185.199.110.153185.199.111.153
- CNAME record:
www -> Samfa12-tech.github.io
In GitHub Pages settings, set the custom domain to:
samfa12.com
Then enable Enforce HTTPS (when available).
- DNS can take time to propagate.
- Ensure
CNAMEcontains only:samfa12.com
- Ensure GitHub Pages has the custom domain field set to
samfa12.com. - Confirm Porkbun records match the list above.
- This site is hosted via GitHub Pages only. No paid hosting is required.
Thumbnails are optional. Cards must render cleanly without them. When a project
has artwork, store it locally under assets/thumbnails/ and point the project to
thumbnail and thumbnailAlt in data/projects.json.
- Use local PNG/WebP/SVG files only. Do not hotlink remote thumbnails.
- Keep thumbnails at a 16:9 ratio for games/apps.
- Use a 4:5 ratio for books when possible.
- Leave
thumbnailunset when no safe local asset exists yet. - Example fields:
"thumbnail": "assets/thumbnails/toknight.webp""thumbnailAlt": "Cover image for ToKnight"
This repo includes a local thumbnail crawler to refresh card images from project links.
-
Refresh missing thumbnails only:
npm run fetch:thumbnails
-
Rebuild every thumbnail image from scratch (including already-existing files):
npm run fetch:thumbnails -- --force
Notes:
- The script updates
data/projects.jsonwith any new local thumbnail paths it finds. - If no valid image can be found, the project is left without a thumbnail so the card renders as text only.
- Review the generated diff before committing and push only after checking the updated thumbnails.
- Keyboard focus styles are included for all interactive controls.
- External links open in a new tab with
rel="noopener noreferrer". - The layout is mobile-first with responsive grids and readable typography.