Andy Male

Thoughts and Works

Zibings Site Framework

Unobtrusive website prototyping.
Language(s)
PHP 8.3+, VueJS 3, MySQL
Version
1.3.0
Last Updated
Jan 2026

History

I first started building websites with PHP at the age of 15, hoping to escape the treacherous world of PERL. After a few years, I noticed I was writing the same code over and over again, and did what any ambitious young programmer would do: I turned those patterns into a framework. That framework, the Zibings Site Framework (or ZSF for short), has been in development ever since, and has been used to build over 100 websites of all different shapes and sizes.

Over time, we developed the following guiding principles:

  • Build tools that saved time without forcing you to use them
  • Scaffold in a way that was (at least) similar to how the rest of the PHP community builds
  • Don't pretend that we know the "one true way" to do anything. We're idiots sometimes.

In the end, ZSF has gone through a number of iterations, even having been renamed to things like "N2F" (the "No-Nonsense Framework"). Every time, though, my group of close developer friends and I come back to our roots and keep tweaking the way we build until we have something that speeds up our process significantly.

Changelog

v1.4.0 (In Progress)
Jan 2026
  • Added Added 'Pre' hooks for UserEvents events
  • Added Added docker guards/conditions to Exec.ps1 system
  • Added Added local SMTP trap server for testing
  • Added Added ApiController::tryGetParams() helper method
  • Added Added UserRoles instance to ApiController
  • Fixed Made sure -PdbPass is in all Exec.ps1 configuration calls
  • Added Added docker project detection to Exec.ps1 system
  • Changed Changed docker configuration to use dependencies correctly and removed 25s init wait
  • Added Added support for ensuring docker and containers are running before executing commands
  • Added Added up as alias for init in Exec.ps1 system
  • Fixed Fixed UserEvents::doUpdate() typo for $displayName
  • Changed Project now requires and is compatible with PHP 8.4+
  • Fixed Fixed issue with admin UI builds
  • Added Added UserEvents::doSendReset() method
  • Added Added session timeout setting and usage throughout UserEvents system
  • Added Added settings toggle to enable/disable logging output from API entry file
  • Added Added ApiController::getBasicParams() helper method
  • Added Added ApiController::isSelfOrAdmin() helper method
  • Removed Removed UserDevice system until it can be fully thought through
  • Added Added full PgSQL support
  • Added Added basic E2E testing system on top of PHPUnit
  • Added Added prompt before deleting existing db migrations
  • Added Added guard around default migration copyover
  • Fixed Fixed missing L from accepted username charset
  • Added Added ZSF_VERSION global constant
  • Added Added y/n prompt to down call with docker
  • Changed Exposed all ports for docker compose configuration
v1.3.0
Jul 2024
  • Fixed Fixed auth header issue & refactored duplicate code
  • Added Added correct token check for password reset
  • Changed Adjusted ApiController to use PdoHelper and new auth header
  • Fixed Modified API routes to prevent fall-through
  • Changed Project now requires and supports PHP 8.3+
  • Changed Moved migrations to top level of project
  • Added Added optional roles parameter for login
  • Fixed Corrected usage of password_verify()
  • Added Added unique constraint for display names
  • Added Added /1.1/Profile/CheckDisplayName API endpoint
  • Added Added cookie fallback for user auth in ApiController
  • Fixed Fixed issue with mt_srand() and implicit conversions
  • Added Added getUserAuthToken() and getUserSession() helper methods to ApiController
  • Changed Changed UI to use VueJS 3 instead of old PHP template system
  • Added Added CORS settings for great API configuration
v1.1.0
Sep 2022
  • Changed Project now requires and supports PHP 8+
  • Changed Improved formatting consistency

Credits

  • Chris Dougherty
  • Matthew Hykes
  • Jovanni Djonaj
  • Kyle Krause
  • Andy Male GitHub