PHP-based Web Application Development Framework ("Application Skeleton" for "Apskel"); MVC with new app wizard, automatic RESTful interface (GET & POST), and recursive templating of data-bound views; Also includes environment and version management with migration support.

Apskel ("Application Skeleton") is a lightweight PHP framework for Rapid Application Development of web apps. You register a module's requests and tables, write controllers that return plain data arrays, and Apskel handles routing, response formatting, templating, and the database for you. Originally built around 2011–2012 for the LAMP stack, it's being revived to run on PHP 8.4 with PostgreSQL and no Apache.

Highlights

  • One predictable pipeline. Every request flows entry → identity → framework → controller, then auto-formats the returned data into HTML, XML, JSON, a view, a template, or plain text.
  • Clean URL routing. A URL reads as /{module}/{request}/{param=value}/... — e.g. /blog/view, /user/login, /wiki/SomeTopic.
  • Self-contained modules. Each feature bundles its registration (requests + tables), controllers, models, and view templates. Bundled modules include user, blog, wiki, and an agent engine.
  • Simple templating. {{field}} substitutes a response field, {{=include.html}} pulls in another file, and views compose sub-templates.
  • Versions and environments side by side. A domain maps to an application version and environment (development / staging / production), selecting the matching directories at request time.
  • Hardened in the revival. The modernization pass added prepared statements throughout, bcrypt password hashing, removed eval() from the agent engine, and added CSRF protection with session hardening.
  • No heavy dependencies. Development needs no Apache, Docker, or Composer — it runs on PHP's built-in web server.

Installation

Clone the source, set up the database, and run on PHP's built-in server:

git clone https://github.com/Solifugus/apskel.git
cd apskel

# requires PHP 8.4 (pdo, pdo_pgsql) and PostgreSQL
sudo apt install php8.4-cli php8.4-pgsql

Create the development database and role (as the postgres superuser):

CREATE ROLE apskel WITH LOGIN PASSWORD 'apskel_dev';
CREATE DATABASE apskel_development OWNER apskel;
GRANT ALL PRIVILEGES ON DATABASE apskel_development TO apskel;

Then start the dev server, initialize a module's tables, and browse:

php -S localhost:8000 router.php
# visit http://localhost:8000/user/initialize to create the user tables
# then open http://localhost:8000/

Downloads & installation

Builds are coming soon. Grab the source from GitHub for now.