photojawn/README.md
Nick Pegg 9945b9eb7f
Some checks are pending
Rust / build (push) Waiting to run
Rewrite in Rust (#3)
Just what the world needs, another silly Rust re-write! But it was a good exercise in learning.

There's a lot of messy things, which is why this is 0.2.0-pre.1. Going to make some cleaning passes after landing this.
2025-05-08 12:27:49 -07:00

66 lines
2.5 KiB
Markdown

# photojawn
This is a super-simple photo album static site generator. You feed it a directory of photos (which
can contain directories of photos, etc. etc.) and it'll generate a basic HTML photo album for you.
You can then host the directory with a webserver of your choice or upload it to an S3 bucket.
It's everything I need and nothing I don't.
## Getting Started
### Installation
1. Head on over to the [releases](https://github.com/nickpegg/photojawn/releases) page
2. Download the binary for your OS/arch
### Initialization
Then inside your photo directory, run:
```
photojawn init
```
This will create a config file, some [Tera](https://keats.github.io/tera/docs/#templates) (similar
to Jinja) HTML templates, and a CSS file. Edit them to your heart's content to make your photo
album website purdy.
### Generating the site
To generate the HTML files and various image sizes, inside your photo directory, run:
```
photojawn generate
```
## Special features
- HTML templates are written using [Tera](https://keats.github.io/tera/docs/#templates), which is
very similar to [Jinja](https://jinja.palletsprojects.com/en/stable/templates/)
- If you have a `description.txt` or `description.md` file in a directory with
images, its contents will be used as the album description. `.md` files will be rendered as
Markdown.
- If an image file (e.g. `IMG_1234.jpg`) has a corresponding `.txt` or `.md`
file (e.g. `IMG_1234.md`) then it'll be used as the image's caption. `.md` files will be
rendered as Markdown.
- If you have an image in a directory called `cover.jpg` (or a symlink
to another image named that), then it'll be used as the cover image for the album. If one
doesn't exist, the first image in the directory will be used as the cover image. If a directory
has no images itself, it'll use the first sub-directory's cover as its cover image
## y tho
Why create a new photo album doohickey? Why not use one of the untold number of
cloud services or even self-hosted solutions? It boils down to a few things:
1. I want control of my data. I don't want some company using my pictures to
train their AI models, for example.
2. A lot of the self-hosted solutions (Immich, PhotoPrism, etc.) don't support
nested albums
3. I love simplicity. I'm following the [Unix philosophy](https://en.wikipedia.org/wiki/Unix_philosophy)
here: "do one thing, do it well" and make use of composable tools to get the
job done.
I took heavy inspiration by the photo albums found on https://bayarearides.com
([example](https://bayarearides.com/rides/annadel1/photos/)).