ninjaportal / kickstart
NinjaPortal starter application template.
Requires
- php: ^8.3
- laravel/framework: ^12.0
- laravel/tinker: ^2.10.1
- lordjoo/laraapigee: ^0.1
- ninjaportal/admin-filament: ^0.1.0
- ninjaportal/portal: ^0.1
- ninjaportal/shadow-theme: ^0.1.0
Requires (Dev)
- fakerphp/faker: ^1.23
- laravel/pail: ^1.2.2
- laravel/pint: ^1.24
- laravel/sail: ^1.41
- mockery/mockery: ^1.6
- nunomaduro/collision: ^8.6
- phpunit/phpunit: ^11.5.3
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:
nginxphp-fpmmysqlredisqueuescheduler- a one-shot
initcontainer 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 | 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.dockeris 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..envis for local non-Docker development. Keep.env.dockerpointed at Docker service names such asmysqlandredis.- Run
npm run buildafter changing Shadow theme assets or application frontend assets.