Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
eed6473
docs: rewrite README as a full framework guide (concepts, lifecycle, …
hakeemRash Jul 11, 2026
82bc557
build(bundle): pin bundle dependencies to the PHP 8.4 series
Alshatri Jul 16, 2026
7f3888a
Merge branch 'main'
hakeemRash Jul 16, 2026
195b7e7
ci(release): auto-tag new CHANGELOG version on merge to main -> trigg…
hakeemRash Jul 16, 2026
d86341b
ci(release): auto-release on merge to main via workflow_call (no PAT)…
hakeemRash Jul 16, 2026
1218ab1
docs(readme): document master->main branch model and automatic CHANGE…
hakeemRash Jul 16, 2026
a68ce88
ci(security): CODEOWNERS + main branch protection script (required re…
hakeemRash Jul 16, 2026
a796202
feat(edge): host-aware web-server config plugin (nginx SNI stream spl…
hakeemRash Jul 16, 2026
dc335b4
feat(edge): classify .local/.test as local domains β€” exclude from ser…
hakeemRash Jul 17, 2026
9af3885
fix(edge): resolve project registry from global kernel home (not proj…
hakeemRash Jul 17, 2026
87ccd90
feat(edge): project-aware config β€” per-project vhosts (docroot app/pu…
hakeemRash Jul 17, 2026
c84409c
feat(edge): default commands to the CURRENT project (base_path/proj.j…
hakeemRash Jul 17, 2026
0533c81
feat(edge): auto-resolve PHP-FPM socket to match the CLI PHP version …
hakeemRash Jul 17, 2026
f2bef6e
feat(userconfig): resolve config path for non-root sudo users
hakeemRash Jul 17, 2026
5514c5c
Adopt masterβ†’main branch model, automated releases, and main branch p…
hakeemRash Jul 17, 2026
9aad6f6
feat(edge): enhance hosts management with dev mode checks and force o…
hakeemRash Jul 17, 2026
ad7ec07
chore(release): v1.0.13 β€” Edge plugin, PSP_PROJECTS_DIR export, front…
hakeemRash Jul 17, 2026
e6bf46d
Merge remote-tracking branch 'origin/main'
hakeemRash Jul 17, 2026
da9573c
chore(release): bump to v1.0.14 (v1.0.13 tag already exists from an e…
hakeemRash Jul 17, 2026
2960acf
chore(release): reclaim v1.0.13 (stale mis-tagged v1.0.13 release/tag…
hakeemRash Jul 17, 2026
eb31d1e
Release v1.0.13 β€” Edge plugin + launcher/frontend fixes (#24)
hakeemRash Jul 17, 2026
e37a293
chore(release): v1.0.14
hakeemRash Jul 17, 2026
59f925a
chore: align CHANGELOG to released v1.0.13 (drop phantom 1.0.14)
hakeemRash Jul 17, 2026
310c874
fix(edge): serve local .local/.test domains in dev mode (--dev)
hakeemRash Jul 17, 2026
ef0027f
Merge origin/main into master (squash-merge of #24; master already co…
hakeemRash Jul 17, 2026
170f48c
Release v1.0.15 β€” Edge serves local domains in dev (#25)
hakeemRash Jul 17, 2026
4436575
Merge branch 'main' of github.com:AlfaCode-Team/php-service-platform
Alshatri Jul 18, 2026
53696ad
Merge branch 'master' of github.com:AlfaCode-Team/php-service-platform
Alshatri Jul 18, 2026
57b5831
feat(edge): TLS modes, APP_ENV cache profiles and OpenSwoole runtime …
hakeemRash Jul 18, 2026
0a3f640
Merge origin/main into master (PR #26: Edge TLS modes, APP_ENV cache …
hakeemRash Jul 18, 2026
af463d0
feat(tenancy): add control plane support and enhance tenant migration…
hakeemRash Jul 20, 2026
f704871
feat(cli): hkm discover β€” find and register projects on disk
hakeemRash Jul 20, 2026
92b575e
Release v1.0.17 β€” hkm discover: find & register projects on disk (#27)
hakeemRash Jul 20, 2026
fffc4d8
feat(cli): plugins recover + discover restores runtime dirs
hakeemRash Jul 20, 2026
4a33ef4
Merge remote-tracking branch 'origin/main'
hakeemRash Jul 20, 2026
b9fb1dd
Release v1.0.18 β€” plugins recover + discover restores runtime dirs (#28)
hakeemRash Jul 20, 2026
d4b58cb
feat(edge): stream reuse/merge, force strategy, security hardening; r…
hakeemRash Jul 21, 2026
f804f42
Merge remote-tracking branch 'origin/main'
hakeemRash Jul 21, 2026
11f319d
test(edge): make nginx -t check portable across nginx versions
hakeemRash Jul 21, 2026
8875546
test(edge): make nginx -t syntax check runnable as non-root in CI
hakeemRash Jul 21, 2026
624dd4f
chore: auto-wire git hooks to strip AI co-author trailers
hakeemRash Jul 21, 2026
b921a72
chore: drop pulse-engine + module-template modules, patch guzzle, wir…
hakeemRash Jul 21, 2026
b5b2d0e
feat: add issue and pull request templates, contributing guide, secur…
hakeemRash Jul 21, 2026
6d8203a
feat: add issue templates for documentation and plugin proposals
hakeemRash Jul 21, 2026
ed45d09
Merge branch 'main' of github.com:AlfaCode-Team/php-service-platform
hakeemRash Jul 21, 2026
d1c5543
Merge branch 'main' of github.com:AlfaCode-Team/php-service-platform
hakeemRash Jul 21, 2026
6b397df
Merge branch 'main' of github.com:AlfaCode-Team/php-service-platform
hakeemRash Jul 21, 2026
5537430
ci: add CodeQL (JS/TS + Actions) and PHP analysis (composer audit, Se…
hakeemRash Jul 21, 2026
6b846c9
ci: drop custom CodeQL workflow β€” repo uses CodeQL default setup (avo…
hakeemRash Jul 21, 2026
e7818c3
ci(phpstan): add level-5 config + baseline, make analysis a blocking …
hakeemRash Jul 21, 2026
320e924
fix: repair MigrateListCommand parent + OutboxWriter port contract
hakeemRash Jul 21, 2026
fe4bfc2
ci: fix PHPStan (ignore optional Swoole/OpenSwoole coroutine calls) +…
hakeemRash Jul 21, 2026
248d9f9
Merge branch 'main' of github.com:AlfaCode-Team/php-service-platform
hakeemRash Jul 21, 2026
b1d0451
chore(oss): open-source readiness β€” license, composer metadata, .env.…
hakeemRash Jul 21, 2026
45ce8a5
chore: add craftdevscommunity as code owner (required PR reviewers fo…
hakeemRash Jul 21, 2026
1da40e9
Refactor Pageflow stages and consolidate functionality
hakeemRash Jul 22, 2026
5b6b2fc
Depend on alfacode-team/http ^1.0 (dev-master in monorepo, v1.0.0 for…
hakeemRash Jul 22, 2026
36852f6
feat(module): add `hkm module` command for managing first-party kerne…
hakeemRash Jul 22, 2026
7573b25
chore: update subproject commit for http module
hakeemRash Jul 22, 2026
caad9ea
Point http submodule at latest master (dev-master, v1.0.0 release for…
hakeemRash Jul 22, 2026
b13cfa3
refactor(PageflowResponderTest): consolidate stage classes into a sin…
hakeemRash Jul 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 119 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
# ─────────────────────────────────────────────────────────────────────────────
# AlfacodeTeam PhpServicePlatform β€” example environment
#
# Copy to `.env` and fill in real values: cp .env.example .env
# Read config in first-party code via env(), never getenv().
# This file covers the CORE + commonly-used plugin settings. Each plugin
# documents its full env surface in plugins/<Name>/README.md.
# Run `hkm doctor` to verify your PHP runtime and required extensions.
# ─────────────────────────────────────────────────────────────────────────────

# ── Application ──────────────────────────────────────────────────────────────
APP_ENV=production # local | production
APP_DEBUG=false # NEVER true in production (leaks source/traces)
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_LOCALES=en # comma-separated negotiation set (e.g. en,fr,es)

# 32+ byte secret used for app crypto, CSRF token signing, cookie encryption.
# Generate one: php -r "echo base64_encode(random_bytes(32)).PHP_EOL;"
APP_KEY=
# APP_KEY_PREVIOUS= # set during key rotation to decrypt old data

# ── Database (DatabasePort) ──────────────────────────────────────────────────
DB_DRIVER=mysql # mysql | pgsql | sqlite | sqlsrv
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=app
DB_USERNAME=root
DB_PASSWORD=
DB_CHARSET=utf8mb4
# Connection pool (OpenSwoole only; ignored under PHP-FPM):
DB_POOL_ENABLED=false
DB_POOL_MIN=1
DB_POOL_MAX=10

# ── Cache & Queue β€” Redis (CachePort / QueuePort) ────────────────────────────
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DB=0
REDIS_PREFIX=hkm:
REDIS_OVERRIDE=false # true = use Redis even if another cache is bound

# ── Sessions (Session plugin) ────────────────────────────────────────────────
SESSION_DRIVER=cookie # cookie | file | array
SESSION_LIFETIME=43200 # seconds (12h) β€” MUST match CSRF lifetime below
SESSION_IDLE_TIMEOUT=7200
SESSION_COOKIE=hkm_session
SESSION_SECURE=true # send only over HTTPS
SESSION_SAMESITE=lax # lax | strict | none
SESSION_SIGNING_KEY= # defaults to APP_KEY when empty

# ── Authentication / JWT (Auth plugin) ───────────────────────────────────────
JWT_ALGO=HS256 # HS256 | RS256 | ES256 | PS256
JWT_SECRET= # required for HS*; use JWT_PRIVATE_KEY(_FILE) for RS/ES/PS
JWT_ISSUER=hkm
JWT_AUDIENCE=hkm
# JWT_PRIVATE_KEY_FILE=/path/to/private.pem
# JWT_PUBLIC_KEY_FILE=/path/to/public.pem
AUTH_SESSION_TTL=1209600 # remember-me seconds (14d)
Comment thread
hakeemRash marked this conversation as resolved.
AUTH_REFRESH_TTL=2592000 # refresh-token seconds (30d)
HASH_BCRYPT_COST=12

# ── CSRF (kernel CsrfTokenLayer) ─────────────────────────────────────────────
# Lifetime MUST equal SESSION_LIFETIME. The bound cookie must be in
# COOKIE_ENCRYPT_EXEMPT (the layer reads the RAW cookie at SecurityStage).
# CSRF secret defaults to APP_KEY.

# ── Security filters (SecurityFilters plugin) ────────────────────────────────
CORS_ALLOWED_ORIGINS=*
CORS_ALLOWED_METHODS=GET,POST,PUT,PATCH,DELETE,OPTIONS
CORS_ALLOWED_HEADERS=Content-Type,Authorization,X-CSRF-Token
CORS_ALLOW_CREDENTIALS=false
RATE_LIMIT_MAX=60
RATE_LIMIT_WINDOW=60
# CONTENT_SECURITY_POLICY=
HSTS_MAX_AGE=31536000

# ── Mail (Mail plugin) ───────────────────────────────────────────────────────
MAIL_TRANSPORT=array # smtp | sendmail | mail | array | log
MAIL_HOST=127.0.0.1
MAIL_PORT=587
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=tls # tls | ssl | none
MAIL_FROM_ADDRESS=no-reply@example.com
MAIL_FROM_NAME="AlfaCode Platform"

# ── Storage (Storage plugin β€” StoragePort) ───────────────────────────────────
STORAGE_DRIVER=local # local | s3
STORAGE_ROOT=userdata/storage
# S3 / S3-compatible:
# STORAGE_S3_KEY=
# STORAGE_S3_SECRET=
# STORAGE_S3_REGION=us-east-1
# STORAGE_S3_BUCKET=
# STORAGE_S3_ENDPOINT=
# STORAGE_S3_PATH_STYLE=false

# ── Outbound HTTP (HttpClient plugin β€” HttpClientPort) ───────────────────────
HTTP_CLIENT_TIMEOUT=30
HTTP_CLIENT_CONNECT_TIMEOUT=10
HTTP_CLIENT_RETRY=2
HTTP_CLIENT_MAX_RESPONSE_BYTES=33554432 # 32 MiB OOM guard

# ── Multi-tenancy (Tenancy plugin β€” control plane) ───────────────────────────
# Only needed when deploying the multi-tenant control plane.
# TENANCY_MODE=subdomain
# TENANCY_BASE_DOMAINS=example.com
# TENANCY_CONTROL_PLANE=admin.example.com

# ── Views / Frontend (View + ViteManifest plugins) ───────────────────────────
# VIEW_PATHS= # extra template roots, prepended to the cascade
# VITE_MANIFEST=manifest.json
# VITE_SURFACE=app

# ── SEO / IndexNow (SiteSEO plugin) ──────────────────────────────────────────
# INDEXNOW_KEY= # required to submit URLs to search engines
# INDEXNOW_LIVE=false # true = real submit, else enqueued dry run
7 changes: 5 additions & 2 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
# Every change requires review from a repo owner.
* @hakeemRash @Alshatri
# Code owners β€” required reviewers for every change into `main`.
# A PR needs approval from at least one of these owners (branch protection
# enforces 1 code-owner review). Authors cannot approve their own PR, so keep
# more than one owner listed.
* @hakeemRash @Alshatri @craftdevscommunity
Comment thread
hakeemRash marked this conversation as resolved.
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,7 @@
[submodule "modules/let-migrate"]
path = modules/let-migrate
url = https://github.com/AlfaCode-Team/Let-Migrate.git
[submodule "modules/http"]
path = modules/http
url = git@github.com:AlfaCode-Team/http.git
branch = master
24 changes: 24 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [1.0.20] - 2026-07-22

### Added
- **`hkm module` command** for managing first-party kernel packages (the
`modules/` submodules: bind-it, php-io-cli, let-migrate, http) β€” inspect,
and update the pinned package set from one CLI entry point.
- **`alfacode-team/http` as a first-party package dependency** (`^1.0`;
dev-master inside the monorepo, `v1.0.0` for stable releases). The http
submodule is pinned at its latest master.

### Changed
- **Pageflow stages refactored and consolidated** β€” the SPA-bridge pipeline
stages are simplified into fewer, clearer units.
- **Open-source readiness** β€” license, composer package metadata, and a
`.env.example` added; issue/PR templates, CODEOWNERS, and required-reviewer
configuration for `main`.

### Fixed
- **`MigrateListCommand`** parent wiring repaired and the **`OutboxWriter`**
port contract corrected.
- **CI analysis gates** β€” PHPStan level-5 config + baseline made a blocking
gate (optional Swoole/OpenSwoole coroutine calls ignored); CodeQL, Semgrep,
and `composer audit` wired in.

## [1.0.19] - 2026-07-21

### Added
Expand Down
Loading
Loading