Build-time static generation: a Go program reads resume content and GitHub statistics, renders html/template templates, and outputs static HTML
whoami — HTML Portfolio Template
By prorochestvo
whoami is the personal CV / portfolio site of Seilbek Skindirov, built by a build-time static site generator written in Go that renders resume content and GitHub stats into static HTML and deploys it to Cloudflare Pages.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Actual screenshot captured by the server browser.
All pages & views 2
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
No runtime server; the build/ directory is published directly to Cloudflare Pages
GitHub statistics are refreshed by a scheduled task triggering a deploy hook to rebuild, rather than by a persistent backend
The frontend is native HTML/CSS/JS, with no frameworks, bundlers, npm dependencies, or WASM
The JetBrains Mono font is self-hosted, and pages load no runtime CDN resources
Code is organized in DDD layers, separating resume content, the GitHub client, rendering use cases, and templates
Template Details
whoami is a personal resume / portfolio website template; the repository contains both the site content and the Go program that generates it. There is no runtime server: cmd/whoami reads the resume content, fetches statistics via the GitHub API, then uses html/template to render templates into static HTML, writing it to the build/ directory together with static assets such as CSS, JS, fonts, and images under web/, and finally publishes build/ to Cloudflare Pages. GitHub statistics are refreshed by a scheduled task that triggers a Cloudflare deploy hook to rebuild, rather than by a persistent backend.
The project is layered in a DDD style: internal/domain holds pure resume value objects, internal/repository/resume is the in-memory data source for resume content, internal/infrastructure/github is the build-time GitHub client, internal/application/site contains the Builder use case and Renderer, internal/dto defines the Page view model passed to templates, and templates/ holds layout and content templates. The frontend is deliberately minimal: native HTML/CSS/JS, with no frameworks, bundlers, npm dependencies, or WASM; the JetBrains Mono font is self-hosted under web/fonts/, with no runtime CDN dependency.
The README explicitly states that the repository is still under construction and that some described content has not yet been implemented. The GitHub client degrades gracefully when a token is missing or there is no network at build time, ensuring the build always produces output; the GitHub token exists only as a Cloudflare Pages environment secret and is not written into the generated output.
Is it right for your project?
Use Cases
- Building a personal resume or portfolio static site and deploying it to Cloudflare Pages
- Generating SEO-friendly static pages at build time with Go and html/template
- Displaying GitHub statistics in a static site and keeping them updated through scheduled rebuilds
- Using it as a reference project for learning the layered structure of a build-time static site generator
Suitable For
- Developers who want to generate a static resume / portfolio site with Go
- Users who need to deploy the site to Cloudflare Pages and accept scheduled rebuilds to refresh data
- Developers who prefer native HTML/CSS/JS and do not want to introduce frontend frameworks or bundlers
- Users who can prepare their own resume content, GitHub token, and hosting configuration
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
After cloning the repository, run make build to run the generator, which writes output to build/; make run builds and previews build/ locally
- 2
Optionally set WHOAMI_GITHUB_TOKEN to raise the build-time GitHub API rate limit; this token should not appear in the generated output, and the .env file should not be committed
- 3
When deploying to Cloudflare Pages, the build command is make build, the output directory is build/, and the WHOAMI_GITHUB_TOKEN environment secret must be configured in the project settings
- 4
Refreshing GitHub statistics depends on a scheduled task triggering a Cloudflare deploy hook; this scheduled task must be configured separately
- 5
The README states that the repository is still under construction and that some described content has not yet been implemented; check the current code state before use
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version in the public repository under the MIT license; the free scope is the code of that version and does not mean that external services or third-party assets are free.
Must comply with when using
- The code of this version may be used, modified, used commercially, and distributed free of charge.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses and cannot be judged solely by the code's MIT license.
- External services such as domains, hosting, databases, payments, or AI may incur separate charges.
- The GitHub statistics fetched at build time are fixed to the account prorochestvo; users who want to display their own statistics must change the username in the code.
- When deploying to Cloudflare Pages, the WHOAMI_GITHUB_TOKEN environment secret must be configured in the project settings; otherwise the GitHub API rate is limited at build time.
- Refreshing GitHub statistics depends on configuring a scheduled task to trigger a Cloudflare deploy hook to rebuild the site; without it, the data will not update automatically.
- The GitHub token must not appear in the generated output, and committing the .env file is prohibited; users must ensure the secret is not leaked.
- The repository is still under construction, and some features described in the README have not yet been implemented; check the current code implementation state before use.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
The GitHub user whose stats are fetched is `prorochestvo`.
Original README
**Environment secret:** `WHOAMI_GITHUB_TOKEN` set in the Pages project settings.
Original README
a scheduled job (cron) triggers a Cloudflare **deploy hook** to rebuild the site, pulling fresh GitHub stats — no always-on server required.
Original README
The token must **never** appear in generated output. - Never commit a `.env` file.
Original README
https://github.com/prorochestvo/whoami/blob/main/LICENSEhttps://github.com/prorochestvo/whoami/blob/main/README.mdThe repository is currently being scaffolded — some of the pieces described below > are still landing. Anything not yet implemented is called out explicitly.
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-10. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- More documented · 85 / 100
- Technologies
- HTML
- Website type
- Portfolio · Tool Site
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2026-10-10
- Screenshot last checked
- 2026-10-10
A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.
The catalog identifies HTML as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Review declaration: [email protected] · 2026-10-10
Inspect the recorded source material
SHA-256: 14838f992deda1eef9d0d8f6019554011569b652185d6ae2e8bf113efe70c4cd
2026-10-10T04:31:56.849Z
Source file / repository# whoami Personal portfolio / CV site for Seilbek Skindirov ([github.com/prorochestvo](https://github.com/prorochestvo)), built as a static site by a Go generator and deployed to Cloudflare Pages. > The repository is currently being scaffolded — some of the pieces described below > are still landing. Anything not yet implemented is called out explicitly. ## How it works There is no live server. `whoami` is a **build-time static-site generator**: 1. `cmd/whoami` reads the CV content, fetches GitHub stats over the API, and renders `html/template` sources into static HTML. 2. The HTML plus all static assets are written into `build/`. 3. `build/` is published to Cloudflare Pages. GitHub stats are kept fresh by a **scheduled rebuild** (cron → Cloudflare deploy hook), not by an always-on backend. Why static instead of a live server: - **Free & simple** — no runtime, no database, nothing to keep alive. - **Fast** — everything is pre-rendered static files served from the edge. - **Crawlable / good SEO** — content is server-rendered into HTML at build time, so crawlers see the real content, not a client-side render. - **Fresh enough** — a scheduled rebuild refreshes GitHub stats (~daily) without paying for an always-on process. - **Token stays in CI** — the GitHub token lives only as a Cloudflare Pages env secret and is never emitted into the generated output. The GitHub client degrades gracefully: if there is no token or no network at build time, it falls back rather than failing, so the build always produces output. ## Quick start ```bash git clone https://github.com/prorochestvo/whoami.git cd whoami make build # run the generator → build/ make run # build, then serve build/ locally for preview ``` Then open the local preview URL printed by `make run` (e.g. http://localhost:8080). ### Make targets | Target | What it does | |---------------|--------------------------------------------------------| | `make build` | Runs the generator, writing output into `build/`. | | `make run` | Builds, then serves `build/` locally for preview. | | `make test` | `go fmt` + `go vet` + `go test ./...`. | | `make format` | `go fmt ./...`. | | `make clean` | Removes build artifacts. | ## Project structure The layout is a DDD-style split (mirroring the `beacon` project): | Path | Role | |-------------------------------------|---------------------------------------------------------------------------| | `cmd/whoami/main.go` | Generator entry point / composition root. | | `internal/domain/` | Pure CV value objects (no dependencies). | | `internal/repository/resume/` | In-memory source of truth for the CV content (`Load()`). | | `internal/infrastructure/github/` | Build-time GitHub API client (degrades gracefully when offline / no token).| | `internal/application/site/` | `Builder` use-case + `Renderer` (templates → `build/`, copies `web/*`). | | `internal/dto/` | `Page` view model passed to templates. | | `templates/*.tmpl` | `html/template` sources (`layout` + `content`). | | `web/` | Static source assets: `css/`, `js/`, `fonts/`, `img/`, `robots.txt`, `_headers`. | | `build/` | Generated output (gitignored); Cloudflare Pages output directory. | | `.agents/plans/` | Markdown task plans (active → `completed/` → `history/`). | - Module: `github.com/prorochestvo/whoami` - Go: 1.26 ## Configuration | Variable | Required | Purpose | |------------------------|----------|-------------------------------------------------------------------------| | `WHOAMI_GITHUB_TOKEN` | No | Raises the GitHub API rate limit at build time. Injected as a Cloudflare Pages env secret in CI. | - The GitHub user whose stats are fetched is `prorochestvo`. - The token must **never** appear in generated output. - Never commit a `.env` file. ## Deployment Deployed via **Cloudflare Pages**: - **Build command:** `make build` - **Output directory:** `build/` - **Environment secret:** `WHOAMI_GITHUB_TOKEN` set in the Pages project settings. - **Stats refresh:** a scheduled job (cron) triggers a Cloudflare **deploy hook** to rebuild the site, pulling fresh GitHub stats — no always-on server required. ## Design A code-editor / terminal aesthetic: - **JetBrains Mono**, self-hosted in `web/fonts/` — no runtime CDN. - Dark theme, near-monochrome with a single accent color. ## Front-end constraints The generated front-end is intentionally minimal: - Vanilla HTML / CSS / JS — no framework, no bundler, no npm dependencies, no WASM. - Fonts are self-hosted; nothing is loaded from a runtime CDN. - Content is server-rendered into HTML at build time, so the site is fast and crawlable. - GitHub data injected into templates is auto-escaped by `html/template`.
Explore similar templates
Compare previews and descriptions within the same stack and category.

