CBPHOTOGRAPHY / PROJECT

A hobby project you can build on

Photography.
Technology.
Your portfolio.

This website grew from two interests: taking photographs and building the technology behind them. If you are a photographer looking for something similar, you can host it on your own webspace.

Self-hosted · PHP & database · Private, non-commercial use

Explore the project

01Gallery & featuresExplore images, technical details and examples.

01 / The gallery

Room for your photos.
With the details behind them.

The interface stays understated. Visitors can open technical details and additional features whenever they want to learn more about a photograph.

01

A clearer layout on small screens

The gallery places the logo beside a two-line wordmark. The back link, album title and search menu share a compact toolbar. On mobile, albums appear as consistent cards in two columns.

02

German & English

Switch the public website and admin area between German and English. Without a saved preference, Germany defaults to German; other or unknown countries default to English. Detection uses a local country database; a manual language choice takes precedence. Your own text and EXIF values are preserved. Emails remain in German for now.

03

Albums & discovery

Present photos in series and search the entire collection from the homepage. Combine camera, lens, aperture, shutter speed, ISO, lighting and location filters, even without a search term.

04

The photograph takes centre stage

An image viewer with optional EXIF details. Swipe to change photos, pull down to close, or swipe up to show image information.

05

The right size for each display

Preview images and image variants for different displays. Original files are retained for requested downloads.

06

Downloads by email

Collect images, enter an email address and request a personal link. Get 48-hour access to individual files or a combined ZIP.

07

Subscribe to new photos

An optional photo subscription with email confirmation and an unsubscribe link. The photographer prepares and starts notifications in the admin area.

08

Map, ratings & contact

An optional photo map on the homepage and gallery after activation. Use “Show images in this map area” to filter the visible region. Includes aperture-based ratings, dark mode and a contact form with server-side security checks and sending limits.

Gallery & albumsA photo series in the clear album view.
Image details & EXIFAufnahmedaten direkt beim Foto einblenden.
Search & filtersFind images by technical data and other attributes.
02The admin areaImage management, statistics, configuration and other tools.

02 / The workspace

Manage it in your browser.

Try the admin demo ↗

Try it without registering. The public demo password Demo-Portfolio-2026! is also shown on the login page. All visitors share changes; after one hour, the initial state is restored on the next visit. Emails are simulated and statistics use sample data.

A protected admin area brings together images, configuration and feedback. Here is an overview:

01Clear sections for image management

Five tabs for uploads, images, ratings, EXIF editing and publishing. Upload photos and videos, synchronise files and manage albums. Deleting an album keeps its media files.

02Drafts & scheduled publication

New uploads and FTP imports start as drafts. Publish images immediately, withdraw them or schedule a time in Europe/Berlin. They become available at that time without a cron job. Originals, previews, search, downloads and new subscription campaigns respect the status. Previously saved copies cannot be recalled; emails are still started manually.

03Detect duplicate uploads

Byte-identical files are detected using SHA-256, even with different filenames. Instead of saving a second copy, the existing image can be added to the selected album. Recompressed or merely similar-looking images are not considered duplicates.

04Edit EXIF data in bulk

A filterable table with thumbnails and ten metadata columns. Edit up to 50 selected images at a time: set values, clear fields or fill missing information only. Camera and lens filters also support EMPTY. Every field offers existing values from the whole collection as suggestions. New values can be entered freely and become suggestions after saving. Changes affect the gallery database; original files remain unchanged.

05Prepare image variants

Prepare thumbnails and display sizes in the admin area so visitors do not have to wait for generation on their first visit.

06Statistics & ratings

Seven sections: overview, image views, live, visitor map, browsers & devices, daily overview and notes. Image views count opening the image viewer, not thumbnails. Live estimates visible gallery tabs active in the last two minutes; multiple tabs can count separately. The country map uses local geolocation data without external lookup requests. No unique people are identified and no raw IP addresses are stored. Date-range reports can be exported as CSV; Live shows current activity.

