Photography Portfolio & Client Galleries
A flat-file PHP website for photographers, built for plain shared webhosting.
No database, no framework, no build step — upload via FTP/SFTP and it runs.
Features
- Landing page — full-screen hero image with an artist introduction.
- Showreel — the portfolio: selected images displayed full-screen, one per
scroll step, on a minimal dark layout. Navigation hides while scrolling.
- Client galleries — whole event galleries (weddings, events, …) hosted on
Hetzner Object Storage (S3). Optionally password-protected and/or with an
expiry date after which the gallery is hidden. Visitors load images directly
from S3 through short-lived presigned URLs — nothing is proxied through the
webhost.
- Admin backoffice — a small CMS to edit the front page, manage the
showreel, create galleries and bulk-upload images. Uploads go straight from
the browser to S3, in full resolution, originals untouched; grid thumbnails
are generated in the browser.
- Flat-file storage — all content lives in JSON files; admin credentials
live in a PHP config file. Password can be changed online.
Requirements
- PHP 8.1+ with
curl and openssl (standard on shared hosting)
- Apache with
.htaccess support (or any server with the document root
pointed at public/)
- A private Hetzner Object Storage bucket (for client galleries)
Quick start
cp config/config.sample.php config/config.php # fill in S3 + site settings
cp config/credentials.sample.php config/credentials.php # default login: admin / changeme
php -S localhost:8080 -t public # local preview
Then open http://localhost:8080/admin/, log in, and change the password
first (Settings).
Documentation
Layout
public/ web root (point your domain here)
app/ PHP library code (not web-accessible)
config/ static configuration + admin credentials
data/ flat-file content storage (JSON)
docs/ documentation