HTMLPortfolioTool Site

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.

2 previews
Desktop homepage1 / 2
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 2

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-10View source

What stands out

A quick read of the recorded project description.

01

Build-time static generation: a Go program reads resume content and GitHub statistics, renders html/template templates, and outputs static HTML

02

No runtime server; the build/ directory is published directly to Cloudflare Pages

03

GitHub statistics are refreshed by a scheduled task triggering a deploy hook to rebuild, rather than by a persistent backend

04

The frontend is native HTML/CSS/JS, with no frameworks, bundlers, npm dependencies, or WASM

05

The JetBrains Mono font is self-hosted, and pages load no runtime CDN resources

06

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.

HTMLPortfolioTool Site

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. 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. 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. 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. 4

    Refreshing GitHub statistics depends on a scheduled task triggering a Cloudflare deploy hook; this scheduled task must be configured separately

  5. 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

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This 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

The repository is currently being scaffolded — some of the pieces described below > are still landing. Anything not yet implemented is called out explicitly.

Original README
https://github.com/prorochestvo/whoami/blob/main/LICENSEhttps://github.com/prorochestvo/whoami/blob/main/README.md

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`.
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.