Innov8ProTech
NativePHPTechnologies / NativePHP

PHP,
on the desktop.

Ship your Laravel app as a real Windows, macOS, or Linux desktop application. Same code, same team, native window and OS integrations — without rewriting anything in Electron.

Windows · macOS · Linux
Laravel or plain PHP
NativePHP · quickstart
# Create a new NativePHP app
composer create-project nativephp/electron my-app
 
# Your Laravel routes work as-is
Route::get('/', fn () => view('dashboard'));
 
# Add a native window
Window::open()
->route('dashboard')
->width(1280)
->height(800)
->minWidth(960)
->rememberState();
 
# Native notifications, tray, dialogs — all from PHP
Notification::title('Invoice paid')
->message('GH₵ 12,500 from Amara')
->show();

3

Platforms from one codebase

~120 MB

Typical installed size

2 wk

Kick-off to first build

0

New languages to learn

The stack

Tools we ship with.

Laravel 11

Framework

PHP 8.3

Runtime

NativePHP

Desktop shell

Livewire

Reactive UI

Inertia

SPA adapter

Alpine.js

Lightweight JS

Tailwind

Styling

Vue 3

Frontend

React

Frontend

SQLite

Local DB

Redis

Cache / queue

Composer

Package manager

Native APIs

What you can do from PHP.

Every one of these is a first-class PHP API. No JavaScript bridge, no IPC plumbing — just method calls in your Laravel code.

Windows

Open, close, resize, remember state, multiple windows

App menu

Native application menus, per-platform layout

Notifications

Title, message, actions, sound, click handlers

File dialogs

Open, save, file type filters, multi-select

Clipboard

Read, write, image paste, system-wide

Shell

Open URLs, reveal in Finder/Explorer

Screen

Display dimensions, cursor position, multi-monitor

System

OS info, version, paths, environment

Power monitor

Battery, AC, suspend and resume events

Global shortcuts

System-wide hotkeys with modifier combos

Audio & media

Play sounds, media keys, notifications

Auto-updater

Check, download, install, delta updates

The three questions

What it is. Why it matters. How we use it.

01

PHP, running as a native desktop app.

NativePHP lets you ship a Laravel or plain PHP application as a real Windows, macOS, or Linux desktop app. The same controllers, the same Eloquent models, the same Blade views — wrapped in a native window with access to the operating system.

  • Same PHP code you already write — no new language
  • Ships as a signed .exe, .dmg, or AppImage
  • Full access to filesystem, tray, notifications
  • Auto-updates via signed releases
Invoice — Laravel Blade

Invoice #4821

Amara Okafor

Paid
Design retainerGH₵ 8,000
Dev hoursGH₵ 4,500
TotalGH₵ 12,500

Architecture

One codebase. Two entry points.

The web app and desktop app share the same business logic through a Composer package. Write it once, consume it in both.

project root
packages/invoice-core/
src/Models/
src/Services/
composer.json
apps/web/
routes/web.php
apps/desktop/
routes/desktop.php
NativeShell.php
InvoiceService.php · called from both
namespace Acme\InvoiceCore\Services;

class InvoiceService
{
    public function totalFor(Client $client): Money
    {
        return $client->invoices()
            ->where('status', 'pending')
            ->sum('amount');
    }
}

// --- In web/routes/web.php ---
Route::get('/invoices', function (InvoiceService $svc) {
    return view('invoices', [
        'total' => $svc->totalFor(auth()->user()),
    ]);
});

// --- In desktop/NativeShell.php ---
Window::open()
    ->route('invoices')
    ->width(1280)
    ->rememberState();

Real-world use

What teams actually build.

Internal tools

Admin dashboards that run locally. No server per user, no browser tab to lose.

WinMacLinux

Field agents

Offline-first data capture with local SQLite. Syncs to the Laravel API when connected.

WinMac

POS terminals

Retail point-of-sale on a local machine. Cash drawer, receipt printer, scanner integration.

WinMac

Kiosk software

Self-service terminals in lobbies, showrooms, and events. Locked-down, full-screen.

WinLinux

Desktop companions

A desktop app to an existing SaaS product. Shared codebase, one deployment.

WinMacLinux

Data processing