07Download requests

A clear table showing email, file selection, sending status and view/download-start counts. Disable personal links when needed.

08Photo subscriptions

View subscribers and sending logs in tables, gather new images for a message, and start, pause or resume sending. Keep the admin area open while sending.

09Software updates in the admin area

Check for new versions and choose to install compatible updates. HTTPS, digital signatures and checksums protect the download. The current code is backed up before replacement; interrupted updates can be rolled back through a protected recovery page. Images, database, credentials and settings are retained. Local code changes or required database migrations stop automatic updating. Version 1.5.0 is the baseline; older versions need a fresh installation or a separate manual migration first.

10Suggest improvements

The self-hosted admin shows the shared anonymised ideas board with status, target version, filters and support counts. Support existing ideas by confirmed email or submit your own. Each address gets one vote per suggestion. Central administration, personal messages and contact details remain with the developer.

11Access & security

Optionally sign in with passkeys using Face ID, Touch ID, 1Password or a FIDO2 security key. Your first passkey must pass a sign-in test before activation; password-only sign-in is then disabled. Manage multiple passkeys and store ten single-use recovery codes separately. Password plus recovery code initially permits only replacement-passkey setup. An email password reset does not disable protection. New installations still begin by changing the initial password. Passkeys are disabled in the public demo.

12Tabbed configuration

Seven tabs for general settings, features, appearance, images, social links, slideshow and legal details, saved together. Enter a custom hex accent colour or choose one of six presets. Arrange social links with matching icons.

13Choose your features & layout

Enable or disable photo subscriptions, the admin link, dark-mode switch, homepage search and filters, and the contact form individually. Place albums above or below selected photos. Search inside albums stays available, and existing subscribers can still unsubscribe.

14System check in the admin area

Check the server and PHP extensions, upload limits, directory permissions, cache and logged email sending. A step-by-step media check finds missing or unreadable files and image variants not yet prepared. Checks do not change images or send test emails.

15Set EXIF visibility per device

Under Configuration → Images, choose separately whether the viewer starts with EXIF details on desktop or mobile/tablet. Both defaults are initially off. Visitors can toggle the display at any time.

16Live preview on desktop

The admin navigation stays on the left while the website appears on the right. Use Refresh preview to review saved changes. The preview is not loaded on phones and tablets.

17A direct route between website and admin

A discreet admin link in the website footer shows Signed in when your session is valid. Back to website returns from admin to the gallery in the same tab.

18Enable or disable downloads

A toggle for the entire download feature and basket. When off, selection and requests are disabled and personal download links are paused. Links that are still valid work again after enabling it.

03Requirements & privacyHosting, database, email delivery and operating information.

03 / Behind the scenes

For your own webspace.

This edition is for photographers who run their own website and have some experience with hosting and databases.

  • Apache 2.4 with .htaccess and mod_rewrite
  • PHP 8.3+ with PDO MySQL, GD/WebP, EXIF, Zip, Fileinfo, Mbstring and OpenSSL
  • Your own empty MySQL 8.0+ or MariaDB 10.6+ database
  • HTTPS, outbound HTTPS requests and working PHP email delivery

What you should know

The web wizard guides you through requirements, verification, database details and website settings. After uploading, open the website over HTTPS, upload the provided verification file unchanged and continue in the browser. No PHP file needs editing. Finally, tables and configuration are created and the personal password-change page opens. The fixed initial password is Photography-Start-2026!. If you leave the setup session before changing the password, your first login also requires the individual access key from the completion page. The installer locks itself automatically. Existing tables are not overwritten.

The contact form, download links and photo subscriptions require working email delivery from your host. Subscription notifications are started manually in the admin area.

The optional map loads Leaflet and OpenStreetMap after activation. Update your content, operator details and privacy information before publishing.

