Keine Beschreibung

Medowar 60ea471469 adding click tracking to gallery and download all vor 21 Minuten
admin 60ea471469 adding click tracking to gallery and download all vor 21 Minuten
app 60ea471469 adding click tracking to gallery and download all vor 21 Minuten
assets e6ba67d306 added download all button to gallery, added zip archive generation vor 30 Minuten
config e6ba67d306 added download all button to gallery, added zip archive generation vor 30 Minuten
data 228b9212f1 Project skeleton: directory layout, config samples, access protection vor 1 Monat
docs e6ba67d306 added download all button to gallery, added zip archive generation vor 30 Minuten
gallery 60ea471469 adding click tracking to gallery and download all vor 21 Minuten
media 75ecfa8c4f Flatten layout: document root is the project folder, harden .htaccess vor 1 Monat
.gitignore 75ecfa8c4f Flatten layout: document root is the project folder, harden .htaccess vor 1 Monat
.htaccess e6ba67d306 added download all button to gallery, added zip archive generation vor 30 Minuten
README.md 0ec517044e moving gallery view into subfolder gallery vor 1 Stunde
contact.php 561da2fdd9 Add Impressum, Datenschutz and Contact pages vor 1 Monat
datenschutz.php 561da2fdd9 Add Impressum, Datenschutz and Contact pages vor 1 Monat
impressum.php 561da2fdd9 Add Impressum, Datenschutz and Contact pages vor 1 Monat
index.php 75ecfa8c4f Flatten layout: document root is the project folder, harden .htaccess vor 1 Monat
router.php e6ba67d306 added download all button to gallery, added zip archive generation vor 30 Minuten
showreel.php 75ecfa8c4f Flatten layout: document root is the project folder, harden .htaccess vor 1 Monat
upload-api.php 6a7adbeee5 adding parallel uploads vor 2 Stunden
upload.php 0ec517044e moving gallery view into subfolder gallery vor 1 Stunde
worker.php e6ba67d306 added download all button to gallery, added zip archive generation vor 30 Minuten

README.md

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 this folder)
  • 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 router.php                        # local preview

Then open http://localhost:8080/admin/, log in, and change the password first (Settings).

Documentation

Layout

Upload the contents of this folder straight into your document root — index.php is the home page.

index.php  landing page              ← document root
showreel.php
gallery/   client galleries (/gallery/?g=<slug>)
admin/     backoffice
assets/    css + js
media/     local images (hero + showreel)
app/       PHP library code    ┐
config/    config + credentials├─ inside the docroot but blocked by .htaccess
data/      flat-file storage   ┘
docs/      documentation
router.php local dev only (php -S)