HTMLPortfolio

portfolio-template (StijnTimmerman) — HTML Portfolio Template

By StijnTimmerman

Signal is a single-page portfolio template built with vanilla HTML/CSS/JS and Three.js loaded via CDN. It provides a swappable WebGL background, bilingual pages and a downloadable PDF CV, with no build step.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

3 previews
Desktop homepage1 / 3
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 3

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-13View source

What stands out

A quick read of the recorded project description.

01

No build step: open the files directly or host them on a static server, with no compilation or dependency installation required

02

Swappable WebGL background: the Three.js scene is centralized in scene.js and customized via CONFIG and buildScene()

03

Bilingual structure: the primary language is in index.html, the second language is in /en with a language switcher, and /en can be deleted to make it single-language

04

Downloadable CV: the HTML CV in cv-src/ can be rendered to PDF, and the README provides a headless Chrome command

05

Respects prefers-reduced-motion and falls back when WebGL is unavailable

06

Responsive layout with lighter rendering on small screens

Template Details

This template is a static single-page portfolio site. The primary language content is written in index.html, while the second language is placed in the /en directory with a language switcher; deleting /en turns it into a single-language site. The page contains placeholder content such as name, role, bio, three project cards and contact information, which must be replaced manually.

The 3D background is centralized in scene.js: the CONFIG at the top controls background color, fog, bloom intensity, accent color and particle count, while buildScene(scene, camera, opts) is used to add a grid or points and returns an object with an update(time, scroll, pointer) callback; the renderer, window resizing, scrolling, pointer parallax, reduced motion and WebGL fallback logic are retained by the template. Three.js is loaded via an import map in index.html, with no bundler required.

The template respects prefers-reduced-motion, falls back when WebGL is unavailable, and uses lighter rendering on small screens. The CV source is located in cv-src/ and is printed to PDF via headless Chrome; the README also mentions alternative tools such as wkhtmltopdf or weasyprint. For deployment, the README provides examples for GitHub Pages, Netlify, Vercel, Cloudflare Pages and any static server, none of which require a build command. The README does not specify browser compatibility ranges, performance metrics or accessibility certification.

HTMLPortfolio

Is it right for your project?

Use Cases

  • Personal portfolio or CV site: replace the placeholder text, project cards and contact information before publishing
  • Job-seeking or freelancer page requiring bilingual display: keep the /en directory and maintain two sets of content
  • Static site wanting a customized 3D visual background: modify CONFIG and buildScene() in scene.js
  • Page needing to offer a downloadable PDF CV: edit the HTML under cv-src/ and regenerate the PDF

Suitable For

  • Users who can directly edit HTML/CSS/JS
  • Users who want to deploy to GitHub Pages, Netlify, Vercel, Cloudflare Pages or any static server
  • Developers or designers who need a single-page portfolio with optional bilingual support
  • Users who want to replace the Three.js scene while retaining the rendering, scrolling and fallback logic

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    Click Use this template on GitHub or clone the repository, and preview locally with python3 -m http.server 8000

  2. 2

    Edit index.html and en/index.html to replace the name, role, bio, project cards, contact information, head metadata and JSON-LD

  3. 3

    Modify the CONFIG at the top of scene.js and buildScene() to customize the 3D background, and keep the CONFIG colors consistent with the CSS custom properties

  4. 4

    Replace placeholder images such as avatar.svg, og-image.png (1200×630 recommended) and favicon.svg

  5. 5

    After editing cv-src/cv-en.html or cv-src/cv-nl.html, regenerate the PDF using headless Chrome's --print-to-pdf

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version under the MIT license in the public repository; the free scope is the code of this version and does not mean that external services or third-party assets are free.

Must comply with when using

  • Free use, modification, commercial use and distribution of this version's code are permitted.
  • 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.
View Original Text Basis

Compiled by DeepSeek based on repository license and README ·2026-10-13. 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 · 80 / 100
Technologies
HTML
Website type
Portfolio
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-06-29
Screenshot last checked
2026-10-13

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: codex-user-requested-batch-review-20261015 · 2026-10-15

Inspect the recorded source material

SHA-256: cbf6beb5613221d2d9dd521cd7e6e37c8c3165ec766fbb589c1db491f4d53f93

2026-10-13T16:12:23.137Z

Source file / repository
# Signal — portfolio template

