📈 Responsibilities
- Passive consumer of events
- Store metrics about app usage
- Expose aggregated metrics to admin dashboard
Endpoints
GET /analytics/events
- Admin-only
→ Raw event logs (debug)
GET /analytics/summary
→ Daily metrics: games created, players joined, top rated
POST /analytics/event
→ Internal-only: Receives a structured event
📦 Event Schema
json
CopyEdit
Event {
id: UUID,
type: "user.created" | "game.joined" | "invite.sent" | ...,
userId: UUID,
metadata: object,
timestamp: datetime
}
🔁 Consumes Events
- From all core services (user, game, matchmaking, feedback)
- Event queue: NATS/Kafka
🔎 MVP Metrics to Capture
| Metric |
Source |
| Total signups |
user.created |
| Game participation rate |
game.joined / game.created |
| Engagement frequency |
user.logged_in or matchmaking.hit |
| Report frequency |
feedback.report.filed |
🛠 DB Strategy
- Append-only event log (Postgres or time-series DB)