simplefolio
Simplefolio is a minimal single-page portfolio template for developers, built with HTML, Bootstrap, SCSS, and Parcel under the MIT license. It includes Hero, About, Projects, Contact, and Footer sections, with content edited in /src/index.html and theme colors controlled by two SCSS variables.
HTML · Portfolio

Freelancer
A bright, single-page Bootstrap portfolio template for freelancers, designers, and small studios. It includes a responsive portfolio grid with modal detail windows and an SB Forms contact form that requires an API token.
HTML · Portfolio

Resume
A single-page resume and CV template from Start Bootstrap, built on Bootstrap with a fixed sidebar and content sections.
HTML · Portfolio

Creative
A single-page marketing template by Start Bootstrap for creative agencies and product services, built on Bootstrap with SCSS, featuring a portfolio grid and call-to-action sections. It includes pre-set SB Forms markers for form integration and npm build scripts for source customization.
HTML · Corporate Website

Grayscale
A dark single-page Bootstrap template from Start Bootstrap for photography, events and brand storytelling, with a large hero and clearly separated sections.
HTML · Corporate Website

markdown live preview
An open-source Markdown live preview tool built with HTML, offering an online demo and a simple structure. It is suitable as a starting point for text-processing tool sites, Markdown editors, or front-end interaction prototypes.
HTML · Tool Site
