Brak opisu

Medowar e6ba67d306 added download all button to gallery, added zip archive generation 7 godzin temu
admin e6ba67d306 added download all button to gallery, added zip archive generation 7 godzin temu
app e6ba67d306 added download all button to gallery, added zip archive generation 7 godzin temu
assets e6ba67d306 added download all button to gallery, added zip archive generation 7 godzin temu
config e6ba67d306 added download all button to gallery, added zip archive generation 7 godzin temu
data 228b9212f1 Project skeleton: directory layout, config samples, access protection 1 miesiąc temu
docs e6ba67d306 added download all button to gallery, added zip archive generation 7 godzin temu
gallery e6ba67d306 added download all button to gallery, added zip archive generation 7 godzin temu
media 75ecfa8c4f Flatten layout: document root is the project folder, harden .htaccess 1 miesiąc temu
.gitignore 75ecfa8c4f Flatten layout: document root is the project folder, harden .htaccess 1 miesiąc temu
.htaccess e6ba67d306 added download all button to gallery, added zip archive generation 7 godzin temu
README.md 0ec517044e moving gallery view into subfolder gallery 8 godzin temu
contact.php 561da2fdd9 Add Impressum, Datenschutz and Contact pages 1 miesiąc temu
datenschutz.php 561da2fdd9 Add Impressum, Datenschutz and Contact pages 1 miesiąc temu
impressum.php 561da2fdd9 Add Impressum, Datenschutz and Contact pages 1 miesiąc temu
index.php 75ecfa8c4f Flatten layout: document root is the project folder, harden .htaccess 1 miesiąc temu
router.php e6ba67d306 added download all button to gallery, added zip archive generation 7 godzin temu
showreel.php 75ecfa8c4f Flatten layout: document root is the project folder, harden .htaccess 1 miesiąc temu
upload-api.php 6a7adbeee5 adding parallel uploads 9 godzin temu
upload.php 0ec517044e moving gallery view into subfolder gallery 8 godzin temu
worker.php e6ba67d306 added download all button to gallery, added zip archive generation 7 godzin temu

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)