Core PHP 8.5 starter focused on logged-in SaaS dashboards, DreamHost shared hosting, and predictable LLM-friendly structure.
- Front controller at
/public/index.phpwith a custom router. - Auth: signup/login/logout, email verification, password reset, CSRF.
- Workspaces: multi-workspace memberships with invites and Workspace Roles.
- RBAC admin: system access flags plus workspace roles/permissions (per workspace).
- Admin panel: users list and audit log.
- Notifications: in-app history and email digests.
- Uploads for profile images and attachments in
/storage/uploads. - Billing: plans, hosted checkout, subscriptions, and webhook handling for major providers.
- Single stylesheet at
/public/assets/css/site.csswith enterprise baseline. - GitHub Actions deploy with releases and migrations.
- Point your web server docroot to
/public. - Copy
.env.exampleto.envand fillTHRIFTSTACK_-prefixed values. - If you do not have MySQL locally, set
THRIFTSTACK_DB_DRIVER=sqliteandTHRIFTSTACK_DB_PATH=storage/database.sqlite. - Run migrations:
php scripts/migrate.php. - Seed dummy data:
php scripts/seed.php. - Optional: set
THRIFTSTACK_BUILD_IDto show a build identifier in the footer. - Optional: set
THRIFTSTACK_BILLING_OWNER_ROLES(comma-separated) to control who can access billing.
Run the minimal test suite: php tests/run.php.
- Install deps:
npm installandnpx playwright install. - Run:
npm run test:e2e. - See
docs/testing/PLAYWRIGHT.mdfor options.
- System access uses user flags:
is_system_adminandis_system_staff. - Workspace roles/permissions control per-workspace access (e.g., workspace admin, billing within a workspace).
- Use
RequireSystemAdmin/RequireSystemAccessfor system scope, andRequireWorkspaceRole/RequireWorkspacePermissionfor workspace scope.
See docs/installation/SETUP_GUIDE.md for GitHub Actions setup.