pnscripts/pn-press
PN Press is a lightweight Laravel/PHP package for managing press releases and publication content. It offers straightforward configuration and integration, making it easy to add press-style posts and content handling to your application.
pn-press targets PHP 8.4+, so confirm your runtime and CI images before anything else. Install per the README (which now documents the MySQL steps explicitly), run migrations, and look for any publishable config/migrations the package exposes.
The first thing to read is the README section on the demo seed vs. a clean install — this is the distinction that caused the 1.1.0 pain:
php artisan press:admin [email protected]
# password is prompted and never echoed
That gives you an admin account (no --role) or, for an existing user, assigns a role:
php artisan press:admin [email protected] --role=editor
First real use case: provision your own admin, log into the admin panel, then create a page and a menu to confirm content models, routing, and admin UI all wire up before you invest in configuration.
Provisioning users. Treat press:admin as the canonical bootstrap step for non-seeded installs and as the role-assignment tool afterwards. A workable pattern:
--role.--role=editor — either at creation time or by re-running the command against an already-registered user.Seed vs. no-seed environments. Local/demo environments can use the demo seed for instant access; staging and production should install clean and use press:admin. Documenting this split prevents the "credentials don't work in prod" confusion entirely.
Language planning up front. Because rolling back the 1.1 language migration is now refused while translated content exists, treat language setup as a design-time decision, not something you toggle while building. Add your locales early, before creating pages/posts/categories/menus in secondary languages, so you never need that rollback.
Content modelling. Pages, posts, categories and menus are first-class concepts — build your Blade/navigation layer against them and let the admin panel handle authoring. Use categories and menus as the join points between editorial content and site structure rather than hardcoding navigation.
Deployment. Run migrations as part of deploy, and make "do not roll back the language migration" an explicit line in your runbook. On MySQL, the guard now fails fast before touching schema — but you still don't want to be in that situation on a live database.
press:admin is interactive. The password is prompted and never displayed, so it does not fit cleanly into unattended deploy scripts or CI. Use it as a manual post-deploy step; for automated fixtures, seed users through your own seeders/factories instead.press:admin is "not defined" — check package discovery / your service provider cache, and run php artisan list to confirm.--role.composer.json and your Docker base image together.How can I help you explore Laravel packages today?