- Move 8 stray .md (+5 .txt) from ~/Desktop into docs/explorations/from-desktop/ - Reorganize 27 .md/.txt at workspace root: - audit reports -> docs/audits/ - exploration reports -> docs/explorations/ - design system -> docs/design-system/ - Keep only README/CHANGELOG/CONTRIBUTING/CLAUDE at repo root - Refresh docs/README.md as canonical index with links to all groups - Note: pre-existing docs/audits/AUDIT_INDEX.md and AUDIT_SUMMARY.md were overwritten by the newer root-level versions during the move Co-Authored-By: Paperclip <noreply@paperclip.ing>
9.6 KiB
Analytics Module Documentation Index
This directory contains comprehensive documentation about the GoodGo Platform Analytics Module. Start here to understand the architecture and implementation patterns.
📚 Documentation Files
1. 🎯 EXPLORATION_SUMMARY.md - START HERE
Purpose: High-level overview and quick findings Length: ~12 KB | Read Time: 10 minutes Contains:
- Key findings summary
- Quick statistics (2 controllers, 14+ queries, 3 commands)
- File path quick map
- Implementation templates for new handlers
- Next steps for implementation
👉 Best for: Getting oriented quickly, understanding what was discovered
2. 📖 ANALYTICS_ARCHITECTURE.md - COMPREHENSIVE REFERENCE
Purpose: Deep-dive technical documentation Length: ~25 KB | Read Time: 30-40 minutes Contains (10 detailed sections):
- Module structure (DDD layers)
- Controller & endpoint structure
- Query/Handler pattern (CQRS implementation)
- Redis caching patterns (cache-aside, Lua scripts)
- Prisma schema for all models
- Shared guards & decorators
- DTO patterns
- Dependency injection & module setup
- Key patterns & conventions
- Quick reference paths
👉 Best for: Deep understanding, implementation reference, code review
3. ⚡ ANALYTICS_QUICK_REFERENCE.md - DEVELOPER CHEAT SHEET
Purpose: Quick lookup guide for developers Length: ~11 KB | Read Time: 5-10 minutes (reference) Contains:
- Architecture stack overview
- All file paths organized by layer
- Guard & decorator stack explanation
- Cache patterns (TTLs, prefixes, code examples)
- Prisma models summary
- Complete handler pattern code example
- Common endpoints list
- Error handling pattern
- Conventions table
👉 Best for: Developers implementing features, quick syntax lookup, copy-paste templates
4. 🔄 ANALYTICS_ARCHITECTURE_DIAGRAM.txt - VISUAL OVERVIEW
Purpose: Visual representation of system architecture Length: ~19 KB | Read Time: 15 minutes Contains:
- Complete system architecture ASCII diagram
- All layers: HTTP → Database
- Data flow walkthrough for example request
- Component relationships
- External service integrations
- Shared utilities & exports
👉 Best for: Understanding system flow, presentations, documentation
🎓 Suggested Reading Order
For New Team Members
- EXPLORATION_SUMMARY.md (overview)
- ANALYTICS_ARCHITECTURE_DIAGRAM.txt (visual)
- ANALYTICS_QUICK_REFERENCE.md (reference)
For Implementation
- ANALYTICS_QUICK_REFERENCE.md (templates)
- ANALYTICS_ARCHITECTURE.md (section 3-8 for patterns)
- Look at existing handlers:
apps/api/src/modules/analytics/application/queries/
For Code Review
- ANALYTICS_ARCHITECTURE.md (full reference)
- ANALYTICS_QUICK_REFERENCE.md (conventions table)
- Check against existing patterns
For Architecture Understanding
- ANALYTICS_ARCHITECTURE_DIAGRAM.txt
- ANALYTICS_ARCHITECTURE.md (sections 1-3, 8)
- Look at:
analytics.module.ts,analytics.controller.ts
🔍 Quick Lookup Guide
"How do I create a new query handler?"
→ ANALYTICS_QUICK_REFERENCE.md → "CQRS Handler Pattern" section → ANALYTICS_ARCHITECTURE.md → Section 3
"What cache TTLs should I use?"
→ ANALYTICS_QUICK_REFERENCE.md → "Cache Patterns" section → ANALYTICS_ARCHITECTURE.md → Section 4 (Cache Configuration)
"How does rate limiting work?"
→ ANALYTICS_QUICK_REFERENCE.md → "Guards & Decorators Stack" → ANALYTICS_ARCHITECTURE.md → Section 4 (Rate Limiting with Redis)
"What are the Prisma models for analytics?"
→ ANALYTICS_QUICK_REFERENCE.md → "Prisma Models" section → ANALYTICS_ARCHITECTURE.md → Section 5
"How should I handle errors?"
→ ANALYTICS_QUICK_REFERENCE.md → "Error Handling Pattern" → ANALYTICS_ARCHITECTURE.md → Section 6
"What endpoints exist?"
→ ANALYTICS_QUICK_REFERENCE.md → "Common Endpoints" section → ANALYTICS_ARCHITECTURE.md → Section 2
"How do I understand the full data flow?"
→ ANALYTICS_ARCHITECTURE_DIAGRAM.txt → "Data Flow Example" section
📊 Key Takeaways
Architecture Pattern
DDD + CQRS with clear layer separation:
- Presentation (controllers, DTOs)
- Application (query/command handlers)
- Domain (interfaces, entities)
- Infrastructure (Prisma, external services)
Caching Strategy
Cache-aside pattern with Redis:
cache.getOrSet(key, loader, TTL, metric)- Graceful degradation if Redis unavailable
- Prometheus metrics for cache hit/miss/degradation
Rate Limiting
Sliding-window with Redis sorted sets:
- Per-endpoint configuration
- Key by user ID or IP
- 429 response with Retry-After header
CQRS Pattern
Separation of commands and queries:
- Queries: read operations, cached with getOrSet()
- Commands: write operations, tracked
- Event handlers: listen to domain events
Repository Pattern
Dependency inversion:
- Domain: interface definition (Symbol)
- Infrastructure: Prisma implementation
- Handlers: inject repository abstraction
Error Handling
Consistent pattern:
- Catch DomainException → rethrow
- Log unexpected errors
- Return user-friendly message via InternalServerErrorException
🚀 Implementation Checklist
When adding a new analytics query:
- Create Query class in
application/queries/your-feature/ - Create Handler with cache-aside pattern
- Define DTO interface as handler return type
- Create Request DTO for controller parameters
- Add endpoint to appropriate controller
- Apply guard stack: EndpointRateLimitGuard → JwtAuthGuard → QuotaGuard
- Add
@RequireQuota('analytics_queries') - Register handler in
analytics.module.tsQueryHandlers array - Follow naming convention: Query → Handler → Dto
- Use CacheService.buildKey() for cache keys
- Use CacheTTL.* constants for TTLs
- Catch DomainException separately
- Add comprehensive error handling
- Test with Swagger/Postman
- Add unit tests in
__tests__/directory
📋 File Statistics
| File | Size | Sections | Key Purpose |
|---|---|---|---|
| EXPLORATION_SUMMARY.md | 12 KB | 11 + templates | Overview & quick reference |
| ANALYTICS_ARCHITECTURE.md | 25 KB | 10 detailed | Deep technical reference |
| ANALYTICS_QUICK_REFERENCE.md | 11 KB | Reference | Developer cheat sheet |
| ANALYTICS_ARCHITECTURE_DIAGRAM.txt | 19 KB | ASCII diagrams | Visual architecture |
Total Documentation: ~67 KB of comprehensive guides
🔗 Key File Paths Mentioned
Analytics Module Root
apps/api/src/modules/analytics/
Controllers
presentation/controllers/analytics.controller.ts (13+ endpoints)
presentation/controllers/avm.controller.ts (5 endpoints)
Query Handlers (14+)
application/queries/{query-name}/{query-name}.query.ts
application/queries/{query-name}/{query-name}.handler.ts
Shared Module
apps/api/src/modules/shared/
├── infrastructure/cache.service.ts (cache-aside)
├── infrastructure/redis.service.ts (Redis connection)
├── infrastructure/guards/endpoint-rate-limit.guard.ts
├── domain/domain-exception.ts
└── ...
💡 Tips for Using These Docs
- Keep ANALYTICS_QUICK_REFERENCE.md open while coding
- Use Ctrl+F to search for specific concepts
- Read ANALYTICS_ARCHITECTURE.md sections sequentially for learning
- Reference ANALYTICS_ARCHITECTURE_DIAGRAM.txt when explaining to others
- Copy code templates from ANALYTICS_QUICK_REFERENCE.md
- Check conventions table before naming new classes/files
🎯 Common Scenarios
I need to add a market analytics endpoint
→ See ANALYTICS_QUICK_REFERENCE.md: "CQRS Handler Pattern" → Use CachePrefix.MARKET_REPORT or MARKET_TREND → Check existing handlers: get-price-trend, get-heatmap, get-market-report
I need to add a valuation endpoint
→ See ANALYTICS_QUICK_REFERENCE.md: "Common Endpoints" → Use CachePrefix.VALUATION → Check existing: predict-valuation, batch-valuation, valuation-history
I need to understand the cache strategy
→ See ANALYTICS_QUICK_REFERENCE.md: "Cache Patterns" → See ANALYTICS_ARCHITECTURE.md: Section 4 (full details)
I need to add rate limiting
→ Already applied via @EndpointRateLimit decorator → See ANALYTICS_QUICK_REFERENCE.md: "Guards & Decorators Stack" → Modify limit/windowSeconds/keyStrategy as needed
I need to understand error handling
→ See ANALYTICS_QUICK_REFERENCE.md: "Error Handling Pattern" → See ANALYTICS_ARCHITECTURE.md: Section 6
✅ Documentation Quality Checklist
- ✅ Complete layer documentation (presentation → infrastructure)
- ✅ All 14+ query handlers covered
- ✅ Redis caching with Lua scripts explained
- ✅ Rate limiting architecture explained
- ✅ Prisma schema for analytics models
- ✅ Shared module exports documented
- ✅ Guard & decorator stack explained
- ✅ Error handling patterns shown
- ✅ Implementation templates provided
- ✅ Visual architecture diagram included
- ✅ Quick reference for developers
- ✅ File paths organized by layer
📞 Questions?
Refer to the specific documentation file for your scenario:
- What? → EXPLORATION_SUMMARY.md (quick findings)
- How? → ANALYTICS_QUICK_REFERENCE.md (templates & patterns)
- Why? → ANALYTICS_ARCHITECTURE.md (detailed explanations)
- Where? → ANALYTICS_ARCHITECTURE_DIAGRAM.txt (visual flow)
Last Updated: April 2026 Scope: Analytics Module (apps/api/src/modules/analytics/) Coverage: DDD, CQRS, Caching, Rate Limiting, Prisma, Shared Utilities