إنتقل إلى المحتوى الرئيسي

Activity Feed

The activity feed provides a chronological record of all changes made to an item, board, or workspace. It serves as an audit trail so you can track who changed what and when.

Item Activity​

Every item has an activity tab in its detail panel:

  1. Open an item by clicking on it.
  2. Switch to the Activity tab (next to the Comments tab).
  3. View a list of all changes to the item, including:
    • Field value changes (e.g., "Status changed from 'To Do' to 'In Progress'").
    • Assignment changes.
    • Date modifications.
    • Comments added or edited.
    • File attachments added or removed.
    • Item creation and deletion.

Each activity entry shows:

  • Who made the change (user avatar and name, fetched from the user profile).
  • What was changed (field name, old value, new value, stored as JSONB metadata).
  • When the change was made (relative time like "2 hours ago", with full timestamp on hover).

How Activity Is Recorded​

Activity entries are not created by the activity router itself. Instead, mutation handlers throughout the system call the logActivity helper whenever they modify an entity. This ensures every change is captured regardless of which API endpoint triggered it.

Each activity record includes:

FieldDescription
entityTypeThe type of entity: "item", "board", "project", or "comment"
entityIdThe cuid2 primary key of the affected entity
actionA verb describing the change: "created", "updated", "deleted", "commented"
actorIdThe user who performed the action
metadataJSONB payload with specifics (e.g., field name, old/new values)
organizationIdEnsures activity is scoped to the correct tenant

Board Activity​

View activity across all items on a board:

  1. Open the board.
  2. Click the Activity button in the top bar.
  3. A panel slides in showing recent changes across all items on the board.

This is useful for getting a quick overview of what the team has been working on.

Organization-Level Activity​

The Recent Activity widget on the dashboard shows the 20 most recent activity log entries across the entire organization. This feed aggregates item creations, updates, comments, and status changes from all projects and boards.

Filtering Activity​

Use the filter options at the top of the activity feed:

  • By person — show only changes made by a specific team member.
  • By field — show only changes to a specific field (e.g., status changes only).
  • By date range — narrow down to a specific time period.

Pagination​

Activity lists are paginated with a default limit of 50 entries per request (configurable up to 200). Use the "Load more" button at the bottom of the feed to fetch older entries.

Activity vs. Comments​

The activity feed and comments serve different purposes:

  • Activity is automatically generated by the system when fields change. It cannot be edited or deleted. It is a permanent audit trail.
  • Comments are written by team members for discussion. They can be edited and deleted by their authors.

Both appear in the item detail panel but on separate tabs for clarity.

Use activity for compliance

In regulated environments (pharma, manufacturing), the activity feed provides an immutable audit trail of all changes. This supports GAMP 5 and GxP compliance requirements for data integrity and traceability.

Data Retention​

Activity log entries are retained indefinitely. They are never automatically purged, even if the associated item is deleted. This ensures a complete historical record for compliance and auditing purposes.

Troubleshooting​

ProblemSolution
Activity feed is emptyThe item may be newly created with no changes since creation. The creation event itself is logged, so at minimum you should see "Item created".
Missing activity entriesActivity is recorded by mutation handlers. If a change was made via a direct database edit (e.g., during migration), it will not have an activity entry.
Activity shows wrong userVerify the user session. Activity records the authenticated user at the time of the mutation.

Activity Feed Scoping​

All activity records are scoped to the current organization via the organizationId field. This means:

  • You can only see activity within your own organization.
  • Activity from other tenants is never returned, even if entity IDs overlap.
  • Organization-wide feeds aggregate activity across all projects and boards within the tenant.

This scoping is enforced at the query level using the orgProcedure middleware, which injects the authenticated user's organization context into every request.

Activity Entry Actions​

The action field on each activity entry uses standard verbs to describe what happened:

ActionDescription
createdThe entity was created (new item, new comment, etc.)
updatedOne or more field values were changed
deletedThe entity was removed
commentedA new comment was added to the entity
assignedThe item was assigned to a user
movedThe item was moved to a different group or board

Best Practices​

  • Review activity before meetings — check the board-level activity feed before standup meetings to get a quick summary of recent changes.
  • Use entity-level activity for audits — when you need to understand the history of a specific item (e.g., during a compliance review), the item-level activity tab provides the complete audit trail.
  • Combine with notifications — use the activity feed for after-the-fact review and notifications for real-time awareness.
  • Export activity data for compliance documentation when required by regulatory audits.

Next Steps​

  • Comments — add discussion threads to items.
  • Notifications — get notified when changes happen.
  • Dashboard — see organization-wide activity on the Recent Activity widget.