anunes / frame
Requires
- ext-intl: *
- ext-pdo: *
- jenssegers/blade: ^1.4
- phpmailer/phpmailer: ^6.10
- vlucas/phpdotenv: ^5.6
This package is auto-updated.
Last update: 2026-04-28 11:28:40 UTC
README
This is a production-ready build of the Frame application.
Requirements
- PHP 7.4 or higher
- PHP Extensions: PDO, Intl
- Composer (for PHP dependency management)
- Node.js and npm (for frontend assets)
- Web server (Apache/Nginx)
- MySQL or SQLite database
Installation
-
Clone the repository:
git clone https://github.com/anunes/frame.git cd frame -
Install PHP dependencies:
composer install --no-dev --optimize-autoloader
-
Install Node.js dependencies:
npm install
-
Configure your web server to point to the
publicdirectory as the document root -
Set up environment configuration:
cp .env.example .env
-
Edit
.envfile with your database credentials and application settings -
Set proper permissions:
chmod -R 755 core/storage chmod -R 755 core/database
-
Run database setup:
- For MySQL: Import
core/database/schema.sql - For SQLite: Import
core/database/schema_sqlite.sql
Both schema files create an initial administrator account:
- Name:
Admin - Email:
admin@admin.com - Password:
admin
Change this password immediately after your first login.
- For MySQL: Import
-
Configure database settings using:
php core/database/setup_settings.php
Web Server Configuration
Apache
Ensure you have .htaccess enabled with mod_rewrite:
<VirtualHost *:80> DocumentRoot /path/to/frame/public <Directory /path/to/frame/public> AllowOverride All Require all granted </Directory> </VirtualHost>
Nginx
server { listen 80; server_name your-domain.com; root /path/to/frame/public; index index.php; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Directory Structure
build/
├── core/ # Framework internals
│ ├── app/ # Application code
│ ├── database/ # Database schemas and migrations
│ └── storage/ # Writable storage (cache, uploads, logs)
├── files/ # User content modules
├── public/ # Web accessible files (document root)
├── .env.example # Environment configuration template
├── composer.json # PHP dependencies manifest
├── composer.lock # PHP dependencies lock file
├── package.json # Node.js dependencies manifest
├── package-lock.json # Node.js dependencies lock file
└── frame # CLI console tool
Note: The vendor/ and node_modules/ directories are not included. Run composer install and npm install to download dependencies.
User Content Modules
Frame can scaffold self-contained content modules inside files/. This keeps user-created features separate from the framework code in core/app/.
Create a module:
php frame make:module employees
This creates:
files/employees/
├── controllers/
├── models/
├── views/
└── routes/
It also creates starter controller, model, view, and route files. The generated route is available at /employees, and module views use namespace notation:
view('employees::index');
To make a module handle the home page, create it with --start:
php frame make:module employees --start
To add the module to the main navbar between Home and About:
php frame make:module employees --nav
You can also customize the generated navbar label and Bootstrap icon:
php frame make:module employees --nav --nav-label="Team" --nav-icon=bi-people
Or choose the starting module later:
php frame module:start employees
Return to the original Frame start page:
php frame module:start --clear
Delete a module completely from files/:
php frame module:delete employees --force
This removes the full files/employees/ folder, clears compiled view cache, removes its module navbar entry, and updates .env if the module was listed in APP_MODULES or selected in APP_START_MODULE. It does not delete database tables or uploaded files outside the module folder.
Module loading can be configured in .env:
APP_MODULES= APP_START_MODULE=employees
Leave APP_MODULES empty to auto-load every valid module folder in files/. Set it to a comma-separated list, such as employees,products, to load only specific modules. Leave APP_START_MODULE empty to use the original Frame start page.
Support
For issues and documentation, please refer to the main project repository.
CLI Instructions
For step-by-step php frame usage, see FRAME_CLI.md.