Batch jobs, ETL, image processing at the edge — without a server round-trip.

WinMacLinux

Honest comparison

NativePHP vs Electron vs Tauri.

We build with all three. The right choice depends on your team, your stack, and what you're optimizing for.

NativePHP

Best fit

PHP backend · Laravel-native

Bundle

~120 MB

Backend

PHP (Laravel)

Learning

Zero — if you know Laravel

  • Existing Laravel app to leverage
  • Team writes PHP, not JS/Rust
  • Bundle size is not the primary constraint
  • Desktop companion to a web product
  • Want to stay in one language and stack

Electron

Node backend · JS-first

Bundle

~120 MB

Backend

Node.js

Learning

Zero — if you know JS

  • Team is JavaScript/TypeScript-first
  • Large existing Node.js codebase
  • Broadest ecosystem of native modules
  • No PHP investment to leverage
  • Mass-market consumer apps

Tauri

Rust backend · smallest bundle

Bundle

~10 MB

Backend

Rust

Learning

Steep — Rust required

  • Bundle size is critical
  • Performance is the top concern
  • Team comfortable with Rust
  • Modern security posture matters most
  • You want maximum native integration

Bundle size

What the installer actually weighs.

NativePHP bundles a PHP runtime and Chromium — same footprint class as Electron. If bundle size is your top priority, Tauri is the answer. If code reuse and team velocity are, NativePHP wins.

Native (Swift / WinUI)~5 MB
Tauri~10 MB
Electron~120 MB
NativePHP~120 MB

System requirements

What users need to run it.

Windows

Windows 10 (1809+)

Windows 11

WebView2 runtime required

macOS

macOS 11 Big Sur

macOS 14 Sonoma

Apple Silicon native

Linux

glibc 2.28+ (Ubuntu 20.04)

Ubuntu 22.04+

AppImage / deb / rpm / Flatpak

Distribution & signing

Signed on all three platforms.

Unsigned installers get blocked by users. Every app we ship is properly signed, notarized, and distributed with an auto-update feed.

Windows

  1. 01Authenticode certificate from a CA
  2. 02Sign the .exe and MSI installer
  3. 03Build SmartScreen reputation over time
  4. 04Ship as NSIS installer or MSI package

macOS

  1. 01Apple Developer ID certificate
  2. 02Notarize the .app with Apple
  3. 03Staple the notarization ticket
  4. 04Distribute as signed .dmg

Linux

  1. 01Build AppImage for portable distribution
  2. 02Package as .deb and .rpm for repos
  3. 03Optional Flatpak for sandboxed installs
  4. 04Sign releases with GPG

Auto-update flow

Release to installed in five steps.

01

Release

New version published to signed release feed.

02

Check

Installed apps poll the feed on schedule.

03

Download

Delta download where possible — smaller payload.

04

Verify

Signature verified before install. Rejects tampering.

05

Install

Runs on next launch, or forced if critical.

Kiosk mode

Locked-down. Full-screen. Self-service.

NativePHP handles kiosk-style deployments well — terminals, showrooms, event booths, and anywhere a locked-down app needs to just run.

Full-screen, no chrome

No window borders, no menu bar, no browser UI. Just the app.

Disable keyboard shortcuts

Block Ctrl+Alt+Del escape routes, disable Alt+Tab, disable Cmd+Tab.

Auto-restart on crash

Watchdog process restarts the app if it exits unexpectedly.

Managed via MDM / GPO

Deploy and configure across fleets with macOS MDM or Windows Group Policy.

In the box

What ships with the app.

PHP runtime

Bundled PHP binary — user installs nothing separately.

SQLite

Local database ships with the app for offline data.

Chromium engine

Rendering engine bundled — no separate browser needed.

Your Laravel app

All controllers, models, services, and routes included.

NativePHP runtime

The PHP-to-native bridge and shell.

Auto-updater

Signed release feed with delta downloads.

Common confusions

What NativePHP is not.

There are several related-but-different tools in the PHP ecosystem. Here's how they differ.

Not Laravel Octane

Octane accelerates web requests. NativePHP wraps an app for the desktop.

Not FrankenPHP

FrankenPHP is a modern PHP server. NativePHP is a desktop shell.

Not a web server