Installation reporting: During setup, when saving settings, and subsequently at most once a day when the website is used, the self-hosted edition reports its website URL, version and a random installation identifier to brehmen.com. This is disclosed beforehand. No images, visitor or subscriber data are sent; no reports are sent without page visits. There is no switch to disable reporting in the admin area.

Internal statistics count aggregate page and image views. Live briefly records active gallery tabs; a random token is held only in memory, while the server stores its hash, country and last activity time. Approximate country lookup happens locally using DB-IP Country Lite (CC BY 4.0); VPNs and providers can affect accuracy. There is no individual browsing history or personal email-open tracking.

04Download & current versionSigned ZIP, current version and licence information.

04 / Try it yourself

Your starting point.

The complete website package with source code, an empty database schema, a guided web installer and updates in the admin area.

Your installation starts without my photos, credentials, subscribers or statistics. A neutral camera icon replaces my personal logo.

Download ZIP

Version 1.8.0 · 4.729 KB · 24.10.2026

CURRENT VERSION

Version 1.8.0

New in version 1.8.0: German and English on the website and in the admin area, automatic language selection by country and optional passkey protection. Also includes compact gallery navigation, consistent mobile album cards and tabular idea boards. Unmodified installations from 1.5.0 can use Software updates. Your existing login stays available until you set up and test a passkey yourself.

Licence
Private, non-commercial use. Modifications and free redistribution under the same conditions are permitted. Commercial use requires separate permission.
Included
90 files including installer, README and licence
Checksum / SHA-256
72b9a172d7e212b265a9f8357b2f2c995f9bbd0155be07545f48243170fab511

Hobbyprojekt ohne zugesagten Support oder Update-Zeitplan. Vor dem produktiven Einsatz auf deinem Webspace testen. Für die Erstinstallation in einer leeren Datenbank. Ab dieser Basis lassen sich kompatible Folgeversionen per Update-Button installieren. Neue Passkey-Tabellen werden bei Bedarf automatisch ergänzt. Der Wechsel von 1.3/1.4 erfordert weiterhin eine gesonderte Migration oder frische Installation.

05Installation & first admin loginFrom ZIP to your own portfolio, including initial password and setup.

From ZIP to portfolio

  1. PrepareCreate a new website and empty database with your host. Check the requirements.
  2. Set upUpload the files and open the website over HTTPS. The wizard checks your hosting; upload the verification file and enter your database details in the browser.
  3. Get startedSet a personal admin password, review your details, publish test images and test email delivery. The installer locks itself automatically.

All steps are explained in the browser; the README provides additional help. Create the database with your host beforehand. Back up existing installations first – this edition does not include a general-purpose database upgrader.

Guided web installerSet up requirements, verification, database and website in the browser · Example view.
06Release information & version historyAll releases since 1.0.0 and what changed.

Release Info

Version history

From the first self-hosted edition to the current version. This information was compiled from published packages and their changelogs.

Version 1.8.0Two languages, passkeys & a more compact gallery
  • German and English for the public website and admin, with a discreet footer switch and saved manual preference.
  • Local language selection: Germany defaults to German; other or unknown countries default to English, without external geolocation requests.
  • Optional passkey sign-in with a required sign-in test, multiple passkeys and ten single-use recovery codes. Password-only sign-in is disabled after activation.
  • Password plus recovery code initially allows only replacement-passkey setup. Email password resets preserve passkey protection.
  • Compact gallery header, shared back/album toolbar and two-column mobile album cards.
  • Tabular idea boards on the project page and in administration; live demo instead of an admin screenshot gallery.
  • Update for unmodified installations from 1.5.0; new passkey tables are added when needed. Existing access and content are preserved.
Version 1.7.0Shared ideas board & support
  • New: shared anonymised ideas board directly in the self-hosted admin, with progress, target version, status filters and support counts.
  • New: support suggestions on the central project page using confirmed email; one vote per address and suggestion.
  • Public descriptions are reviewed centrally; personal messages and contact details remain private.
  • Update from unmodified 1.6.0 or 1.5.0 via Software updates; no database schema change.
