tractatus/src/controllers
TheFlow ccb4bdaabf feat(api): implement research inquiry endpoint and Umami analytics
HIGH PRIORITY: Fixes production 404 error on research inquiry form

Research Inquiry API:
- Add POST /api/research-inquiry endpoint for form submissions
- Add admin endpoints for inquiry management (list, get, assign, respond, delete)
- Create ResearchInquiry model with MongoDB integration
- Add to moderation queue for human review (strategic quadrant)
- Include rate limiting (5 req/min) and CSRF protection
- Tested locally: endpoint responding, data saving to DB

Umami Analytics (Privacy-First):
- Add Docker Compose config for Umami + PostgreSQL
- Create nginx reverse proxy config with SSL support
- Implement privacy-first tracking script (DNT, opt-out, no cookies)
- Integrate tracking across 26 public HTML pages
- Exclude admin pages from tracking (privacy boundary)
- Add comprehensive deployment guide (UMAMI_SETUP_GUIDE.md)
- Environment variables added to .env.example

Files Created (9):
- src/models/ResearchInquiry.model.js
- src/controllers/research.controller.js
- src/routes/research.routes.js
- public/js/components/umami-tracker.js
- deployment-quickstart/nginx-analytics.conf
- deployment-quickstart/UMAMI_SETUP_GUIDE.md
- scripts/add-umami-tracking.sh
- scripts/add-tracking-python.py
- SESSION_SUMMARY_ANALYTICS_RESEARCH_INQUIRY.md

Files Modified (29):
- src/routes/index.js (research routes)
- deployment-quickstart/docker-compose.yml (umami services)
- deployment-quickstart/.env.example (umami config)
- 26 public HTML pages (tracking script)

Values Alignment:
 Privacy-First Design (cookie-free, DNT honored, opt-out available)
 Human Agency (research inquiries require human review)
 Data Sovereignty (self-hosted analytics, no third-party sharing)
 GDPR Compliance (no personal data in analytics)
 Transparency (open-source tools, documented setup)

Testing Status:
 Research inquiry: Locally tested, data verified in MongoDB
 Umami analytics: Pending production deployment

Next Steps:
1. Deploy to production (./scripts/deploy.sh)
2. Test research form on live site
3. Deploy Umami following UMAMI_SETUP_GUIDE.md
4. Update umami-tracker.js with website ID after setup

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-29 01:31:02 +13:00
..
admin.controller.js fix(submissions): restructure Economist package and fix article display 2025-10-24 08:47:42 +13:00
analytics.controller.js fix(submissions): restructure Economist package and fix article display 2025-10-24 08:47:42 +13:00
audit.controller.js fix(audit): ensure all hook denials are logged to audit database 2025-10-28 11:27:53 +13:00
auth.controller.js fix(submissions): restructure Economist package and fix article display 2025-10-24 08:47:42 +13:00
blog.controller.js feat(cultural-sensitivity): implement Phase 1 - detection and flagging (inst_081) 2025-10-25 11:10:06 +13:00
cases.controller.js fix(submissions): restructure Economist package and fix article display 2025-10-24 08:47:42 +13:00
contact.controller.js feat(crm): implement unified contact form system 2025-10-24 16:56:21 +13:00
crm.controller.js feat(crm): complete Phase 3 multi-project CRM + critical bug fixes 2025-10-24 18:10:14 +13:00
documents.controller.js fix(i18n): disable card view for translations to show translated content 2025-10-26 01:56:00 +13:00
framework-content-analysis.controller.js feat(content): add framework-guided blog pre-publication and comment analysis 2025-10-27 19:45:43 +13:00
inbox.controller.js refactor(lint): fix code style and unused variables across src/ 2025-10-24 20:15:26 +13:00
koha.controller.js refactor(lint): fix code style and unused variables across src/ 2025-10-24 20:15:26 +13:00
media.controller.js feat(cultural-sensitivity): implement Phase 1 - detection and flagging (inst_081) 2025-10-25 11:10:06 +13:00
missedBreach.controller.js feat(research): add missed breach tracking system for framework effectiveness measurement 2025-10-27 12:26:53 +13:00
newsletter.controller.js fix(newsletter): serialize ObjectId to string in API response 2025-10-24 20:29:12 +13:00
projects.controller.js refactor(lint): fix code style and unused variables across src/ 2025-10-24 20:15:26 +13:00
publications.controller.js feat(blog): add Manage Submission modal for publication tracking 2025-10-24 01:55:06 +13:00
relationships.controller.js fix(submissions): restructure Economist package and fix article display 2025-10-24 08:47:42 +13:00
research.controller.js feat(api): implement research inquiry endpoint and Umami analytics 2025-10-29 01:31:02 +13:00
rules.controller.js feat: implement Rule Manager and Project Manager admin systems 2025-10-11 17:16:51 +13:00
submissions.controller.js refactor(lint): fix code style and unused variables across src/ 2025-10-24 20:15:26 +13:00
variables.controller.js fix(submissions): restructure Economist package and fix article display 2025-10-24 08:47:42 +13:00