Activity

The Activity context tracks user listening history — what users play, when, and what they love (favorite). It provides the data for "recently played" and "liked songs" features.

Domain Models

Model Kind Purpose
MediaActivity Aggregate root A listen event — media type, playback position, duration, and loved state

No value objects.

Commands & Handlers

Command Handler Purpose
RecordPlayCommand RecordPlayHandler Records a play event
ToggleLoveCommand ToggleLoveHandler Toggles the loved/favorite state on a play

Ports

Port Purpose
ActivityPortInterface Application port for activity operations

API Endpoints

All endpoints are prefixed with /api and served by ActivityController.

Method Path Purpose
GET /api/activity List play history (cursor-paginated)
GET /api/activity/loved List loved/favorited items
POST /api/activity Record a play (PlayActivityRequest)

Cross-Context Relationships

Direction Context Details
Depends on Shared Uuid, PublicId, CursorPage, CursorPaginatedResponse
Depended on by Recommendation Uses activity data for suggestions

Infrastructure

Component Type Purpose
MediaActivityEntity Doctrine entity ORM mapping for media activity
MediaActivityRepository Doctrine repository Persistence implementation