PHPackages                             akrista/bizkit - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. akrista/bizkit

ActiveProject[Framework](/categories/framework)

akrista/bizkit
==============

Batteries included starter kit for any laravel project.

v0.3.9(1w ago)012↓42.9%[1 PRs](https://github.com/akrista/bizkit/pulls)MITPHPPHP ^8.5CI passing

Since Jun 3Pushed 4d agoCompare

[ Source](https://github.com/akrista/bizkit)[ Packagist](https://packagist.org/packages/akrista/bizkit)[ RSS](/packages/akrista-bizkit/feed)WikiDiscussions master Synced 1w ago

READMEChangelogDependencies (106)Versions (15)Used By (0)

Bizkit
======

[](#bizkit)

[![Laravel Version](https://camo.githubusercontent.com/3ea136405b1fce4774069c8127b62b1c4260eb0533c2d2131b87f54e242eb2d6/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c61726176656c2d31332e782d7265642e737667)](https://laravel.com)[![PHP Version](https://camo.githubusercontent.com/a3efcba14243fb59b4bc246efb4cca2aee6c5ae1a38ee305f736d4eabf2e96f1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d382e352d626c75652e737667)](https://php.net)[![Packagist Version](https://camo.githubusercontent.com/63b261c5d5fe3ff1ce61b478f238eef6d345770cf3f6d8e0866f47b97a3cba33/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f616b72697374612f62697a6b69742e737667)](https://packagist.org/packages/akrista/bizkit)[![License](https://camo.githubusercontent.com/8bb50fd2278f18fc326bf71f6e88ca8f884f72f179d3e555e20ed30157190d0d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e2e737667)](LICENSE.md)

**Bizkit** is a batteries-included Laravel starter kit based on [Laravel Starter Kits](https://laravel.com/starter-kits). It is designed to serve as a complete and robust baseline to rapidly bootstrap both complex and simple Laravel applications.

Bizkit is a personal Laravel starter kit built for visual excellence, modern reactivity, and developer ergonomics. While built primarily as a personal foundation, contributions are welcome, and the project is fully licensed under the MIT license.

---

Key Features
------------

[](#key-features)

### 🚀 Performance &amp; Real-time

[](#-performance--real-time)

- **Octane with FrankenPHP**: Pre-configured high-performance application serving with FrankenPHP.
- **Reverb**: Native, lightning-fast WebSockets for real-time Laravel broadcasting.
- **Horizon**: Beautiful Redis queue monitor dashboard to oversee job processing.
- **Pulse**: Real-time application performance and resource monitoring. **Database support:** MySQL, MariaDB, or PostgreSQL only — Pulse is not compatible with SQLite/MSSQL.

### 🛡️ Authentication &amp; Security

[](#️-authentication--security)

- **Robust Authentication**: Powered by **Laravel Fortify** featuring secure registration, email verification, and password resets.
- **Passkey/WebAuthn**: Out-of-the-box native passwordless authentication.
- **Two-Factor Authentication (2FA)**: One-Time Password (OTP) verification with TOTP &amp; recovery codes.
- **Granular Permissions &amp; Roles**: Tenancy-aware database-driven authorization powered by **Spatie Laravel Permission**, featuring automatic policy generation and dynamic permissions synchronization.

### 🛠️ Developer Experience &amp; Architecture

[](#️-developer-experience--architecture)

- **Interactive UI**: Powered by **Livewire v4** and beautiful **Flux UI** components.
- **API Routing &amp; Documentation**: Integrated API routing with automatic interactive documentation via **Dedoc Scramble** and **Scalar**.
- **S3 Filesystem**: Pre-configured support for AWS S3 file storage.
- **Production-Ready Docker**: Containerized with a multi-stage Alpine Linux image running FrankenPHP, Supervisor, and Supercronic scheduler.
- **Feature Flags**: Native feature flagging and targeting built with **Laravel Pennant**.
- **Quality Baseline**: Pre-configured linting, analysis, and testing using **Pint**, **Rector**, **Larastan**, and **Pest PHP**.

---

Authorization &amp; Roles
-------------------------

[](#authorization--roles)

Bizkit uses a hybrid, team-scoped authorization layer built on top of **Spatie Laravel Permission**.

### Architecture

[](#architecture)

- **Gate-Level Scoping**: Dynamically registers a `Gate::before` callback that scopes all authorization checks (e.g. `$user->can()`) to the active team (`current_team_id`).
- **Super Admin Bypass**: Allows administrators matching `config('bizkit.admin_email')` or possessing the Spatie `admin` role to bypass policy checks.
- **Dynamic Fallbacks**: Checks database-configured roles/permissions first and falls back to static `TeamRole` / `TeamPermission` enums if not found in the DB.

### Artisan Commands

[](#artisan-commands)

- **Sync Permissions**: Seed all registered permissions (resources, pages, widgets, custom) and automatically map them to any `admin` role: ```
    php artisan bizkit:sync-permissions
    ```
- **Generate Policies**: Scaffold policies for your models using a predefined stub mapping Eloquent resource actions to Spatie permissions: ```
    php artisan bizkit:generate-policies [--force]
    ```

---

Upstream Upgrade System
-----------------------

[](#upstream-upgrade-system)

To ensure that projects started with Bizkit can receive upstream template updates with minimal friction, Bizkit features an interactive self-updating CLI tool. It compares your local code against the lighthouse repository and lets you selectively merge improvements.

### Usage Commands

[](#usage-commands)

Ensure your Git working tree is clean before running upgrades:

```
# 1. Dry run (preview pending changes only)
php artisan bizkit:upgrade --dry-run

# 2. Perform interactive merge comparing against the latest stable release
php artisan bizkit:upgrade

# 3. Pull bleeding-edge updates from the development branch
php artisan bizkit:upgrade --dev
```

When file differences are detected, the command runs an interactive diff selection where you can choose whether to keep your custom code or adopt the upstream version. The sync state is recorded in `bizkit.json`.

---

Installation &amp; Setup
------------------------

[](#installation--setup)

### Prerequisites

[](#prerequisites)

Ensure you have **PHP 8.5+**, **Composer**, **Git**, and **Bun** installed globally.

Important

**Windows Users**: Because **Laravel Horizon** requires `pcntl` and `posix` extensions (which are not natively supported on Windows), use the [Manual Installation](#manual-installation) section below with the `--ignore-platform-reqs` flag. Horizon itself will not run on Windows — skip it or run your app via WSL/Herd if you need a queue worker.

### One-Command Install (Recommended)

[](#one-command-install-recommended)

The fastest way to bootstrap a new project from Bizkit is via the official [Laravel installer](https://laravel.com/docs/installation#the-laravel-installer). This single command scaffolds a new project called `test`, pulls Bizkit as the template, installs JS/TS assets with **Bun**, and initializes a **Git** repository:

```
laravel new test --using=akrista/bizkit --bun --git
```

**Flag breakdown:**

- `--using=akrista/bizkit` — Pulls Bizkit from [Packagist](https://packagist.org/packages/akrista/bizkit) as the project template.
- `--bun` — Installs frontend dependencies with Bun and runs the initial asset build.
- `--git` — Initializes a Git repository and creates the initial commit.

Tip

The Laravel installer automatically runs `php artisan key:generate` and migrates the database, so you can skip `composer run setup` for a quick start. Run it afterwards only if you need the full Bizkit bootstrap (Octane, Husky hooks, IDE helpers, etc.).

### Manual Installation

[](#manual-installation)

If you prefer explicit control over each step, bootstrap Bizkit via Composer instead:

1. **Bootstrap the project**:

    ```
    # macOS / Linux / WSL
    composer create-project akrista/bizkit my-awesome-app

    # Windows (Horizon requires pcntl/posix, unavailable on Windows)
    composer create-project --ignore-platform-reqs akrista/bizkit my-awesome-app
    ```

    ```
    cd my-awesome-app
    ```
2. **Initialize services and build assets**:

    ```
    composer run setup
    ```
3. **Start the local development environment**:

    ```
    composer run dev
    ```

### Git Hooks (Husky)

[](#git-hooks-husky)

Bizkit uses **Husky** to automate code style checks before commits are finalized. The pre-commit hook automatically runs **Laravel Pint** (`composer lint:check`) on staged files.

These hooks are configured automatically during `composer run setup` (which calls `bun install`), but you can also manually set them up or re-enable them by running:

```
bun run prepare
```

#### Troubleshooting: Git Hooks / Husky on Windows (Laravel Herd)

[](#troubleshooting-git-hooks--husky-on-windows-laravel-herd)

If you encounter `composer: command not found` or `php: command not found` errors during `git commit` (caused by Husky executing in a bash environment that cannot natively run Windows `.bat` files), create extensionless shell wrappers in your Herd bin directory (`C:\Users\\.config\herd\bin`):

- **Composer Wrapper** (`composer`):

    ```
    #!/bin/sh
    php "$(dirname "$0")/composer.phar" "$@"
    ```
- **PHP Wrapper** (`php`):

    ```
    #!/bin/sh
    PHP_EXE=$(grep -o '"[^"]*"' "$(dirname "$0")/php.bat" | head -n 1 | tr -d '"')
    exec "$PHP_EXE" "$@"
    ```

---

Docker Deployment
-----------------

[](#docker-deployment)

Bizkit comes with a production-ready, high-performance Docker setup powered by **FrankenPHP** and **Supervisor**.

### 1. Running with Docker Compose

[](#1-running-with-docker-compose)

To spin up the application stack locally:

1. **Copy the example Compose file**: ```
    cp compose.example.yml compose.yml
    ```
2. **Configure your Environment**: Make sure you have a `.env` file generated with `composer run setup` or by copying `.env.example`.
3. **Start the containers**: ```
    docker compose up --build -d
    ```

By default, this launches two services:

- **`bizkit-app`**: FrankenPHP web server listening on port `8000`.
- **`bizkit-scheduler`**: Supervisor-managed container running Laravel's task scheduler.

---

### 2. HTTPS &amp; SSL Requirements (Critical for Production)

[](#2-https--ssl-requirements-critical-for-production)

For any production or public deployment, **Bizkit must be served over HTTPS**.

#### Why HTTPS is Required

[](#why-https-is-required)

- **Passkeys / WebAuthn**: Browser security specifications strictly restrict WebAuthn APIs to secure contexts (HTTPS). Passkey registration and login will fail entirely on unencrypted HTTP.
- **Two-Factor Authentication (2FA) &amp; Session Security**: Secure session cookies and 2FA credential transfers require SSL to prevent intercept attacks.

#### Production SSL Setup

[](#production-ssl-setup)

To deploy securely, you should place Bizkit behind a reverse proxy or SSL termination layer (e.g., **Traefik**, **Nginx**, **Cloudflare**, or a frontend **Caddy** load balancer):

1. **Proxy Configuration**: Direct your external proxy to route HTTPS traffic (port `443`) to port `8000` (HTTP) of the `bizkit-app` container.
2. **Environment Variables**: Update the following variables in your production `.env` file: ```
    APP_URL=https://your-domain.com
    OCTANE_HTTPS=true
    ```

    Setting `OCTANE_HTTPS=true` ensures Laravel correctly generates `https://` URLs for assets, routing redirects, and secure cookies.
3. **HSTS (HTTP Strict Transport Security)**: The `deployment/Caddyfile` includes high-security headers. For production, you should uncomment the HSTS header in the Caddyfile: ```
    Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
    ```

    > \[!WARNING\] Do not uncomment HSTS during local development, or browsers will cache the rule and prevent access to local IP/localhost connections over HTTP, resulting in `SSL_ERROR_RX_RECORD_TOO_LONG` errors.

---

Future Roadmap
--------------

[](#future-roadmap)

The following features are planned for future releases of Bizkit:

- 📖 **Application Documentation**: A comprehensive documentation site/viewer built into the kit.
- 🔗 **Webhooks**: Outbound webhooks and subscription management for integrations.
- 🔑 **Permissions &amp; Roles** (Completed): Advanced granular access control out of the box.

---

Project Structure
-----------------

[](#project-structure)

```
├── app/
│   ├── Actions/Fortify/              # Fortify registration and 2FA logic
│   ├── Http/Responses/               # Custom Fortify response overrides
│   ├── Livewire/                     # Interactive Livewire components
│   ├── Models/                       # Core Eloquent models (User, Team, Membership)
│   └── Console/Commands/Upgrade/     # Downstream upgrade system code
├── config/                           # Application configuration overrides
├── database/migrations/              # Fortify, Passkeys, Pulse, and Teams tables
├── deployment/                       # Docker deployment configs (Caddyfile, supervisord)
├── resources/views/                  # Blade views and Flux UI layouts
└── bizkit.json                       # Local upgrade status receipt

```

---

License
-------

[](#license)

Bizkit is open-sourced software licensed under the [MIT license](LICENSE.md).

---

TODO
----

[](#todo)

A consolidated backlog of work for this project. Items are grouped by status and source so contributors can pick up where scaffolding left off.

### Declared Roadmap (from "Future Roadmap" section)

[](#declared-roadmap-from-future-roadmap-section)

- **Application Documentation** — Build an in-app documentation site/viewer for the kit (routes, components, and a renderer that scans the codebase to produce reference pages).
- **Webhooks** — Implement outbound webhook delivery and a subscription management UI so apps can broadcast events to third parties with retries, signing, and logs.
- **Permissions &amp; Roles** — Add an advanced, granular access-control layer on top of the existing `TeamPermission` / `TeamRole` enums, including a `Permission` table, gate definitions, and a policy generator.

### Partially Implemented (scaffolding present, finish needed)

[](#partially-implemented-scaffolding-present-finish-needed)

- **AI / Agent scaffolding** — Stubs exist in `stubs/` (`agent.stub`, `structured-agent.stub`, `tool.stub`, `agent-middleware.stub`) and the `agent_conversations` migration is shipped, but there is no `make:agent` Artisan command, no example agents under `app/Ai/`, and no `agent_conversations` model/relations. Wire these up so the kit can actually generate and run agents.
- **Filament admin panel** — `app/Providers/Filament/AdminPanelProvider.php` and `config/filament.php` are present, but no `app/Filament/` Resources, Pages, or Widgets are committed. Add a baseline admin shell (e.g., `UserResource`, `TeamResource`) and document how to extend it.
- **Upstream upgrade CLI** — `php artisan bizkit:upgrade` is wired through `app/Console/Commands/UpgradeCommand.php` with `FileClassifier` + `FileStatus`, but `bizkit.json` currently only tracks `{version, repository}`. Add a per-file sync state map and a `--status` / `--reset` subcommand to introspect or clear it.
- **API surface** — `routes/api.php` only exposes the default `/user` Sanctum endpoint. Add versioned API routes (`routes/api/v1.php`) with a token-issuing endpoint, and configure Scramble + Scalar to document them.
- **Dashboard page** — `resources/views/dashboard.blade.php` is the only authenticated landing page and currently shows the placeholder. Build a real dashboard view (stats cards, recent activity) that demonstrates the layout.
- **Welcome page polish** — `resources/views/welcome.blade.php` is a marketing surface; add the hero, feature grid, and footer sections referenced in the kit's design language.

### Auth, Security &amp; Teams (extending what exists)

[](#auth-security--teams-extending-what-exists)

- **Passkey UX tests** — Only the `SecurityTest` covers 2FA. Add feature tests for passkey registration, passkey login, and passkey removal flows.
- **Team invitations** — `TeamInvitationTest` exists, but there is no test for invitation expiry, reuse-after-acceptance, or email throttling. Cover these edge cases.
- **Team-switcher component** — `resources/views/components/team-switcher.blade.php` is present; verify it works end-to-end with the team-scoped routes and `SetTeamUrlDefaults` middleware, then add a regression test.
- **Session/device management** — Add a "Sessions" section under `settings/security` listing and revoking active sessions/devices.

### Quality, Tooling &amp; CI

[](#quality-tooling--ci)

- **Bring CI in line with composer** — `composer.json` requires PHP `^8.3`, but `boost.json` and the README claim 8.5, and `tests.yml` only matrixes 8.3/8.4/8.5. Pin a single supported floor (8.3) in docs and align the matrix.
- **Bun vs npm in CI** — `.github/workflows/tests.yml` uses `npm i` / `npm run build`, but the project depends on Bun (per README and `composer.json` scripts). Switch CI to `bun install` / `bun run build` to match local development.
- **Lint workflow coverage** — `.github/workflows/lint.yml` only runs Pint via `composer lint`; it skips Rector, Larastan, and Pest. Wire the full `composer test` script into CI (or add a separate `ci.yml`) so type coverage and static analysis are gated.
- **Type coverage gate** — `composer.json` exposes `test:type-coverage` at 100%, but the gate isn't enforced in CI. Add a `composer ci:check` job.
- **Browser tests** — `pestphp/pest-plugin-browser` is a dev dependency but no `tests/Browser/` directory exists. Add at least one smoke test (e.g., login → dashboard) to validate JS-rendered flows.
- **Filament tests** — No tests exist for the (planned) Filament resources. When added, include `arch()` coverage so admin classes follow the kit's conventions.

### Deployment &amp; Infrastructure

[](#deployment--infrastructure)

- **Compose example** — `compose.example.yml` exists, but there's no published `compose.yml` for Laravel Cloud / local Docker Compose workflows. Promote it and document the env vars.
- **Laravel Cloud readiness** — `boost.json` enables `cloud: true`; add a `cloud` workflow file (or document the deploy command) and verify `herd.yml` works for Laravel Cloud.
- **Nightwatch toggle** — `boost.json` has `nightwatch: false`; add a contributor note for when to flip it and which `NIGHTWATCH_*` env vars must be set.
- **FrankenPHP supervisor profiles** — `deployment/` has split files (`supervisord.frankenphp.conf`, `.horizon.conf`, `.reverb.conf`, `.scheduler.conf`, `.worker.conf`, `.services.conf`, `.inertia.conf`). Consolidate the README's "Production-Ready Docker" section to list exactly which supervisord configs ship and in which combinations.

### Developer Experience

[](#developer-experience)

- **`composer run setup` smoke test** — Confirm the setup script works on a fresh clone (creates `.env`, generates key, migrates, installs Bun packages, builds assets) and capture any missing prerequisites (Bun, Node) in a `CONTRIBUTING` troubleshooting table.
- **`bizkit:upgrade` documentation** — Document the interactive diff UI, the `bizkit.json` schema, and the conflict-resolution rules in the README.
- **Local Octane guide** — Octane is installed but no `composer run octane` script exists. Add one (e.g., `php artisan octane:start --watch`) and a one-paragraph guide.
- **Reverb dev recipe** — Add `php artisan reverb:start` to the `dev` script alongside the queue, vite, and pail watchers.
- **Pint preset** — `pint.json` exists; document the rule overrides and add a `pint.json` comment block explaining which Laravel preset is used.

### Documentation

[](#documentation)

- **Architecture decision records** — Create `docs/adr/` (or similar) covering: Octane+FrankenPHP choice, team-scoped routing, Pennant for feature flags, and AI SDK integration shape.
- **Stubs reference** — Document each stub in `stubs/` (what command consumes it, what gets generated, and an example of the produced class).
- **README badges** — Add CI status, code coverage, and Packagist download badges near the existing version badges.
- **License file** — README links to `LICENSE.md` but only `LICENSE` is present. Either rename or update the link.
- **CONTRIBUTING guide** — `CONTRIBUTING` file exists (no extension); rename to `CONTRIBUTING.md` so GitHub renders it.

### Nice-to-have

[](#nice-to-have)

- **Activity log integration** — `spatie/laravel-activitylog` is not installed; if team actions need an audit trail, add it as an opt-in package with a migration stub.
- **Billing / Cashier** — Decide whether Stripe / Paddle integration is in scope; if yes, ship a `composer require laravel/cashier` recipe.
- **Marketing site generator** — Provide a `php artisan bizkit:make:landing` command that scaffolds a `pages/marketing/*.blade.php` set using Flux UI primitives.
- **Theming** — Add dark/light theme tokens in `resources/css/` (Tailwind v4) and document how to brand a Bizkit app.

###  Health Score

43

—

FairBetter than 89% of packages

Maintenance99

Actively maintained with recent releases

Popularity8

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~3 days

Total

13

Last Release

12d ago

PHP version history (2 changes)v0.1.0PHP ^8.3

v0.2.0PHP ^8.5

### Community

Maintainers

![](https://www.gravatar.com/avatar/42614537a177921b912837755bbfd3dc2e2a6bacb493360b1337889c69b5d9c1?d=identicon)[akrista](/maintainers/akrista)

---

Top Contributors

[![akrista](https://avatars.githubusercontent.com/u/23145794?v=4)](https://github.com/akrista "akrista (51 commits)")

---

Tags

frameworklaravel

###  Code Quality

TestsPest

Static AnalysisPHPStan, Rector

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/akrista-bizkit/health.svg)

```
[![Health](https://phpackages.com/badges/akrista-bizkit/health.svg)](https://phpackages.com/packages/akrista-bizkit)
```

###  Alternatives

[unopim/unopim

UnoPim Laravel PIM

10.5k2.4k](/packages/unopim-unopim)[nasirkhan/laravel-starter

A CMS like modular Laravel starter project.

1.4k2.7k](/packages/nasirkhan-laravel-starter)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
