BusinessPress for Developers: API-First, Extensible, Modern
Most business platforms make you choose: either a polished drag-and-drop experience with zero flexibility, or a raw framework that requires months of custom development. BusinessPress rejects that tradeoff entirely.
Built on Laravel 12, powered by GraphQL, and equipped with a built-in MCP server for AI integration, BusinessPress is a full business platform that developers can actually extend, customize, and self-host — without sacrificing the out-of-the-box features that non-technical users need.
This post is a deep dive into what makes BusinessPress a serious developer platform. If you write code for a living — whether you're building for yourself or for clients — this is for you.
The Tech Stack: Modern, Familiar, Proven
BusinessPress doesn't reinvent the wheel. It leans on the tools that millions of developers already know and trust:
- Laravel 12 — The PHP framework powering the core. If you know Laravel, you're already home.
- Livewire — Reactive, server-driven UI components for the dashboard — no JavaScript framework required.
- PostgreSQL — The database engine. Rock-solid, scalable, and fully self-hostable.
- Twig Templates — For the page builder's rendering engine, with seven custom extensions for asset handling, auth, URLs, and component tags.
- GraphQL (Lighthouse) — A complete API layer with auto-generated schemas from your data models.
No proprietary runtime. No vendor SDK you have to learn from scratch. Just standard tools with thoughtful abstractions on top.
GraphQL API: Query Any Business Entity
Every entity in BusinessPress — pages, products, orders, leads, blog posts, subscriptions — is queryable through a GraphQL API. The schema is auto-generated from PHP model definitions, so as you extend your data models, the API grows with them.
Here's a real query to list published products with pricing:
{
product_multiple(first: 10) {
data {
id
name
slug
excerpt
featured
thumbnail
getPrice(interval: "monthly")
isInStock
categories {
data {
id
name
}
}
}
}
}
Need a single page by slug?
{
page_single(slug: "pricing") {
id
name
slug
status
meta_title
meta_description
}
}
The API follows a consistent {type}_single / {type}_multiple convention. Once you know the pattern, you can query any entity type without checking docs every time.
BusinessPress exposes three GraphQL schemas — storefront (public), dashboard (authenticated), and system — so you can choose the right access level for your use case. The storefront schema automatically applies security scopes. For example, products are always filtered to published status on the public API:
public static function getStorefrontAutoScopes(): array
{
return ['published'];
}
This means you can safely expose the storefront GraphQL endpoint without worrying about leaking draft or private data.
MCP Server: Connect AI Assistants to Your Business Data
BusinessPress ships with a built-in Model Context Protocol (MCP) server. This means AI assistants like Claude can directly read, create, and update your business data — products, pages, orders, leads, and all 124+ entity types — through a standardized interface.
The MCP server is a first-class feature, not a plugin. It's secured with Laravel Sanctum tokens and supports nine tools out of the box:
- introspect_schema — Discover entity types and their fields dynamically
- list_entities / get_entity / search_entities — Read your data
- create_entity / update_entity / delete_entity — Write operations with 2-step confirmation
- upload_file — Upload media from URL or base64
- execute_graphql — Raw GraphQL escape hatch for complex queries
Connecting Claude to your BusinessPress instance takes one command:
claude mcp add businesspress \
--url https://your-site.com/mcp \
--header "Authorization: Bearer YOUR_TOKEN"
Once connected, you can ask Claude to do things like "create a blog post about our new product launch" or "list all orders from this week" — and it will use the MCP tools to interact with your actual data. Every write operation requires confirmation, so there's no risk of accidental changes.
This isn't a chatbot bolted onto a dashboard. It's a real API integration that lets AI assistants understand your entire business data model and work with it programmatically.
WordPress-Style Hooks and Filters
If you've ever built a WordPress plugin, you'll feel right at home. BusinessPress implements the same add_filter / apply_filters / add_action / do_action pattern — but on top of Laravel's service container.
Here's a real example from the codebase that adds a custom item to the dashboard sidebar:
// app/Providers/AppServiceProvider.php
add_filter('dashboard.sidebar.menu.settings', function ($menu) {
$menu[] = [
'label' => translate('MCP'),
'icon' => 'phosphor-plugs-connected',
'route' => route('dashboard.mcp'),
'route_name' => 'dashboard.mcp',
'is_active' => is_current_route(['dashboard.mcp']),
'user_scope' => 'admin',
'permissions' => ['only_admin'],
'enabled' => true,
];
return $menu;
}, 10);
The hook system touches everything: sidebar menus, app settings, model fields, access control, and more. Some examples of available filter hooks:
| Hook | What It Extends |
|---|---|
dashboard.sidebar.menu.general | Dashboard, Leads, Orders navigation |
dashboard.sidebar.menu.content | Pages, File Manager navigation |
dashboard.sidebar.business.items | Products, Orders section |
dashboard.sidebar.menu.settings | Settings, Integrations section |
app-settings | App settings definitions |
{model}.wef.data-types | Custom fields per model |
Hooks are also available inside Twig page-builder templates, so even your frontend templates can tap into the extension system.
Custom Dashboard Pages with Livewire
Need a custom dashboard page? BusinessPress makes it straightforward with Livewire components. You write a PHP class, a Blade view, register a route, and hook it into the sidebar.
Here's a simplified version of a real dashboard page — the MCP token management page:
namespace App\Livewire\Dashboard\Pages;
use Livewire\Component;
use Livewire\Attributes\Layout;
use BusinessPress\Core\Traits\Livewire\DispatchSupport;
class McpPage extends Component
{
use DispatchSupport;
public string $tokenName = 'MCP Token';
public ?string $newToken = null;
public function generateToken()
{
$token = Auth::user()->createToken($this->tokenName);
$this->newToken = $token->plainTextToken;
$this->notify(translate('Token created!'), 'success');
}
#[Layout('dashboard.layouts.main')]
public function render()
{
return view('livewire.dashboard.pages.mcp', [
'mcpEndpoint' => url('/mcp'),
]);
}
}
Register the route and sidebar item in your AppServiceProvider, and you have a fully integrated dashboard page — complete with real-time updates, toast notifications, and the BusinessPress design system.
The key pattern: your app/ directory is where extensions live. The core platform is in packages/businesspress/. You never need to modify core code to add functionality.
Self-Hosting: Full Control, No Lock-In
BusinessPress is designed to run on your own infrastructure. There's no required cloud service, no usage-based pricing that scales with your traffic, and no phone-home telemetry.
Deployment is standard Laravel:
# Install dependencies
composer install
npm install && npm run build
# Configure environment
cp .env.example .env
php artisan key:generate
# Run migrations
php artisan migrate --seed
# Start development server
composer dev
You can run it on a $5/month VPS, a Kubernetes cluster, or anything in between. The database is PostgreSQL — widely supported, easy to back up, and scales with your business.
For agencies, this means you can deploy client sites on your own infrastructure and maintain full control over updates, backups, and scaling. No surprise price increases, no forced migrations, and no dependency on a vendor's uptime.
What You Can Build
Because BusinessPress combines a CMS, e-commerce engine, CRM, and API layer in one platform, the range of what you can build is broad:
- Client websites with e-commerce — Pages, products, Stripe payments, lead forms — all managed from one dashboard.
- Multi-vendor marketplaces — Built-in shop and vendor support with separate product catalogs.
- Subscription businesses — Recurring billing, subscription management, and access control for gated content.
- Headless frontends — Use the GraphQL API to power a Next.js, Nuxt, or any other frontend while keeping BusinessPress as your backend.
- AI-powered workflows — Connect AI assistants via MCP to automate content creation, order management, or customer communication.
- Custom internal tools — Build Livewire dashboard pages for any workflow your business needs.
Getting Started
If you're a developer who's tired of fighting with rigid platforms or stitching together a dozen SaaS tools, BusinessPress offers a different path: a real platform you can extend with code you understand.
Here's how to start:
- Clone and deploy — Standard Laravel setup. If you've deployed a Laravel app before, you know the drill.
- Explore the GraphQL API — Use the
introspect_schemaMCP tool or browse the auto-generated schema to see what's available. - Extend the dashboard — Add a custom Livewire page. Follow the pattern in
app/Livewire/Dashboard/Pages/. - Connect an AI assistant — Generate a Sanctum token, add the MCP server to Claude, and start querying your data with natural language.
BusinessPress is API-first, extensible, and built for developers who want to move fast without giving up control. It's the business platform you'd build if you had the time — but don't have to, because it already exists.