From c2dcd9ca840b9c1905e75bd9b4b31b5c0b75043d Mon Sep 17 00:00:00 2001 From: Paul Nothaft Date: Fri, 29 May 2026 16:39:11 +0200 Subject: [PATCH 1/2] docs(readme): list CRM module under Beta Features with own-risk disclaimer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR #555 shipped the CRM module on beta. The README's "Beta Features (Use at your own risk)" table is the right place to signal that the feature exists, is opt-in, and carries non-trivial legal / financial caveats โ€” readers landing on the README should not first discover the CRM by enabling its feature flags and bumping into the seeded example contract bodies without warning. Adds one row to the Beta Features table linking to docs.picpeak.app/features/crm where the full disclaimers, sub-feature pages, and admin-settings reference live. CRM is intentionally NOT added to the top-of-README "Key Features" list โ€” those are stable, production-ready features. Mixing the beta CRM in there would undermine the clear stable/beta distinction. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 193b3e8a..d1806596 100644 --- a/README.md +++ b/README.md @@ -401,6 +401,7 @@ These features are currently in beta testing and may have limited functionality | Feature | Description | Status | |---------|-------------|--------| +| **CRM Module** | Quotes, contracts, invoices, hours logging, calendar, and tax report โ€” feature-flagged off by default. Seeded contract blocks, payment terms, and IBAN / tax defaults are **examples only** and need legal / financial review before customer-facing use. See [docs.picpeak.app/features/crm](https://docs.picpeak.app/features/crm). | ๐Ÿงช Beta | | **Simple Deployment Script** | One-click deployment script for quick server setup with automated configuration and dependency installation | ๐Ÿงช Beta | ### ๐Ÿ“‹ Future Enhancements From 2692e71297925b7c117108fa9da9defe87dfe88e Mon Sep 17 00:00:00 2001 From: Paul Nothaft Date: Fri, 29 May 2026 21:43:49 +0200 Subject: [PATCH 2/2] docs(contributing): note rebuild-after-package.json gotcha for dev compose MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When PR #555 (CRM module) added pdfkit/swissqrbill/pdf-lib/qrcode to backend/package.json, every dev with an already-built dev image hit a MODULE_NOT_FOUND restart loop on the next pull. Root cause: the dev compose bakes node_modules into the image while live-mounting src/ from disk โ€” a dep added on disk isn't visible to the running container until the image is rebuilt. The symptom doesn't point at the cause, so this adds a short rebuild note to the Local Development section of CONTRIBUTING.md. A self-healing entrypoint (compare node_modules/.package-lock.json vs /app/package-lock.json on boot, npm ci if they differ) would fix this at the runtime layer too; tracked as a follow-up. --- CONTRIBUTING.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 87ee9df1..4218cc93 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -79,6 +79,15 @@ cp .env.example .env docker-compose -f docker-compose.dev.yml up ``` +**After pulling changes that touch `backend/package.json` / `backend/package-lock.json` (or the frontend equivalents)**, rebuild the affected image so the live-mounted source can `require()` the new deps: + +```bash +docker compose -f docker-compose.dev.yml up -d --build backend +# (or `frontend`, or both) +``` + +The dev compose bakes `node_modules` into the image while live-mounting `./backend/src` and `./frontend/src` from disk. A dep added on disk won't be picked up until the image is rebuilt โ€” typical symptom is a `MODULE_NOT_FOUND` restart loop on the affected container. + ### Running Tests ```bash