Photography is a free, open-source Jekyll template that turns a GitHub repository into a photographer's portfolio website, hosted at no cost on GitHub Pages.
What is Photography?
Photography is a Jekyll-based website template designed for photographers to showcase their work online. It takes a set of image files and generates a static portfolio site that displays them in a gallery with automatic EXIF metadata (aperture, shutter speed, ISO) on click. The template was created by Ram Patra, who enhanced an original design by AJ (twitter.com/ajlkn) for Jekyll, and is available on GitHub under the repository rampatra/photography.
Key Features
- Free hosting on GitHub Pages — The site is served directly from your GitHub repository, so there is no web hosting bill; you only need a GitHub account.
- No-code photo uploads — To add new pictures, you simply upload files to the images/fulls and images/thumbs directories; no code changes are required.
- Automatic EXIF display — When you click any image, the site shows the camera settings used, including aperture, shutter speed, and ISO, pulled from the image metadata automatically.
- Gulp-based image resizing — A bundled npm package with Gulp tasks (gulp resize) automatically resizes full-size images and generates thumbnails before you upload them.
- Custom domain support — You can use your own domain by editing the CNAME file, or remove it to use the default GitHub Pages URL (yourusername.github.io/photography).
- Configurable site settings — The _config.yml file lets you change the footer name, social links, Google Analytics ID, and baseurl without touching the layout files.
- Serverless contact form — The readme describes how to wire the contact form to Google Scripts so submissions are emailed or logged to a spreadsheet without any backend code.
Who is it for?
- Photographers — Those who want a clean, minimal portfolio site to display their work without paying for hosting or a website builder.
- Hobbyist shooters — People comfortable with GitHub who want a free personal gallery and are willing to fork a repository and upload image files.
- Tech-savvy makers — Users who want to customize the theme's layout and styles, then rebuild the static site with Gulp before pushing changes.
What can you do with Photography?
- Set up a live portfolio in minutes — Fork the repo, enable GitHub Pages, upload photos, and your site is live at a free URL.
- Showcase camera settings — Let visitors inspect the EXIF data of each photo, which is useful for photographers teaching technique.
- Automate image preparation — Run gulp resize on a folder of large camera JPEGs to produce web-optimized images and thumbnails in one step.
- Add a custom domain — Point your existing domain at the site by editing the CNAME file and baseurl setting.
How does Photography work?
The template runs on Jekyll, a static site generator, and is built with Gulp and npm. You start by forking the repository, enabling GitHub Pages in the repo settings, and uploading your photos to the images/fulls and images/thumbs folders. You then update the baseurl and CNAME file for your domain, and optionally run bundle install and gulp to rebuild the site before pushing changes.
Pros and cons
- Free — The template is open-source and GitHub Pages hosts it at no cost.
- Simple updates — Adding images is just a file upload; no code edits are needed.
- Automatic metadata — EXIF data is displayed without any manual entry.
- Requires technical comfort — You need to know how to fork a repo, work with Git, and edit config files; it is not a drag-and-drop website builder.
- Jekyll dependency — The site is tightly coupled to Jekyll and Gulp, so you must install Ruby, Bundler, Node.js, and npm to build and test locally.
Pricing
Photography is completely free and open-source. There are no paid tiers; you only pay for your own domain if you choose to use one.
FAQ
Is Photography free to use?
Yes, the template is open-source and free. Hosting on GitHub Pages is also free, so you can run a portfolio with zero ongoing costs.
How do I add new photos to my site?
Upload your image files to the images/fulls and images/thumbs directories in your GitHub repository. You can do this through the GitHub web interface or by cloning the repo and pushing files. No code changes are required.
Can I use my own domain name?
Yes. Edit the CNAME file in the repository and set the baseurl in _config.yml to your domain. After enabling GitHub Pages, your custom domain will serve the site.
How do I resize images for the gallery?
Install the project's npm dependencies, copy your original photos into the images directory, and run gulp resize. This generates resized full-size images and thumbnails automatically before you push them to GitHub.
What is the default URL for my site?
If you do not use a custom domain, GitHub Pages serves the site at yourusername.github.io/photography, where yourusername is your GitHub account name.