A way of conceptualizing and organizing an application.
Frrame is expressed as a directory structure and a set of conventions for understanding the roles of the things within it.
It is intentionally open. The structure is a starting point for an application, not a complete prescription for how an application must be implemented.
A typical Frrame project begins with:
app/ application code
resource/ application resources
script/ executable scripts
doc/ documentation
log/ runtime logs
A project may add, remove, or reorganize parts of this structure as its requirements develop.
The internal organization of app/ and resource/ is similarly open. Controllers, models, components, dictionaries, views, and other roles may be useful, but an application is not required to contain all of them.
Frrame is not a runtime or a collection of mandatory application components.
There is no Frrame application object that everything must pass through, nor is there a prescribed implementation for concerns such as routing, persistence, sessions, authentication, or rendering.
Those are decisions belonging to the application.
Frrame instead provides a starting way to organize those decisions.
The repository itself can be used as a starting point for a PHP application. Remove the example application code and replace it with the code belonging to the project being built.
The current repository uses Composer, PHPUnit, Vite, and a public/ document root. These are the choices of this repository and are not requirements of Frrame.
The agent/structure/ directory contains two different kinds of information:
concept.mddescribes Frrame's intended scope and structure.implementation.mddescribes the concrete implementation currently present in this repository.
Keeping those separate is intentional.
Frrame is small by design.
Its purpose is not to provide every tool an application might need, but to provide a coherent place in which an application can be built.
To use this repository as a starting point:
composer create-project raymondoor/frrame my-project
cd my-projectInstall the dependencies:
composer install
npm installCopy .env.sample to .env and configure the application as needed.
The repository's own development setup uses Vite and PHPUnit. Refer to package.json and phpunit.xml for the available commands and configuration.
Run the development server:
npx vite