Skip to content

phpDivingLog v4.1.0

Choose a tag to compare

@Infern1 Infern1 released this 06 Jul 09:41

Redesigned phpDivingLog — modern UI and many fixes. Still a read-only web publisher over your Diving Log MySQL export.

Live demo: https://divelog.lensen.nu/

Modernized foundation

  • Layered PHP 8.3+ architecture: PDO repositories + Twig templates + a JSON API.
  • Retired the legacy Smarty / wp-db / jqPlot stack.
  • Web app served from public/, configured via a simple .env file (see .env.example).
  • Added automated tests, static analysis, and coding-standard checks (composer test && composer stan && composer cs).

New look & feel (Material Design 3 / Beer CSS)

  • Responsive UI with an accessible light/dark theme toggle.
  • Switchable color palettes (Reef / Sunset / Kelp / Abyss), persisted per browser.
  • All front-end assets vendored locally — no runtime CDN, works offline.
  • App title/branding derived from your Personal profile.
  • Added a favicon.

Dive detail

  • Sticky Logbook pane with smooth previous/next navigation (no page jumping).
  • Theme-aware dive profile graph.
  • Tank info now also shows when gas data is stored on the dive row (inline fallback).
  • Equalized hero metric card heights.

Dive site pages

  • Previous/next site navigation.
  • Google Maps link generated from coordinates.
  • Max depth and water type (Salt/Fresh/Brackish) derived from dives.
  • Site photo gallery + lightbox; clickable map image.

Countries, overview & stats

  • Country pages resolve their dive sites even when sites are not directly stamped with a country.
  • Dive overview shows profile and photo indicator icons per dive.
  • Certifications section on the statistics page (from the Brevets table): organisation, brevet, date, number, instructor, plus front/back card scans with lightbox.

Robustness

  • Schema-agnostic profile/data loading that survives missing optional columns across Diving Log export versions.
  • Consolidated media into public/images/ (removed the duplicate legacy images/ tree).

Full details in the CHANGELOG.