Skip to content
prod e051e98
Browse

7 · Optional enhancements

Objective — surface three SHOULD-not-skip topics (project structure, commit + doc standards with the Zaj customization strategy, and SemVer + CHANGELOG version management) and capture the operator’s decision on each — never silently drop them.

These three topics are SHOULD, not skip-by-default. The agent must surface them and capture the operator’s decision — never silently drop them.

TopicWhat it gives youAdopt when
Project structureA predictable Admin-Local/ home for the vault, docs, and versionsYou want the full scaffold from day one (recommended)
Commit & doc standardsSearchable history + an auditable vendor seamTeam work, or you want disciplined history
Version managementSemVer + CHANGELOG.md distinct from the vendor’s lineYou’ll ship updates over time (almost everyone)

Present all three to the operator and record each choice in the project log before scaffolding anything.

  1. Surface the three topics and record the decisions.

    • ✅ Each of the three topics was presented, and its adopt/skip decision is written in the project log.

2. Scaffold the project structure (if adopted)

Section titled “2. Scaffold the project structure (if adopted)”

A consistent Admin-Local/ layout gives every later phase a known home for credentials, docs, and version snapshots.

  1. Create the Admin-Local/ scaffold.

    Terminal window
    mkdir -p Admin-Local/{0-SuperAdmin,1-Project,2-Docs,3-Versions,4-Backups,5-Archive}
    mkdir -p Admin-Local/1-Project/{1-ProjectInfo,2-ProjectVault,3-ProjectTemplates}
    mkdir -p Admin-Local/3-Versions/1-v${VERSION}/{1-Originals,2-Modifications}
    # Expected: the Admin-Local tree is created
    • ✅ Phases 3–11 now have a known home for credentials, docs, and versions.
  2. Lock the vault so credentials can never be committed.

    Terminal window
    printf '*\n!.gitignore\n!README.md\n' > Admin-Local/1-Project/2-ProjectVault/.gitignore
    # Expected: the vault ignores everything except its .gitignore + README
    • Admin-Local/1-Project/2-ProjectVault/.gitignore ignores all but itself + README.
  3. Seed the project records — a ProjectCard (domains, IPs, SSH aliases, port, repo URL) in 1-ProjectInfo/, and a CHANGELOG.md at the repo root. Fill the ProjectCard from the infrastructure created in Prerequisites.

    • ✅ A ProjectCard exists with this project’s real domains, IPs, SSH aliases, and repo URL.

3. Adopt commit & documentation standards (if adopted)

Section titled “3. Adopt commit & documentation standards (if adopted)”

Consistent commit hygiene prevents secrets leaking and makes history searchable. Never commit (already in .gitignore): .env / .env.* (except .env.example), vendor/, node_modules/, IDE settings. Always commit: composer.json + composer.lock, package.json + package-lock.json, config/*.php, database/migrations/*.php, project docs.

A conventional commit format keeps the log self-documenting — emoji + type tag + verb-thing + description:

TypeFormatExample
Author import📦 T1 Setup-Author: …📦 T1 Setup-Author: Import v10.4
Setup/config🔧 T2 Setup-Config: …🔧 T2 Setup-Config: Add GA tracking
App feature🔨 T3 Add-Feature: …🔨 T3 Add-Feature: Arabic support
Deploy🚀 T4 Deploy-App: …🚀 T4 Deploy-App: Deploy v1.5.1

Before any customization in this or later phases, know which mechanism to use — this is what prevents “modified vendor file” sprawl that blocks future updates:

MechanismUse whenLives in
Vendor CustomizationsPatching an existing vendor fileresources/vendor-customizations/
ZajModulesAdding new functionality (route, view, service)packages/ZajModules/{Type}/{Cat}/{Name}/
_zaj migrationsExtending a vendor table schemadatabase/migrations/*_zaj.php

The decision is three questions: editing an existing vendor file → Vendor Customization; adding something new → ZajModule; adding columns to a vendor table → _zaj migration.

4. Adopt version management — SemVer + CHANGELOG (if adopted)

Section titled “4. Adopt version management — SemVer + CHANGELOG (if adopted)”

If you’ll ship updates (almost everyone), adopt semantic versioning and a CHANGELOG.md now so your versions stay distinct from the vendor’s author-vX.X.X line. vMAJOR.MINOR.PATCH — bump by the nature of the change:

ChangeBumpExample
Bug fix / security patchPATCH (1.0.0 → 1.0.1)Fixed login error
New feature, backward compatibleMINOR (1.0.0 → 1.1.0)Added export
Breaking changeMAJOR (1.0.0 → 2.0.0)Changed API responses

Keep CHANGELOG.md in Keep a Changelog form (Added / Changed / Deprecated / Removed / Fixed / Security), and align package metadata: set composer.json and package.json name/version/description, change license to proprietary, and keep package.json private: true.

Do not mark this step done until every box below is checked.

  • 👤 Topics surfaced — each optional topic was presented and the operator’s choice recorded.
  • 🤖 Scaffold (if adopted)Admin-Local/ + gitignored vault exist.
  • 🔀 Standards (if adopted) — commit format + Zaj customization strategy understood.
  • 🔀 Versioning (if adopted)CHANGELOG.md started and package metadata set.