luminovang / luminova
Luminova is a fast, modular PHP framework designed for simplicity, performance, and modern web application development.
Installs: 49
Dependents: 0
Suggesters: 1
Security: 0
Stars: 6
Watchers: 1
Forks: 0
Open Issues: 2
Type:project
pkg:composer/luminovang/luminova
Requires
- php: ^8.0
- ext-json: *
- ext-mbstring: *
- luminovang/framework: ^3.0
- psr/http-client: ^1.0
- psr/log: ^1.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.64
- nikic/php-parser: ^4.17.1
- phpstan/extension-installer: ^1.3
- phpstan/phpstan: ^1.10.2
- phpunit/phpunit: ^9.1
- psr/cache: ^3.0
- psr/http-client: ^1.0
- psr/simple-cache: ^3.0
- rector/rector: 0.18.3
Suggests
- ext-curl: Required if using the CURLRequest class.
- ext-exif: Required for image handling with the Image class.
- ext-fileinfo: Improves MIME type detection for file uploads.
- ext-gd: Required for image manipulation using GDHandler.
- ext-imagick: Required for image manipulation using ImageMagickHandler.
- ext-intl: Required for locale and internationalization features.
- ext-memcached: Required if using Memcached with the MemcachedHandler.
- ext-mysqli: Required for MySQL database support.
- endroid/qr-code: Generates inline Base64 or SVG QRcodes when using TOTP class.
- guzzlehttp/guzzle: Required for using Guzzle as an HTTP client.
- league/flysystem: Required for using cloud storage drivers via Flysystem.
- luminovang/array-functions: Backports PHP 8.4 array_* functions for older versions.
- nanoblocktech/psr-cache: Enables support for PSR-6 and PSR-16 caching.
- opis/closure: Required for storing closures in the BackgroundTaskQueue system.
- peterujah/nano-image: Required for image resizing when using the FileDelivery::outputImage() method.
- peterujah/php-search-controller: Provides support for model search with BaseModel::doSearch().
- phpmailer/phpmailer: Required for sending emails using PHPMailer.
- psr/http-client: Required when using HTTP clients like Guzzle or cURL.
- psr/log: Needed for applications using PSR-compatible logging.
- smarty/smarty: Required to enable Smarty as a template engine.
- swiftmailer/swiftmailer: Required for sending emails using SwiftMailer.
- twig/twig: Required to enable Twig as a template engine.
- dev-main
- 2.3.6
- 2.3.5
- 2.3.4
- 2.3.3
- 2.3.2
- 2.3.1
- 2.3.0
- 2.2.9
- 2.2.8
- 2.2.7
- 2.2.6
- 2.2.5
- 2.2.4
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.9
- 2.1.8
- 2.1.7
- 2.1.6
- 2.1.5
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.9
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.9.9
- 1.9.8
- 1.9.7
- 1.9.6
- 1.9.5
- 1.9.4
- 1.9.3
- 1.9.2
- 1.9.1
- 1.9.0
- 1.8.0
- 1.7.0
- 1.6.0
- 1.5.0
- 1.4.0
- 1.3.0
- 1.2.0
- 1.1.0
- 1.0.0
This package is auto-updated.
Last update: 2025-11-25 11:14:19 UTC
README
Luminova is a high-performance PHP framework designed for speed, efficiency, and developer productivity. It allows you to customize the framework to your project via the .env file, enabling only the features you need. This modular approach ensures optimal performance while giving you full control over template rendering modes and coding styles.
Within Luminova templates, View objects are accessible directly in your view files. You can call application methods and properties using $this or $self for stricter isolation mode.
Ready to try Luminova with your next projects? Explore the official documentation or join the community for tips, tutorials, and coding insights on our YouTube channel.
Luminova Skeleton This repository gives you everything you need to start a new Luminova project: a clean directory structure, essential configuration files, and the core bootstrapping setup.
Key Features
Luminova comes packed with tools to speed up development while keeping your application organized and performant.
- Database Builder: ORM for easier CRUD operations and database management.
- MVC & HMVC Architecture: Supports both MVC and Hierarchical MVC for modular applications.
- Flexible Routing and Controllers: Fast, dynamic routing with attribute or method-based configuration.
- HTTP and CLI Routing: Handing dynamic routing for HTTP or CLI, similar to HTTP routing.
- Templating: Native PHP templating with inheritance, caching, and optional engines like Twig or Smarty.
- Error Handling: Comprehensive error tracking, including non-fatal inline errors.
- Session Management: Simplified session handling for authentication and user state.
- Cloud Storage: Integrations with AWS, Azure, Google Cloud, and more.
- File Management: Secure file delivery with temporary or permanent URLs.
- Sitemap Generator: Generate sitemaps easily using NovaKit.
- Schema Objects: Generate structured schema objects for pages.
- Command Line Tools: Build full CLI applications with built-in routing support.
- CLI Tooling: Command Line Helper for application development/production (
php novakit). - AI Models: Extend your application with AI-powered features.
- Flexible Database Failover: Instant failover support for backup databases.
- Security: Implements multiple security layers to protect user data.
- Request Handling: Securely process incoming and outgoing HTTP requests.
- Email: Send emails with support for rendering full template content.
- Translation & Localization: Build multilingual applications.
- Encryption: Supports multiple encryption handlers and methods.
- Services: Share classes and objects across your codebase with caching support.
Requirements
- PHP 8.0+
- Composer
ext-mbstringenabledext-jsonenabledpsr/http-clientinstalledpsr/loginstalledext-jsonenabled- Web server (Apache, Nginx, or PHP built-in)
Installation
Create a new luminova project using Composer:
composer create-project luminovang/luminova my-project
Encryption Key
Generate your application encryption key:
php novakit generate:key
Start Development Server
To start PHP development server.
Run the following novakit command:
php novakit server
Visit: http://localhost:8000
Sitemap Generator
To generate your website XML sitemap:
Use the below novakit command:
php novakit sitemap
Directory Structure
app/
│── Controllers/ # Route handlers
│── Config/ # Application settings
│── Models/ # Application data models
│── Views/ # UI templates
│── Modules/ # HMVC modules (optional)
bootstrap/ # Core Helper Functions
bin/ # Novakit Console Commands
public/ # Front Controller (Framework entry point)
resources/
│── Views/ # MVC Template files
routes/ # Routes for Method-Based Routing
writeable/ # Private Storage, Logs, cache, Sessions, and Temp Files
system/ # Core Modules
│── plugins/ # ThirdParty Vendor Files
Basic Usage
Defining Routes
Luminova supports flexible routing using PHP Attributes or Method-Based Routing.
Attribute Routing
Enable attribute routing by setting the environment variable:
feature.route.attributes = true
Example:
namespace App\Controllers\Http; use Luminova\Base\Controller; use Luminova\Attributes\Route; use Luminova\Attributes\Prefix; #[Prefix('/(:base)', exclude: ['api'])] class MainController extends Controller { #[Route('/', methods: ['GET'])] public function index(): int { return $this->view('index'); } }
Method-Based Routing
Disable attribute routing by setting:
feature.route.attributes = false
Example:
namespace App\Controllers\Http; use Luminova\Base\Controller; class MainController extends Controller { public function index(): int { return $this->view('index'); } }
Then register your route:
// /routes/web.php $route->get('/', 'MainController::index');
Using a Callback Handler:
// /routes/web.php use Luminova\Routing\Router; use function Luminova\Funcs\view; $router->get('/', function (): int { return view('index'); });
Rendering Templates
Inside a Controller
return $this->view( string $template, // Template name array $options = [], // View options string $type = View::HTML, // Template content type int $status = 200 // HTTP status code );
Alternative Using Template Property ($tpl):
return $this->tpl->view( string $template, // Template name string $type = View::HTML // Template content type )->render( array $options = [], // View options int $status = 200 // HTTP status code );
Global Helper Function:
You can render views outside of a controller using the view() helper:
use function Luminova\Funcs\view; return view( string $template, // Template name array $options = [], // View options string $type = View::HTML, // Template content type int $status = 200 // HTTP status code );
To learn more about Luminova, see the official documentation.
Quick Tips
Q: My session works locally but not on production.
A: Update $sessionDomain in /app/Config/Session.php to match your production domain (e.g., '.' . APP_HOST). Also check Cookie.php configuration.
Q: CSS or images are broken on production.
A: Ensure app.environment.mood is set to production in your environment file to serve assets correctly.
Contributing
If your contribution targets the core framework or its docs, use these repositories instead:
For this skeleton repository, pull requests should focus on:
- Improving the project structure
- Fixing default configuration files
- Enhancing developers experience
Feedback
We welcome your feedback! Contact us at peter@luminova.ng with suggestions, feature requests, or tutorial ideas.
Don’t forget to ⭐ Luminova on GitHub. Your support helps us continue improving the framework and adding new features.
License
Luminova is open-source and released under the MIT License.