A fast, single-page **portfolio template** with an animated WebGL background, a
bilingual setup, and a downloadable CV. No build step, no framework, no
dependencies to install — just static HTML/CSS/JS plus [Three.js](https://threejs.org)
loaded from a CDN.

> Built to be filled in: swap the text, drop in your own 3D scene, replace a few
> images, and deploy anywhere that serves static files.

**[▶ Live demo](https://stijntimmerman.github.io/portfolio-template/)**

![Signal portfolio template](docs/screenshot.png)

## Features

- 🎛 **Swappable 3D background** — the whole Three.js scene lives in one file
  (`scene.js`) behind a tiny `CONFIG` + a single `buildScene()` function. Replace
  it with anything; the renderer, resize, scroll, pointer-parallax,
  reduced-motion and WebGL-fallback plumbing keeps working.
- 🌍 **Bilingual** — primary language in `index.html`, a second language under
  `/en`, with a language switcher. Remove `/en` for a single-language site.
- 📄 **Downloadable CV** — designed in HTML (`cv-src/`), rendered to PDF.
- ♿ **Respects `prefers-reduced-motion`** and degrades gracefully without WebGL.
- 📱 Responsive, with lighter rendering on small screens.
- ⚡ **Zero build** — open the file or serve the folder.

## Quick start

Click **“Use this template”** on GitHub (or clone), then preview locally:

```bash
python3 -m http.server 8000
# open http://localhost:8000
```

That's it — there is nothing to compile.

## Customize

### 1. Your content
Edit `index.html` (primary language) and `en/index.html` (second language).
Replace the placeholders: name, role, bio, the three project cards, contact
links, and the `<head>` metadata + JSON-LD. For a single-language site, delete
the `en/` folder and the language switcher.

### 2. The 3D background — `scene.js`
Two things to touch:
- **`CONFIG`** at the top — background color, fog, bloom strength, accent colors,
  particle count.
- **`buildScene(scene, camera, opts)`** — add your meshes/points and return an
  object with an `update(time, scroll, pointer)` callback. `scroll` is page
  progress `0..1`; `pointer` is the smoothed cursor (`-1..1`). Everything else is
  boilerplate you can ignore.

Three.js is loaded via an import map in `index.html`, so `import * as THREE from
"three"` works with no bundler.

### 3. Colors & type
The palette and fonts are CSS custom properties in the `<style>` block of
`index.html` (cyan → violet → magenta gradient by default). Keep `scene.js`'s
`CONFIG` colors in sync with your CSS for a cohesive look.

### 4. Images
Replace the placeholders with your own:
- `avatar.svg` — your photo (any format; update the reference if you change the
  extension).
- `og-image.png` — social share card, ideally 1200×630.
- `favicon.svg` — site icon.

### 5. CV download
Edit `cv-src/cv-en.html` / `cv-src/cv-nl.html`, then regenerate the PDFs with
headless Chrome (the `@page { size: A4; margin: 0 }` rule keeps the full-bleed
layout):

```bash
CHROME="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"  # macOS path
"$CHROME" --headless=new --disable-gpu --no-pdf-header-footer \
  --print-to-pdf="cv-en.pdf" "file://$PWD/cv-src/cv-en.html"
"$CHROME" --headless=new --disable-gpu --no-pdf-header-footer \
  --print-to-pdf="cv-nl.pdf" "file://$PWD/cv-src/cv-nl.html"
```

(Any HTML-to-PDF tool works; `wkhtmltopdf`/`weasyprint` are alternatives.)

## Deploy

It's static, so host it anywhere:

- **GitHub Pages** — Settings → Pages → deploy from branch (root).
- **Netlify / Vercel / Cloudflare Pages** — point at the repo, no build command,
  publish directory = root.
- **Any web server** — copy the folder to the document root. Example Caddy:
  ```
  example.com {
      encode gzip
      root * /var/www/portfolio
      file_server
  }
  ```

## Tech

Vanilla HTML/CSS/JS + Three.js (CDN). No dependencies, no build pipeline.

## License

[MIT](./LICENSE) — free to use, modify and share. Attribution appreciated but not
required.

---

Created by [Stijn Timmerman](https://github.com/StijnTimmerman) — the “Signal” portfolio design, shared as an open template. Attribution appreciated but not required.
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.

simplefolio

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

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

Resume

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

HTML · Portfolio

Creative

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

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

startbootstrap-stylish-portfolio

startbootstrap-stylish-portfolio

A one-page Bootstrap portfolio theme from Start Bootstrap with multiple content sections and an off-canvas navigation menu. Basic use means editing HTML/CSS under dist and opening index.html; advanced use relies on npm with Pug and SCSS build scripts.

HTML · Portfolio