Features
Introduction
Sukarix builds upon the robust and lightweight foundation of the Fat-Free Framework (F3), a micro-framework known for its efficiency and simplicity. We have retained the best features of F3 where it excels, ensuring a solid, stable, and high-performance core. At the same time, we have integrated or replaced certain components with more powerful and feature-rich libraries to make Sukarix enterprise-ready. These enhancements provide additional functionality, improve scalability, and offer a more comprehensive development experience for building complex, modern PHP applications.
Feature List
| Feature Name | F3 Native | Sukarix Replacement (Library) |
|---|---|---|
| Fast and clean template engine | Yes | - |
| Unit testing toolkit (Web UI & CLI) | Yes | Statera |
| Database-managed sessions | Yes | - |
| Markdown-to-HTML converter | Yes | - |
| Atom/RSS feed reader | Yes | - |
| Image processor | Yes | - |
| Geodata handler | Yes | - |
| On-the-fly Javascript/CSS compressor | Yes | Matthias Mullie Minify |
| OpenID (consumer) | Yes | - |
| Custom logger | Yes | Monolog |
| Basket/Shopping cart | Yes | - |
| Pingback server/consumer | Yes | - |
| Unicode-aware string functions | Yes | - |
| SMTP over SSL/TLS | Yes | F3 Mailer |
| Tools for communicating with other servers | Yes | - |
| Data Validation | Yes | Sukarix extends F3 |
| ORM | - | F3 Cortex |
| ACL | - | F3 Access |
| Multi-language | - | F3 Multilang |
| Event Dispatching | - | F3 Events |
| Messages to chat platforms | - | Sukarix Notifier (Zulip) |
| Database Migrations | - | Phinx |
| Debugging & Global Event Catching | - | Tracy |
| Cron job scheduler | - | peppeocchi/php-cron-scheduler |
| Queues | - | Sukarix (Redis) |
| AMQP messaging | - | Sukarix (php-amqplib) |
| Pluggable session | - | Sukarix |
| Dependency Injection | - | Sukarix |
| Inversion of Control | - | Sukarix |
| JSON APIs (CORS, health probes) | - | Sukarix |
| Capability tokens | - | Sukarix (HMAC) |
| Secrets at rest | - | Sukarix (libsodium) |
| Request correlation & JSON logs | - | Sukarix + Monolog |
| Environment-variable overrides | - | Sukarix |
| Privilege discovery | - | Sukarix |
| Bash toolbox | - | Sukarix CLI |
Description of Features
- Fast and clean template engine: Provides a lightweight and efficient templating system that allows for easy creation of dynamic web pages.
- Unit testing toolkit (Web UI & CLI): Integrated tools for unit testing both web interfaces and command-line
interfaces, ensuring comprehensive code coverage and reliability. Statera is the Sukarix
testing kit built on top of the Fat-Free Framework’s
Testclass. It is an optional, standalone package — the framework itself uses it viarequire-devfor its own test suite. - Database-managed sessions: Manages user sessions through the database, enhancing security and scalability.
- Markdown-to-HTML converter: Converts Markdown syntax into HTML, facilitating easy content creation and management.
- Atom/RSS feed reader: Parses and reads Atom and RSS feeds, allowing for integration with external content sources.
- Image processor: Handles image manipulation tasks such as resizing, cropping, and format conversion.
- Geodata handler: Manages geographical data, enabling features such as location-based services and mapping.
- On-the-fly Javascript/CSS compressor: Minifies JavaScript and CSS files on the fly to improve page load times and performance.
- OpenID (consumer): Supports OpenID authentication, allowing users to log in using their existing OpenID accounts.
- Custom logger: Enhanced logging capabilities using Monolog, providing flexible and powerful logging options.
- Basket/Shopping cart: Manages e-commerce functionalities such as shopping carts and order processing.
- Pingback server/consumer: Implements pingback functionality for communication between blogs and websites.
- Unicode-aware string functions: Handles string operations with full Unicode support, ensuring compatibility with multiple languages and character sets.
- SMTP over SSL/TLS: Securely sends emails using SMTP with SSL/TLS encryption, enhancing email security.
- Tools for communicating with other servers: Provides utilities for making HTTP requests and interacting with external APIs.
- Data Validation: Sukarix extends F3 to validate input data, ensuring it meets specified rules and constraints before processing.
- ORM: Uses F3 Cortex for object-relational mapping, simplifying database interactions.
- ACL: Manages access control using F3 Access, enforcing permissions and roles.
- Multi-language: Supports multiple languages using F3 Multilang, allowing for easy localisation of content and routes.
- Event Dispatching: Handles event management using F3 Events, allowing for flexible and decoupled event-driven architecture.
- Messages to chat platforms: Sends notifications to Zulip chat streams using the Sukarix Notifier, which uses F3’s
Webclass for HTTP requests — no external notification library required. - Database Migrations: Manages database schema changes using Phinx, ensuring smooth and controlled migrations.
- Debugging & Global Event Catching: Utilizes Tracy for debugging and catching global events, providing detailed error reports and insights.
- Cron job scheduler: Schedules and manages cron jobs using peppeocchi/php-cron-scheduler, automating repetitive tasks.
- Queues: A Redis-backed FIFO queue service with deduplication and per-item attempt tracking, for passing work between the stages of a pipeline.
- Pluggable session: The framework depends on a small session contract rather than on the
database-backed implementation, so an application can supply its own — a stateless JWT session for an API, for
instance — and register it under the
sessionalias. - Dependency Injection: Facilitates dependency management using Sukarix’s own DI container, promoting loose coupling and testability.
- Inversion of Control: Implements IoC using Sukarix, ensuring modular and maintainable code.
- AMQP messaging: A
CommandPublishercontract with a RabbitMQ implementation and an in-memory recorder for tests, for telling another service to do something. See Messaging. - JSON APIs: A stateless
ApiActionbase class with JSON error envelopes, CORS handling and liveness/readiness probes. See Building JSON APIs. - Capability tokens: HMAC-signed, short-lived Bearer tokens carrying
iss/aud/expclaims, for machine callers that hold no session. - Secrets at rest:
SecretBox, a libsodium wrapper for encrypting credentials before they are stored. See Encrypting Secrets at Rest. - Request correlation & JSON logs: Every request is stamped with an
X-Request-Idthat flows into each log line;log.jsonswitches the logger to structured JSON output. See Logging. - Environment-variable overrides: The
[environment]configuration section maps a variable to the setting it stands in for, so secrets stay out of committed files. See Configuration. - Privilege discovery: The privileges an application declares are read from its action classes, so a newly added action never silently disappears from the role matrix. See Authorisation.
- Bash toolbox: The
sukarixcommand deploys, restarts, tests and cleans a Sukarix application from the shell. See CLI toolbox.