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-06-01 11:38 UTC

This package is auto-updated.

Last update: 2026-06-01 11:39:32 UTC


README

NinjaPortal Kickstart is a Laravel starter application with the core NinjaPortal packages, LaraApigee integration, Filament admin, and the Shadow developer portal theme already wired in.

Use it when you want a clean application shell that is ready to connect to Apigee and expose a developer portal quickly.

Requirements

  • PHP ^8.3
  • Composer 2
  • Node.js 20+ and npm
  • MySQL 8+ and Redis when running without Docker
  • Docker + Docker Compose when using the container stack

Create A Project

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

When working from this repository directly, run:

composer install
npm install

Environment

Kickstart ships with a normal Laravel .env file for local development and a Docker-focused .env.docker file for the container stack.

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

For Docker, create .env.docker from the same example and keep the Docker service hosts:

cp .env.example .env.docker
APP_URL=http://localhost:8000
NGINX_PORT=8000

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=ninjaportal
DB_USERNAME=ninjaportal
DB_PASSWORD=secret
MYSQL_ROOT_PASSWORD=root

REDIS_HOST=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis
CACHE_STORE=redis

For a local non-Docker setup, keep .env pointed at services on your machine:

DB_HOST=127.0.0.1
REDIS_HOST=127.0.0.1
APP_URL=http://127.0.0.1:8000

Update secrets before using this outside local development.

Apigee Setup

Kickstart includes the environment keys used by laraapigee and the portal packages.

For Apigee Edge:

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

For Apigee X:

APIGEE_PLATFORM=apigeex
APIGEE_ENDPOINT=https://apigee.googleapis.com/v1
APIGEE_ORGANIZATION=your-org
APIGEE_MONETIZATION_PLATFORM=apigee_x
APIGEE_MONETIZATION_ENDPOINT=https://apigee.googleapis.com/v1

Place the Apigee X service account key at:

storage/app/service_account_key.json

Run With Docker

Build and start the full stack. Pass .env.docker to Docker Compose so service values and compose-level values, such as the published Nginx port, come from the same file.

docker compose --env-file .env.docker up -d --build

The app will be available at:

http://localhost:8000

The Docker stack includes:

  • nginx
  • php-fpm
  • mysql
  • redis
  • queue
  • scheduler
  • a one-shot init container that runs migrations, seeds Portal defaults, seeds Shadow branding settings, and caches Laravel config/routes

Useful Docker commands:

docker compose logs -f init
docker compose exec app php artisan about
docker compose exec app php artisan migrate:status
docker compose logs -f queue
docker compose logs -f scheduler
docker compose down

Remove containers and local Docker volumes:

docker compose --env-file .env.docker down -v

Run Without Docker

Make sure MySQL and Redis are running locally, then update .env as described above.

Install dependencies:

composer install
npm install

Run the application setup:

php artisan key:generate
php artisan migrate
php artisan portal:install
php artisan shadow:install
php artisan filament:install
npm run build

Start the app:

php artisan serve

For local development with hot reload and workers:

composer run dev

Package Installers

Portal

php artisan portal:install

This publishes config, publishes Spatie permission migrations, runs migrations, seeds baseline settings and RBAC permissions, and registers the NinjaPortal application provider.

Useful flags:

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

Use --delete-default-users-migration for a fresh Laravel application when NinjaPortal owns the user schema.

Shadow Theme

php artisan shadow:install

The installer publishes the theme assets and prepares the default branding settings used by the Blade theme.

Filament Admin

php artisan filament:install

Demo Data

php artisan portal:seed --demo

Other seed options:

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

Demo accounts:

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

Notes

  • .env.docker is read by Docker Compose and passed to the runtime containers, but it is ignored by the image build, so secrets are not baked into the image.
  • .env is for local non-Docker development. Keep .env.docker pointed at Docker service names such as mysql and redis.
  • Run npm run build after changing Shadow theme assets or application frontend assets.