The CASH Music platform is actually several independent pieces of software working together. The core framework can be run as a standalone PHP library, the admin app is a full-featured webapp that interacts with the core without directly touching the database or core logic, etc.
The goal of the platform is to provide compartmentalized functionality with a consistent data format and API — so each component works with that goal in mind.
Everything is written in PHP with few requirements, making it suitable to run on shared hosting using PHP 5.2 and a choice of underlying databases. (We currently support MySQL and SQLite, but built on PDO we could conceivably expand that.) The reason for this choice is ubiquity. Well-written PHP is a powerful thing because it can run virtually anywhere, giving the power of the platform directly to anyone who wants it regardless of budget.
A quick run-down of the components that make up the CASH Music platform:
This is basically where all the real work happens. Two main objects, the CASHRequest and CASHResponse drive most of the process. The CASHRequest is created with an array or series of POST values defining the type, action, and parameters, always answered in consistent fashion by setting the request's "response" object to a CASHResponse object. This is sort of an unusual interaction for native PHP, but allows full parity between native and API-driven calls.
The admin app stands on it's own with a basic MVC-patterned architecture, using the core framework as it's Model rather than a database access object. A controller works along with an .htaccess file to route requests to the correct action controller which interfaces with the core and then renders the appropriate output to a Mustache template view. All of that is rolled into a master Mustache template in the /ui folder, which is set up to allow radical re-skinning of the admin with relative ease.
The API has both a verbose mode and the beginnings of a proper RESTful API. It wraps the core framework providing consistent JSON access to any API-allowed methods. Security is handled in the core, and the API is more of a formatting aid and endpoint.
These live in /interfaces/php/public and provide static files like our cashmusic.js and images needed for basic public access.