Skip to main content
This page maps the concepts described in Core Concepts to their underlying tables. It’s aimed at contributors working in the codebase, not at end users.

Entity relationships

Tables

users

projects

Relationships: hasMany(Issue), hasMany(SavedFilter).

issues

Relationships: belongsTo(User, 'user_id') as creator, belongsTo(User, 'assignee_id') as assignee, belongsTo(Project), hasMany(Comment).
A database-level trigger enforces end_date >= start_date whenever both are set — this constraint exists in the schema itself, not just in request validation, so it holds even for data written outside the app (seeders, Tinker, and so on).

comments

notifications

notification_settings

Unique on (user_id, type, channel). A missing row for a given type/channel combination means “use that channel’s default” (in-app defaults on, email defaults off) rather than being explicitly set — see Notifications.

sessions

Laravel’s standard database session-driver table, surfaced in the UI as the active sessions list.

activity_logs

project_id became nullable to support account-level activity — renaming your profile, changing your password, revoking a session, updating session lifetime, deleting your account, and changing notification settings all write an entry with project_id = null. See Activity log for the full picture.

saved_filters

Enums

Defined under app/Enums/:
  • UserRoleadmin, member
  • IssueStatusopen, in_progress, closed
  • IssueLabelbug, feature, performance, design, ux, chore
  • Notifications\NotificationTypeissue_assigned, issue_mentioned, issue_commented, issue_status_changed, issue_priority_changed, issue_labels_changed, issue_dates_changed, issue_updated, project_invited — see Notifications for which of these are actually triggered today
  • Notifications\NotificationChannelin_app (default enabled), email (default disabled)
Laravel’s own queue tables (jobs, failed_jobs, job_batches) also exist, backing the database queue driver used to deliver email notifications. They’re framework-standard and not covered further here.
Last modified on August 17, 2026