HTMLPortfolio

focal-point — HTML Portfolio Template

By kripy

Focal Point is a minimal HTML-based photo gallery template: place images in the images/ directory to generate pages and deploy.

Explore the design

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

1 previews
Author preview
Author-provided previewTop of page

Preview provided in the project README.

One original preview is available. Open the full image to inspect the design.

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-01View source

What stands out

A quick read of the recorded project description.

01

Pure HTML minimal photo gallery template; place images in the images/ directory to use

02

lib/optimise.sh automatically compresses and resizes images wider than 1920px (quality 80), skipping already optimized files

03

The script automatically writes new images into index.html as img tags with alt text

04

The README provides an LLM prompt to list images and rewrite img tags inside .image-container

05

On macOS, pyobjc-framework-Vision can be installed to automatically generate descriptive alt text for camera-generated filenames

06

The code is MIT licensed and can be used, modified, commercialized, and distributed for free

Template Details

Focal Point is a pure HTML minimal photo gallery template positioned as a portfolio-style image display page. To use it, place JPG/JPEG/PNG images into the images/ directory, then connect the images to index.html via a script or manually, and deploy to a static hosting platform.

The template includes a lib/optimise.sh script that depends on ImageMagick and Python 3 and requires a Bash environment (on Windows, run via WSL or Git Bash). The script compresses and resizes images wider than 1920px to 1920px at quality 80, skips already optimized images, and automatically writes new images into index.html as img tags with alt text. The README also provides a prompt for an LLM with project access to list the images/ directory and rewrite the img tags inside .image-container in index.html; on macOS, pyobjc-framework-Vision can be installed to automatically generate descriptive alt text for camera-generated filenames such as DSC and IMG.

For local preview, run python3 -m http.server and visit localhost:8000; deployment options include Vercel (command line or dragging the project folder) and Netlify (drag the project folder to app.netlify.com/drop). For accessibility, ACCESSIBILITY.md documents its commitments, known limitations, and how to report issues. The code is MIT licensed and can be used, modified, commercialized, and distributed for free, but third-party assets such as demo images, fonts, and icons must be checked separately under their respective licenses.

HTMLPortfolio

Is it right for your project?

Use Cases

  • Static image gallery display for personal photography work
  • Quickly turning a batch of JPG/PNG images into a deployable display page
  • Image sites that need automatic compression of large images and generation of img tags and alt text
  • Static sites deployed on Vercel or Netlify by dragging the project folder

Suitable For

  • Developers who want to build a photo gallery with pure HTML and no front-end framework
  • Photographers or designers with local image assets who need a script to batch optimize and integrate them into a page
  • Users who need to deploy a static image site to Vercel or Netlify

Getting started & customization

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

  1. 1

    Place JPG/JPEG/PNG images into the images/ directory

  2. 2

    Before running ./lib/optimise.sh, install ImageMagick and Python 3 and execute it in a Bash environment (on Windows, use WSL or Git Bash)

  3. 3

    Local preview: run python3 -m http.server and visit http://localhost:8000

  4. 4

    Deployment: on Vercel, use the command line or drag the project folder; on Netlify, drag the project folder to app.netlify.com/drop

  5. 5

    Third-party assets such as demo images, fonts, and icons must be checked separately under their respective licenses; do not judge solely by the code's MIT license

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 external services or third-party assets are free.

Must comply with when using

  • You are allowed to use, modify, commercialize, and distribute the code of this version for free.
  • 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

  • Running the lib/optimise.sh optimization script requires ImageMagick and Python 3 installed locally; without them, automatic compression and automatic img tag writing are unavailable.
  • Windows users must run the optimization script through a Bash environment such as WSL or Git Bash; standard PowerShell/CMD cannot execute it directly.
  • The feature to automatically generate descriptive alt text for camera-generated filenames is limited to macOS and requires installing pyobjc-framework-Vision; it is unavailable on other platforms.
  • Demo images, fonts, icons, and other third-party assets must be checked under their respective licenses; do not judge solely by the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur additional charges.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

Requires [ImageMagick](https://imagemagick.org) and Python 3.

Original README

The script requires Bash — run it via [WSL](https://learn.microsoft.com/windows/wsl) or [Git Bash](https://git-scm.com/downloads).

Original README

pip3 install pyobjc-framework-Vision

Original README
https://github.com/kripy/focal-point/blob/main/LICENSEhttps://github.com/kripy/focal-point/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-01. 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
Partly documented · 68 / 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-05-17
Screenshot last checked
2026-10-01

No demo link is recorded. Use the repository instructions to evaluate the project locally; the screenshot alone cannot establish interactive behavior.

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.

Automatically checked against source and license rules; no manual editorial review.

Inspect the recorded source material

SHA-256: e6f9f26628751989f2360092845322563898c23c3dda41ff95a49017bfabf3fb

2026-10-01T15:36:43.034Z

Source file / repository
# Focal Point

![Focal Point gallery preview](images/mooks.jpg)

A minimal photo gallery template. Drop in your images and deploy.

## Usage

1. Put your JPG/JPEG/PNG images in the `images/` folder
2. Run the setup script (or wire up images manually)
3. Deploy

## Setup script

Requires [ImageMagick](https://imagemagick.org) and Python 3.

**macOS**
```bash
brew install imagemagick
```

**Linux (Debian/Ubuntu)**
```bash
sudo apt install imagemagick python3
```

**Linux (Fedora/RHEL)**
```bash
sudo dnf install imagemagick python3
```

**Windows**
```powershell
winget install ImageMagick.ImageMagick Python.Python.3
```
The script requires Bash — run it via [WSL](https://learn.microsoft.com/windows/wsl) or [Git Bash](https://git-scm.com/downloads).

---

```bash
./lib/optimise.sh
```

This will:
- Compress and resize any images over 1920px wide (quality 80)
- Skip images already optimised
- Add new images to `index.html` automatically with alt text

## AI naming

### Wire up images with an LLM

Put your images in `images/` and give this prompt to any LLM with access to your project:

```
List all files in the images/ directory, then update index.html to display them.
Replace the existing <img> tags inside <div class="image-container"> with one <img> tag
per image file. Set src to the relative path (e.g. images/photo.jpg or images/photo.png) and write a
meaningful, descriptive alt attribute for each one that describes the image content,
not just the filename. For camera-generated names (DSC*, IMG*, etc.), describe what
the image likely depicts based on any context available.
```

### Better alt text for camera files (macOS)

For camera-generated filenames (DSC*, IMG*, etc.), install the macOS Vision framework to generate descriptive alt text automatically:

```bash
pip3 install pyobjc-framework-Vision
```

## View locally

Install Python from [python.org](https://www.python.org/downloads/) if you don't have it, then:

```bash
python3 -m http.server
```

Then open [http://localhost:8000](http://localhost:8000).

## Deploy

### Vercel

```bash
npm i -g vercel
vercel
```

Or drag the project folder into [vercel.com/new](https://vercel.com/new).

### Netlify

Drag the project folder into [app.netlify.com/drop](https://app.netlify.com/drop). Done.

## Accessibility

See [ACCESSIBILITY.md](ACCESSIBILITY.md) for our commitment, known limitations, and how to report issues.

## License

[MIT](LICENSE)
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