A custom PHP web framework I built between 2011 and 2018 and used in production systems through 2021.
The framework was created as a reusable foundation for websites, CRM systems and web applications. I used it across multiple production projects, including the e-commerce platform and CRM system at Finnautoparts, the public-facing platform and administration system at Online Patent and custom applications developed for other companies.
- Front-controller architecture with application-level routing
- Clean URLs implemented with Apache
mod_rewrite - Smarty-based template rendering
- MySQL database abstraction with typed query placeholders and result-set helpers
- Support for regular page requests, AJAX endpoints and HTTP APIs
- Session and request handling
- Reusable application modules and shared framework components
- Multiple caching layers for rendered pages and application data
- JavaScript and CSS bundling, minification and caching
- Cron-based scheduled tasks
- Centralized configuration, error handling and debugging utilities
- SEO-oriented URL and page-delivery optimizations
Apache routes requests that do not match existing files or directories to the main index.php entry point. The application initializes the framework, database connection and shared state before dispatching the request through the router.
flowchart TB
REQUEST["HTTP Request"]
APACHE["Apache<br/>mod_rewrite"]
ENTRY["index.php<br/>Front Controller"]
INIT["Application Initialization<br/>Config · DB · Session"]
ROUTER["Router"]
PAGE["Page Request"]
AJAX["AJAX / API Request"]
SMARTY["Smarty<br/>Template Rendering"]
RESPONSE["HTTP Response"]
REQUEST --> APACHE
APACHE --> ENTRY
ENTRY --> INIT
INIT --> ROUTER
ROUTER --> PAGE
ROUTER --> AJAX
PAGE --> SMARTY
SMARTY --> RESPONSE
AJAX --> RESPONSE
The framework included its own MySQL abstraction built on top of mysqli.
Besides connection and result-set handling, it provided typed placeholders for building queries, escaping values and identifiers, working with arrays of values, and tracking executed queries.
The framework used several caching mechanisms depending on the type of data:
- Smarty caching for rendered HTML pages
- Application-level caching for reusable data
- Cached results of static asset processing
JavaScript and CSS assets could be combined and minified to reduce the number and size of browser requests. The generated bundles were cached and reused instead of being rebuilt for every request.
These features were part of a broader focus on page-load performance and SEO for production websites.
Applications could define custom modules on top of the framework and expose regular web pages, AJAX endpoints and HTTP APIs through the same application foundation.
The framework also supported scheduled jobs executed through cron, which were used by production applications for background and periodic tasks.
Third-party PHP libraries could be integrated through Composer; dependencies were defined by individual applications rather than by the framework itself.
Figaroo Engine 2 served as the foundation for multiple production systems, including e-commerce platforms, CRM and internal business tools, legal-tech applications and custom web applications.
At Finnautoparts, it powered the e-commerce platform and custom CRM system that eventually scaled to:
- 50K+ daily users
- 100M+ database records
- 4TB+ of data
It was also used as the application foundation for Online Patent’s public-facing platform and administration system.
kernel/ Framework core, libraries and configuration
content/ Application-specific modules and templates
js/ JavaScript assets
files/ Application files and uploaded content
cache/ Runtime cache
vendor/ Third-party PHP libraries
- PHP 5.x-7.x (up to PHP 7.4)
- MySQL / mysqli
- Smarty
- JavaScript
- Composer
- Apache / mod_rewrite
Historical project developed between 2011 and 2018 and used in production through 2021.
It is no longer maintained; this repository preserves the original implementation.
Valery Kirkizh