PHPackages                             certly/spark - 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. [Payment Processing](/categories/payments)
4. /
5. certly/spark

ActiveLibrary[Payment Processing](/categories/payments)

certly/spark
============

Laravel Spark provides a starter scaffolding for Laravel SaaS applications.

v1.2(9y ago)451.6k39MITPHPPHP &gt;=5.5.9

Since Feb 26Pushed 9y ago2 watchersCompare

[ Source](https://github.com/certly/spark)[ Packagist](https://packagist.org/packages/certly/spark)[ RSS](/packages/certly-spark/feed)WikiDiscussions master Synced 4w ago

READMEChangelog (3)Dependencies (4)Versions (4)Used By (0)

Spark
=====

[](#spark)

- [Introduction](#introduction)
- [Installation](#installation)
- [Defining Subscription Plans](#defining-subscription-plans)
- [Teams](#teams)
- [Customizing Spark Views](#customizing-spark-views)
- [Customizing Spark JavaScript](#customizing-spark-javascript)

Introduction
------------

[](#introduction)

**This is an alpha, experimental release of Spark. Things will change. Things will break. Thank you for testing!**

Spark is an experimental project primarily intended for building business oriented SaaS applications, and is highly opinionated towards that use case.

Installation
------------

[](#installation)

First, install the Spark installer and make sure that the global Composer `bin` directory is within your system's `$PATH`:

```
	composer global require "certly/spark-installer=~1.0"

```

Next, create a new Laravel application and install Spark:

```
	laravel new application

	cd application

	spark install

```

After installing Spark, be sure to migrate your database, install the NPM dependencies, and run the `gulp` command. You should also set the `AUTHY_KEY`, `STRIPE_KEY`, and `STRIPE_SECRET` environment variables in your `.env` file.

You may also wish to review the `SparkServiceProvider` class that was installed in your application. This provider is the central location for customizing your Spark installation.

Note that installing Spark should be done while crafting your application. Installing Spark after running commands such as `php artisan app:name MyApp` may result in errors when trying to install.

Defining Subscription Plans
---------------------------

[](#defining-subscription-plans)

Subscription plans may be defined in your `app/Providers/SparkServiceProvider.php` file. This file contains a `customizeSubscriptionPlans` method. Within this method, you may define all of your application's subscription plans. There are a few examples in the method to get you started.

When defining a Spark plan, the `plan` method accepts two arguments: the name of the plan and the Stripe ID of the plan. Be sure that the Stripe ID given to the `plan` method corresponds to a plan ID on your Stripe account:

```
	Spark::plan('Display Name', 'stripe-id')
		->price(10)
		->features([
			//
		]);
```

### Yearly Plans

[](#yearly-plans)

To define a yearly plan, simply call the `yearly` method on the plan definition:

```
	Spark::plan('Basic', 'basic-yearly')
		->price(100)
		->yearly()
		->features(
			//
		);
```

### Coupons

[](#coupons)

To use a coupon, simply create the coupon on Stripe and access the `/register` route with a `coupon` query string variable that matches the ID of the coupon on Stripe.

```
    http://stripe.app/register?coupon=code

```

Site-wide promotions may be run using the `Spark::promotion` method within your `SparkServiceProvider`:

```
	Spark::promotion('coupon-code');
```

Teams
-----

[](#teams)

To enable teams, simply use the `CanJoinTeams` trait on your `User` model. The trait has already been imported in the top of the file, so you only need to add it to the model itself:

```
	class User extends Model implements TwoFactorAuthenticatableContract,
	                                    BillableContract,
	                                    CanResetPasswordContract
	{
	    use Billable, CanJoinTeams, CanResetPassword, TwoFactorAuthenticatable;
	}
```

Once teams are enabled, a team name will be required during registration, and a `Teams` tab will be available in the user settings dashboard.

### Roles

[](#roles)

Team roles may be defined in the `customizeRoles` method of the `SparkServiceProvider`.

Customizing Spark Views
-----------------------

[](#customizing-spark-views)

You may publish Spark's common Blade views by using the `vendor:publish` command:

```
	php artisan vendor:publish --tag=spark-basics

```

All published views will be placed in `resources/views/vendor/spark`.

If you would like to publish every Spark view, you may use the `spark-full` tag:

```
	php artisan vendor:publish --tag=spark-full

```

Customizing Spark JavaScript
----------------------------

[](#customizing-spark-javascript)

The `resources/assets/js/core/components.js` file contains the statements to load some common Spark Vue components. [Vue](http://vuejs.org) is the JavaScript framework used by the Spark registration and settings screens.

You are free to change any of these require statements to load your own Vue component for a given screen. Most likely, you will want to copy the original component as a starting point for your customization.

###  Health Score

34

—

LowBetter than 75% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity31

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity60

Established project with proven stability

 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 ~119 days

Total

3

Last Release

3538d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/a9427459fcd6e4ae54e1d876db7738202a9b6982441aa5950ccc6ca86d08cd28?d=identicon)[iangcarroll](/maintainers/iangcarroll)

---

Top Contributors

[![iangcarroll](https://avatars.githubusercontent.com/u/1280719?v=4)](https://github.com/iangcarroll "iangcarroll (6 commits)")

---

Tags

laravelscaffoldingstripebilling

### Embed Badge

![Health badge](/badges/certly-spark/health.svg)

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

###  Alternatives

[lanos/laravel-cashier-stripe-connect

Adds Stripe Connect functionality to Laravel's main billing package, Cashier.

85158.4k](/packages/lanos-laravel-cashier-stripe-connect)[expdev07/laravel-cashier-stripe-connect

Adds Stripe Connect functionality to Laravel's main billing package, Cashier.

63140.0k](/packages/expdev07-laravel-cashier-stripe-connect)[helori/laravel-saas

Software as a Service scaffholding for Laravel based on Vue 3, Tailwindcss and Stripe. Inspired by Laravel Jetstream and Spark.

121.3k](/packages/helori-laravel-saas)

PHPackages © 2026

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