Zero-build · Zero-config · Under 1 MB

The PHP framework
without the tax.

Savv is a lean PHP engine for brand websites, portfolios, and public-facing experiences. Ship fast. No Node.js. No build pipeline. No ceremony. Just PHP running at full speed on any server on earth.

composer require savadub/savv
📦 ~638 KB total PHP 8+ 🔒 MIT license 🌐 PWA out of the box
// capabilities

Everything you need.
Nothing you don't.

Every feature is purpose-built for content-driven, public-facing sites. No bloat included.

route:zero

File-Based Routing

Drop a PHP file in views/pages/ and it becomes a URL. No registration, no config, no controllers required.

pwa:auto

PWA Baked In

Manifest, service worker, offline fallback — all generated dynamically from configs/pwa.php. Two helper calls and you're done.

build:none

Zero Build Tools

No Node.js. No npm. No webpack, Vite, or any compiler. Composer install, point at public/, go live.

redirect:cfg

Built-In Redirections

One line in configs/redirections.php creates a pretty short URL. No plugin. No route file edit needed.

cache:routes

Route Caching

php savv route:cache compiles everything into one static PHP manifest. Static-site dispatch speed, dynamic codebase.

edit:live

Live Editing

No rebuild between your file and your users. Edit views, configs, or content and reload. Instant. Critical in production emergencies.

cms:fallback

CMS Fallback

Run WordPress, e-commerce, or any other PHP app alongside Savv under the same domain with zero server config changes.

deploy:any

Deploy Anywhere

Shared hosting. Budget VPS. Bare metal. Enterprise cloud. If the server runs PHP 8, it runs Savv. No containers required.

blog:md

Built-In Blogging

Drop a Markdown file in views/posts/ with frontmatter and it's published at its slug URL automatically.

~638 KB
Total framework package size as of v2.4.1
// less than 1 MB. the entire engine.
// comparison

Honest comparison
with the alternatives.

Savv is not trying to replace Laravel or Next.js. It's built for a specific job — and it's the best tool for that job.

Feature Savv Web ✦ Full-Stack PHP Static Site Gen
File-based routing, zero config
No build tool required
PWA built-in, no setup
URL redirections, no settings
SSG-feel speed
Deploy on shared/budget hosting
Edit live in production
CMS fallback / hybrid deployment
Package size under 1 MB
Deep ORM / large plugin ecosystem
// how it works

Your entire entry point
is three lines.

Every Savv application bootstraps from a single, readable entry file. Nothing is hidden. Nothing is magic.

1

Bootstrap in one call

The application loads your environment, discovers routes, and registers the PWA engine — all in one method.

2

Pages are just PHP files

Create a file in views/pages/ and it resolves as a URL with zero other steps.

3

Two helpers for the full frontend stack

savv_head() and savv_scripts() inject Bootstrap, AOS, SPA transitions, and PWA registration automatically.

4

Listen to savv:init for your JS

Custom event fires on first load and after every page swap. Your UI components always reinitialize correctly.

public/index.php
// The entire application entry point.
                    // That's it. Really.

                    define('ROOT_PATH', dirname(__DIR__));
                    require ROOT_PATH . '/vendor/autoload.php';

                    $app = \Savv\Core\Application::bootstrap(__DIR__);
                    $app->run();
views/pages/about.php — file-based routing
// File: views/pages/about.php → accessible at /about
// No route registration. No controller. Just this.

$pageTitle       = 'About — My Brand';
$pageDescription = 'Who we are.';

ob_start();
?>
  <section>
    <h1>About Us</h1>
  </section>
<?php
$content = ob_get_clean();
include ROOT_PATH . '/views/layouts/index.php';
// hybrid deployment

Savv runs alongside
your existing CMS.

No complex server rewrites. Savv routes what it knows about, and hands the rest off cleanly to WordPress, WooCommerce, or any PHP app on the same server.

Configure integrations in one file. Set active: true and Savv handles the rest — your blog, your shop, your Savv site, all under one domain.

1

Create configs/installations.php and add your CMS entry path

2

Set active: true on the installation you want to hand off to

3

Unmatched requests flow through Savv → CMS automatically

configs/installations.php
return [
  'wordpress' => [
    'active' => true,
    'path'   => '/var/www/wp/wp-blog-header.php',
  ],
  'ecommerce' => [
    'active' => false,
    'path'   => '/var/www/shop/index.php',
  ],
];
WordPress — blogging, CMS, full sites
WooCommerce / custom e-commerce
Any PHP app under the same domain
// ideal for

The right tool for
the right job.

Savv is purpose-built for public-facing, content-driven sites. It's not trying to be everything — it's trying to be perfect for this.

🏢

Brand & Corporate Websites

Clean, fast, deployable anywhere.

🎬

Agency & Studio Portfolios

Showcase work with SPA-feel navigation.

📣

Marketing & Campaign Sites

Launch fast, iterate without rebuilds.

🚀

Product Landing Pages

Pixel-perfect, performance-optimized.

📄

Company Profiles & Brochures

PWA-ready from day one.

🌐

Hybrid CMS Sites

Savv front, WordPress blog behind.

// quick start

Up and running
in under two minutes.

1

Clone the starter: git clone https://github.com/igefadele/savv_starter my-project

2

Install dependencies: cd my-project && composer install

3

Point your server document root at public/ and open the browser.

4

Add pages by dropping .php files into views/pages/. Done.

// get started

Build your next site
the right way.

No overhead. No ceremony. Just clean PHP doing exactly what it was designed to do.