NativePHP ships your app — it doesn't host one for other users.

Not a mobile framework

Desktop only. For mobile, use React Native, Flutter, or native.

The process

Five phases. Every engagement.

01

Discovery

Which flows move to desktop, which stay web. Shared package boundaries defined before any code.

Deliverables

Feature matrix · Shared-code plan · Fixed-price quote

02

Shared package

Extract business logic into a Composer package consumed by both the web and desktop entry points.

Deliverables

Composer package · Web refactor · Tests pass on both

03

Desktop shell

Native windows, tray, notifications, file dialogs, menus, and OS-specific integrations.

Deliverables

Working desktop app · Weekly builds · Documentation

04

Signing & distribution

Code signing per platform, installer packaging, auto-update pipeline wired up end to end.

Deliverables

Signed installers · Update feed · Install test report

05

Support

OS compatibility updates, PHP and Laravel upgrades, feature iteration, quarterly reviews.

Deliverables

Monthly retainer · SLA response · Roadmap

Timelines

How long a NativePHP build takes.

Simple

3–4 wk

  • Web app + desktop shell
  • Standard windows and menus
  • Local file access
  • One-platform launch

Shared logic

6–8 wk

  • Composer package extracted
  • Dual entry points (web + desktop)
  • Offline SQLite sync
  • Signed + notarized installers

Complex

10–14 wk

  • Deep native API integration
  • Kiosk or POS hardware
  • Multi-platform with auto-update
  • MDM / Group Policy deployment

Honest advice

When NativePHP fits.
When it doesn't.

Choose NativePHP when

  • You already have a Laravel app to leverage
  • Your team writes PHP and doesn't want to learn JS or Rust
  • Bundle size isn't the top constraint
  • You need a desktop companion to a web product
  • Faster time-to-market beats smallest footprint

Consider alternatives when

  • Bundle size is critical (Tauri is 10× smaller)
  • Your team is JavaScript or Rust-first
  • You need mobile from the same codebase
  • Deep GPU / Metal / Vulkan access matters
  • Mass-market consumer app on the App Store

Credentials

Why teams trust us with NativePHP.

Built on NativePHP

First-party integration with the official NativePHP runtime from Beyond Code

Laravel expertise

Deep Laravel work across dozens of production applications

PHP native

PHP 8.3+ across every build — modern language features only

Desktop shipping

Signed, notarized, and distributed apps on three platforms

Selected work

NativePHP in production.

Internal tools

Admin dashboard companion

A Laravel SaaS needed a desktop admin app for ops teams working on private networks. Shipped in 5 weeks with shared Eloquent models and services.

Outcome

5-week build

Logistics

Field agent data capture

Offline-first field app for a logistics company. Local SQLite, syncs to Laravel API. Runs on 200 field machines across Windows and macOS.

Outcome

200 deployments

Retail

POS terminal for a retail chain

Point-of-sale running on local terminals across 12 stores. Receipt printer, barcode scanner, cash drawer integrations from PHP.

Outcome

12 stores live

Client feedback

What our clients
actually say.

The move to SikaNet CBS was a bigger shift than I expected — but the right one. Before, our Susu collectors were on paper and every BOG report took us days to assemble. Now collections appear in the office before a collector even finishes their route, and the reports are just there. The team understood our business from day one.

DA

David Awuni

Founder, Adwumapa Microfinance

We were cautious about moving patient records online. The on-prem approach changed that — everything stays inside the health center, nothing goes to a foreign cloud. Our clinicians now retrieve a file in seconds instead of ten minutes, and every entry has an audit trail behind it.

MD

Medical Director

Sekyedumase Health Center

The patient management system they developed has streamlined our ophthalmology department. Appointment scheduling, patient records, and referral tracking are now seamless — saving us hours of administrative work every day.

IA

Isaac Adu

Ophthalmologist, Ghana Health Service

FAQ

Common
questions.

Still curious?
For internal tools and desktop companions to existing Laravel apps, yes. It's stable enough to ship, actively maintained, and backed by Beyond Code. For mass-market consumer desktop apps where every framework feature matters, Electron or Tauri may still be the safer choice.

Get in touch

Building a desktop
companion to Laravel?

We can help. Two weeks from kick-off to your first signed build.