tractatus/src/models
TheFlow fe3035913e feat(crm): implement unified contact form system
Complete CRM foundation with contact modal in footer

Backend:
- Contact.model.js: Full CRUD model with statistics tracking
- contact.controller.js: Submit, list, assign, respond, update, delete
- contact.routes.js: Public submission + admin management endpoints
- routes/index.js: Mount contact routes at /api/contact

Frontend:
- footer.js: Replace mailto link with Contact Us modal button
- Contact modal: Form with type, name, email, org, subject, message
- CSRF protection: Extracts token from cookie (like newsletter)
- Rate limiting: formRateLimiter (5/min)
- Validation: Input sanitization + required fields
- UX: Success/error messages, auto-close on success

Admin UI:
- navbar-admin.js: New 'CRM & Communications' section
- Links: Contact Management, Case Submissions, Media Inquiries

Foundation for multi-project CRM across tractatus, family-history, sydigital

Next: Build /admin/contact-management.html page
2025-10-24 16:56:21 +13:00
..
Analytics.model.js fix(analytics): remove SessionSchema.index sessionId duplicate 2025-10-24 10:25:02 +13:00
AuditLog.model.js fix: MongoDB persistence and inst_016-018 content validation enforcement 2025-10-11 00:17:03 +13:00
BlogPost.model.js fix(submissions): restructure Economist package and fix article display 2025-10-24 08:47:42 +13:00
CaseSubmission.model.js fix(submissions): restructure Economist package and fix article display 2025-10-24 08:47:42 +13:00
Contact.model.js feat(crm): implement unified contact form system 2025-10-24 16:56:21 +13:00
DeliberationSession.model.js chore: update dependencies and documentation 2025-10-19 12:48:37 +13:00
Document.model.js fix(submissions): restructure Economist package and fix article display 2025-10-24 08:47:42 +13:00
Donation.model.js fix(submissions): restructure Economist package and fix article display 2025-10-24 08:47:42 +13:00
GovernanceLog.model.js feat: fix documentation system - cards, PDFs, TOC, and navigation 2025-10-07 22:51:55 +13:00
GovernanceRule.model.js fix(models): remove duplicate schema indexes for clean startup 2025-10-12 16:35:45 +13:00
index.js feat(server): add security middleware and website-specific routes 2025-10-23 10:57:20 +13:00
MediaInquiry.model.js fix(submissions): restructure Economist package and fix article display 2025-10-24 08:47:42 +13:00
ModerationQueue.model.js fix(submissions): restructure Economist package and fix article display 2025-10-24 08:47:42 +13:00
NewsletterSubscription.model.js fix(submissions): restructure Economist package and fix article display 2025-10-24 08:47:42 +13:00
Precedent.model.js chore: update dependencies and documentation 2025-10-19 12:48:37 +13:00
Project.model.js feat: implement Rule Manager and Project Manager admin systems 2025-10-11 17:16:51 +13:00
PublicationRelationship.model.js fix(submissions): restructure Economist package and fix article display 2025-10-24 08:47:42 +13:00
Resource.model.js fix(submissions): restructure Economist package and fix article display 2025-10-24 08:47:42 +13:00
ScheduledTask.model.js fix(submissions): restructure Economist package and fix article display 2025-10-24 08:47:42 +13:00
SessionState.model.js fix: MongoDB persistence and inst_016-018 content validation enforcement 2025-10-11 00:17:03 +13:00
SubmissionTracking.model.js fix(submissions): resolve Mongoose populate error for hybrid BlogPost model 2025-10-24 10:19:33 +13:00
User.model.js fix(submissions): restructure Economist package and fix article display 2025-10-24 08:47:42 +13:00
VariableValue.model.js fix(models): remove duplicate schema indexes for clean startup 2025-10-12 16:35:45 +13:00
VerificationLog.model.js chore(framework): session tracking, test enforcement, and schema improvements 2025-10-21 04:05:09 +13:00