diff --git a/PROGRESS.md b/PROGRESS.md index bf50406..feaef07 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -1,12 +1,22 @@ # Port Nimara CRM - Project Progress -**Last updated:** 2026-03-26 +**Last updated:** 2026-04-22 **Repo:** https://code.letsbe.solutions/letsbe/pn-new-crm **Domain:** pn.letsbe.solutions **Stack:** Next.js 15 + TypeScript + Tailwind + Drizzle ORM + PostgreSQL + Redis + BullMQ + MinIO + Socket.io --- +## Since 2026-03-26 + +- **Admin surface expanded** — full admin users + roles management, admin ports + system settings management, user settings, expanded audit log, and berth CRUD completions. +- **Reminders system** — promoted from "pages only" to full CRUD with background processors. +- **Multi-address clients** — new `client_addresses` table with a partial unique index enforcing one primary address per client. +- **Inquiry notifications feature (end-to-end)** — public interest form now fires: (a) confirmation email to the inquiring client, (b) in-app notifications to CRM users with `interests.view`, (c) optional email to configured sales recipients. Public schema expanded with first/last name split, address block, and berth mooring lookup. `sendEmail` gained a plain-text fallback. Admin settings UI exposes `inquiry_contact_email` and `inquiry_notification_recipients`. Plan: `docs/superpowers/plans/2026-04-14-inquiry-notifications.md`. +- **Build/infra cleanup** — Next.js 15 static-prerender bugs fixed (Suspense boundaries around `useSearchParams` on `/portal/verify` and `/set-password`), `.gitattributes` added to enforce LF in the index across Windows/macOS checkouts, Docker production build fixes, CI trimmed to build+push (deploy job removed). + +--- + ## What's Been Built (Layers 0-4 Complete) ### Layer 0: Foundation (DONE) @@ -80,8 +90,10 @@ - API: `/api/v1/notifications/...` (CRUD, preferences, read-all, unread-count) - Service: `notifications.service.ts` - Components: `src/components/notifications/` -- [x] **Reminders** - Reminder pages +- [x] **Reminders** - Full CRUD with background processors (dispatcher, reminder workers) - Pages: `/reminders` + - API: `/api/v1/reminders/...` (CRUD, my, overdue, upcoming, complete, dismiss, snooze) + - Service: `reminders.service.ts` - [x] **Search** - Global search (inline in topbar), saved views - API: `/api/v1/search/...`, `/api/v1/saved-views/...` - Service: `search.service.ts`, `saved-views.service.ts` @@ -178,11 +190,12 @@ ### Priority 1: Deployment & Go-Live -- [ ] Push to Gitea and verify CI/CD pipeline builds +- [x] Push to Gitea (origin/main at `9d815c4` as of 2026-04-22) +- [ ] Verify CI/CD pipeline builds the latest image and pushes to the Gitea container registry - [ ] Set up server: install Docker, nginx, configure DNS for `pn.letsbe.solutions` - [ ] Run `certbot --nginx -d pn.letsbe.solutions` for SSL - [ ] Configure production `.env` on server -- [ ] Run database migrations (`pnpm db:push`) +- [ ] Run database migrations (`drizzle-kit migrate` against prod DB — `0000` + `0001` need to apply) - [ ] Run seed data (`pnpm db:seed`) - [ ] Verify all services start and health check passes