๐ A lightweight, high-performance PHP MVC framework with premium admin panel
- MVC Architecture - Clean separation of concerns
- Dependency Injection - Built-in IoC Container
- RESTful API - Built-in API controller with JWT support
- Authentication - Session & JWT based auth
- Rate Limiting - Built-in brute force protection
- Query Builder - Secure database operations with PDO
- Active Record Models - Eloquent-like model support
- Middleware System - Flexible request filtering
- CLI Tools - Code generation & database migrations
- Bilingual Docs - English & Bengali documentation
- PHP 8.1 or higher
- MySQL 5.7+ / MariaDB 10.2+
- Apache/Nginx with mod_rewrite
composer create-project atifsoftware/novaflow myproject
cd myproject# Clone the repository
git clone https://github.com/yourusername/NovaFlow.git myproject
cd myproject
# Install dependencies
composer install
# Configure environment
cp .env.example .env
# Import database
mysql -u root -p novaflow_db < novaflow_db.sqlDB_HOST=localhost
DB_NAME=novaflow_db
DB_USER=root
DB_PASS=
DB_DRIVER=pdo
JWT_SECRET=your-secret-key-here
APP_ENV=local// Simple route
$router->get('/', 'HomeController@index');
// Protected routes
$router->group(['prefix' => 'admin', 'middleware' => 'auth'], function($router) {
$router->get('/dashboard', 'AdminDashboardController@index');
});
// API routes
$router->group(['prefix' => 'api/v1'], function($router) {
$router->post('/login', 'AuthApiController@login');
});namespace App\Controllers;
use NovaFlow\Core\Controller;
class ProductController extends Controller {
public function index() {
$products = ProductModel::all();
$this->view('products.index', ['products' => $products]);
}
}use NovaFlow\Core\DB;
// Get all active products
$products = DB::table('products')->where('status', 'active')->get();
// Get single record
$user = DB::table('users')->where('email', $email)->first();use App\Services\AuthService;
$auth = Container::make(AuthService::class);
$result = $auth->login('email', 'password');
if ($result['success']) {
// Redirect to dashboard
}
// API Login (returns JWT)
$result = $auth->loginApi('email', 'password');
$token = $result['token'];use NovaFlow\Core\UploadHandler;
$upload = new UploadHandler();
$upload->allowedTypes(['image/jpeg', 'image/png'])
->maxSize(2097152)
->processImage(800, 600, 85);
$result = $upload->upload('avatar');NovaFlow/
โโโ app/
โ โโโ controllers/ # Controllers
โ โโโ models/ # Database models
โ โโโ services/ # Business logic
โ โโโ middleware/ # Request filters
โ โโโ views/ # Templates
โ โโโ libraries/ # Core classes
โโโ config/ # Configuration
โโโ public/ # Public assets
โโโ storage/ # Logs, cache
โโโ tests/ # Unit tests
โโโ cli.php # CLI tools
โโโ composer.json # Dependencies
# Run tests
composer test
# Run specific test
./vendor/bin/phpunit tests/Unit/SecurityTest.php# Show help
php cli.php
# System health check
php cli.php --health
# List routes
php cli.php --routes
# Run queue worker
php cli.php --workContributions are welcome! Please read our Contributing Guide first.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Laravel (for inspiration)
- Bootstrap 5
- Font Awesome
Made with โค๏ธ by Mohidul Hasan
