ninjaportal/kickstart

NinjaPortal starter application template.

Maintainers

Package info

github.com/ninjaportal/kickstart

Type:project

pkg:composer/ninjaportal/kickstart

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

dev-master 2026-03-02 21:02 UTC

This package is auto-updated.

Last update: 2026-03-02 21:02:10 UTC


README

Ninja Portal Logo

NinjaPortal Kickstart

Starter Laravel application template prepared for NinjaPortal.

Use this template to bootstrap a production-ready NinjaPortal application with the Portal package, Filament admin, and the Shadow theme already wired in.

Requirements

  • PHP ^8.2
  • Composer 2
  • A database (MySQL recommended for real projects)
  • Node.js + npm (only if you want to build frontend assets)

1. Create The Project

Install the template through Composer:

composer create-project ninjaportal/kickstart your-project-name
cd your-project-name

2. Install Dependencies

If you are working from the repository directly instead of create-project, install the locked dependencies:

composer install

Then install JS dependencies if needed:

npm install

3. Configure Environment

Copy the environment file and generate the application key:

cp .env.example .env
php artisan key:generate

Update database credentials in .env, then configure NinjaPortal / Apigee values (already included in .env.example):

APIGEE_PLATFORM=edge
APIGEE_ENDPOINT=https://api.enterprise.apigee.com/v1
APIGEE_ORGANIZATION=your-org
APIGEE_USERNAME=your-username
APIGEE_PASSWORD=your-password

APIGEE_MONETIZATION_ENABLED=false
APIGEE_MONETIZATION_PLATFORM=edge
APIGEE_MONETIZATION_ENDPOINT=https://api.enterprise.apigee.com/v1/mint

if using Apigee X:

APIGEE_DRIVER=apigeex
APIGEE_ENDPOINT=https://apigee.googleapis.com/v1
APIGEE_ORGANIZATION=your-org

4. Installations

4.1 Install NinjaPortal

Run the package installer:

php artisan portal:install

What this does:

  • publishes NinjaPortal config
  • publishes Spatie permission migrations
  • runs migrations
  • seeds baseline settings + RBAC permissions
  • adds App\Providers\NinjaPortalServiceProvider to your application bootstrap providers

Optional flags:

php artisan portal:install --force-provider-overwrite
php artisan portal:install --delete-default-users-migration

We recommend using the --delete-default-users-migration flag if you are installing NinjaPortal on a fresh laravel project, as it will delete the default users table migration.

4.2 Install Shadow theme

php artisan shadow:install

Shadow theme is shipped with pre-built assets.

4.3 Install Filament Admin

php artisan filament:install 

This will install Filament Admin and its dependencies.

5. (Optional) Seed Demo Data

php artisan portal:seed --demo

Useful seed options:

php artisan portal:seed --all
php artisan portal:seed --settings --rbac

Seeded Demo Accounts

After running php artisan portal:seed --demo, the following demo accounts are available:

Type Name Email Password Notes
Admin Portal Owner admin@ninjaportal.test password Assigned the super_admin role when RBAC is seeded
Admin Support Admin support.admin@ninjaportal.test password Assigned the super_admin role when RBAC is seeded
User Jade Summers jade.summers@ninjaportal.test password Active user
User Marco Diaz marco.diaz@ninjaportal.test password Active user
User Priya Nair priya.nair@ninjaportal.test password Pending user

6. Apigee Authentication Notes

Apigee Edge

Use the username/password env variables shown above.

Apigee X

Set:

APIGEE_PLATFORM=apigeex
APIGEE_ENDPOINT=https://apigee.googleapis.com/v1
APIGEE_MONETIZATION_PLATFORM=apigee_x
APIGEE_MONETIZATION_ENDPOINT=https://apigee.googleapis.com/v1

Then place a service account key file at:

storage/app/service_account_key.json

LaraApigee uses that file path for Apigee X authentication by default.

7. Run The Application

Backend:

php artisan serve

Assets (optional during local development):

npm run dev

Optional Next Step: API Package

If you want the prebuilt NinjaPortal REST API package as well:

composer require ninjaportal/portal-api

Then publish/configure its settings and generate API docs (Scribe) based on your project needs.