Version 1.6.0Visible initial credentials & suggestions
  • New: initial admin password highlighted before completion; password and individual access key shown clearly on the completion page.
  • New: Improvements menu with an explicit link to the central suggestion form, email confirmation and implementation updates.
  • Updates from unmodified version 1.5.0 are available via Software updates; database schema remains 1.
Version 1.5.0Web installer & signed updates
  • Guided web installer: requirements, verification file, database details in the browser, website details and automatic completion. No manual setup-config.php.
  • Signed software updates in the self-hosted admin with backup, maintenance mode and recovery; compatible database schemas only.
Version 1.4.0Publishing, system check & live statistics
  • Drafts, scheduled publication without cron, and protected original/preview images. New uploads and FTP imports start as drafts.
  • Detects byte-identical upload duplicates even with different filenames.
  • System check for server, media, cache and email status.
  • Image views, live activity and approximate visitor countries using a local geolocation dataset.
  • Feature switches for downloads, photo subscriptions, admin link, dark-mode switch, homepage search and contact; configurable order of albums and photos.
  • Map area as a search filter, homepage map, more reliable large-file uploads and mobile admin layout.
  • Locally hosted Inter Tight font, custom 404 page and updated operator information.
  • No automatic database upgrader. Existing installations need a verified schema/cache migration before replacing files.
Version 1.3.0Suggestions, global search & live preview
  • Bulk EXIF editing: suggestions from all existing field values and free entry of new values.
  • Separate EXIF defaults for desktop and mobile/tablet under Configuration → Images; both initially off.
  • Statistics tabs for overview, browsers & devices, daily overview and notes. The date range is retained.
  • Desktop live preview of the website in admin, with a refresh button.
  • Global search and all EXIF/location filters on the homepage, even without search text.
  • Discreet footer admin link with sign-in status; Back to website opens in the same tab.
  • Improved password-manager detection through consistent form destinations and the account identifier admin.
  • Initial installer for an empty database; no automatic database upgrader. No images, credentials or runtime data included.
Version 1.2.0Bulk EXIF editing & management tabs
  • Image management with Upload, Images, Ratings and Optimise EXIF data tabs.
  • Filterable EXIF table with previews, ten metadata fields and bulk editing for up to 50 selected images per operation.
  • Keep, set or clear individual fields; fill missing values only; EMPTY filters for camera and lens. Original files remain unchanged.
  • Configuration in five tabs, a shared download/basket toggle and consistent social-link fields.
  • Tables for download requests, photo subscriptions and sending logs.
  • Compact back link in the gallery.
Version 1.1.1Separate installation reporting
  • Registers the owner installation, reports daily when used, and keeps the central hub completely separate from the self-hosted package. Includes password changes and email recovery, gallery, admin area, email downloads and photo subscriptions.
Version 1.1.0Password management & initial activation
  • Password changes, email recovery, protected first activation of the fixed initial password and transparent installation reporting. Includes gallery, admin area, email downloads and photo subscriptions.
Version 1.0.0First self-hosted edition
  • First independently installable edition with gallery, admin area, email downloads, photo subscriptions and individual configuration.
07Ideas & improvementsFollow shared progress, support ideas or submit your own.

Developing together

Your idea for the portfolio.

What feature is missing? What could be easier? After you confirm your email address, your suggestion will be reviewed in the central admin area. You will receive updates about the decision and the released version.

Shared ideas & progress

Browse confirmed suggestions from all users. Public descriptions are reviewed for personal information first. Supporting an idea shows that you would also find it useful.

1 suggestions · Page 1 of 1 · Sorted by support

On smaller screens, scroll the table horizontally.

Anonymised suggestions with status, release version and support counts
SuggestionStatusVersionVotesSupport
#1Verbesserungen optimieren

alle Eingegangenen Verbesserungen auch in der Selfhostet version sehen und den aktuellen fortschritt sehen

CompletedAvailable since1.7.01Closed

Submit a new idea