https://github.com/waynezhang/foto
Yet another publishing tool for minimalist photographers.
https://github.com/waynezhang/foto
gallery-application minimalist photography photography-portfolio photography-site photos
Last synced: 2 months ago
JSON representation
Yet another publishing tool for minimalist photographers.
- Host: GitHub
- URL: https://github.com/waynezhang/foto
- Owner: waynezhang
- License: mit
- Created: 2022-07-26T16:38:39.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2026-01-01T05:13:03.000Z (3 months ago)
- Last Synced: 2026-01-05T23:34:26.609Z (2 months ago)
- Topics: gallery-application, minimalist, photography, photography-portfolio, photography-site, photos
- Language: Go
- Homepage: https://foto.lhzhang.com
- Size: 7.09 MB
- Stars: 119
- Watchers: 3
- Forks: 16
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-static-generators - foto - Yet another another publishing tool for minimalist photographers. - `#Go` `#Golang` (Uncategorized / Uncategorized)
README

# foto
 
_Yet another another publishing tool for minimalist photographers._
Demo site: [https://foto.lhzhang.com](https://foto.lhzhang.com)
## Features
- `Simple` One binary, three commands. No database required.
- `Customizable` Highly customizable through configuration and template files.
- `Fast` Files are processed concurrently for optimal performance.
## Installation
### macOS
```bash
$ brew tap waynezhang/tap
$ brew install foto
```
Or download the binary from [here](https://github.com/waynezhang/foto/releases)
### Nix/NixOS
For Nix users, a Flake is provided. It can be used to run the application
directly or add the package to your configuration as flake input.
It also allows you to try out foto without permanent installation.
```sh
nix run github:waynezhang/foto
```
Consult the [Nix
manual](https://nix.dev/manual/nix/2.25/command-ref/new-cli/nix3-flake.html) for
details.
### Other platforms
Download the binary from [here](https://github.com/waynezhang/foto/releases)
## Usage
### Create a new site
```bash
~ $ foto create my_site
~ $ tree my_site
my_site
├── assets
│ ├── icons
│ │ ├── home.svg
│ │ ├── instagram.svg
│ │ └── twitter.svg
│ └── style.css
├── foto.toml # Configuration file, see below for more details.
├── media
│ └── avatar.jpg # Placeholder image for avatar.
└── templates
└── template.html # Template file
```
### Preview
```bash
~/my_site $ foto preview
Creating Preview...
Listening on 5000...
```
The default port number is `5000`. It can be changed by `-p` flag.
### Export
```bash
~/my_site $ foto export -o ~/site_docs
Exprorting sites to /Users/xxx/site_docs...
```
### Clear cache
```bash
foto clear-cache
```
## Customization
### Basic configuration with `foto.toml`
See [foto.toml](./fs/static/foto.toml)
### Style customization
Template and CSS styles can be modified without changing the `foto` binary.
The template file is located at `templates/template.html`.
You can also add additional settings in `foto.toml` ([ref](https://toml.io/en)) and reference them in the template file.
`foto` uses the `html/template` package from Go. Please refer to [this link](https://pkg.go.dev/html/template) for more information. Besides, EXIF information is supported. Refer to [EXIF](https://exiftool.org/TagNames/EXIF.html) for all EXIF tags.
## Changelogs
See [CHANGELOG](./CHANGELOG.md)
## LICENSE
See [LICENSE](./LICENSE)
## Credit
`foto` is highly inspired by [moul](https://moul.app).