Skip to content
RoooyHePublic

About

Matrix-native task management

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Tamarix

Matrix-native task management -- One Task = One Matrix Room

License: MIT Svelte 5 Matrix TypeScript Bun

English | 中文

Tamarix maps Matrix's decentralized Room/Space model onto task management. Every task is a Matrix Room, every project a Matrix Space. Data lives on the Matrix federation -- no proprietary backend required -- with built-in support for real-time collaboration, cross-server federation, and end-to-end encryption.


What is Matrix?

Matrix is an open standard for decentralized, real-time communication.

It provides:

  • End-to-end encrypted messaging -- secure conversations by default
  • Federated architecture -- no single point of control or failure
  • Interoperability -- bridges to other chat platforms (Slack, Discord, IRC, etc.)
  • VoIP and video calls -- built-in voice and video support
  • Rich messaging -- reactions, threads, file sharing, and more

Learn more at matrix.org.

Tamarix Features

  • Real-time collaboration -- Built on the Matrix sync protocol; every change is pushed instantly
  • Federated communication -- Users on different homeservers can collaborate on the same tasks
  • End-to-end encryption -- Task content is protected by Matrix E2EE (Olm/Megolm)
  • Open protocol -- Any Matrix client can participate; no vendor lock-in
  • Workflow validation -- Customizable task status transition rules, enforced by Matrix power levels
  • Board view -- Drag-and-drop sorting, within-column ordering, bulk operations
  • Reports & charts -- Burndown charts, trend charts, status distribution, version progress
  • Approval flow -- Approval mechanism based on Matrix reactions

Core Concepts

Custom State Events -- the com.tamarix.* namespace
Event Type Purpose
com.tamarix.task_status Task status (todo / in_progress / review / done / closed)
com.tamarix.priority Priority (critical / high / medium / low)
com.tamarix.task_type Task type (bug / feature / task / improvement / epic)
com.tamarix.due_date Due date
com.tamarix.estimate Time estimate / Story points
com.tamarix.tags Tags
com.tamarix.ticket_id Ticket ID (e.g. TAM-42)
com.tamarix.assignee Assignee
com.tamarix.relation Task relation (blocks / duplicates / subtask_of)
com.tamarix.task_archived Archive flag
com.tamarix.description Rich-text description (Markdown)
com.tamarix.worklog Worklog entries
com.tamarix.version Project version definition
com.tamarix.task_version Task-version association
com.tamarix.watcher Task watchers
com.tamarix.notification_prefs Notification preferences
com.tamarix.sprint_meta Sprint metadata
com.tamarix.template Task templates
com.tamarix.custom_field_defs Custom field definitions
com.tamarix.custom_field_values Custom field values
com.tamarix.approval Approval status
com.tamarix.sort_order Manual sort order
com.tamarix.external_links External links
com.tamarix.git_config Git integration config
com.tamarix.integration Third-party integration config

Architecture

Architecture

Architecture Mermaid Diagram (collapsible)
graph TB
  subgraph External["外部系统"]
    MatrixHS["Matrix Homeserver<br/>Rooms / Spaces / Sync / E2EE"]
  end

  subgraph Tamarix["Tamarix 应用"]
    Frontend["Frontend SPA<br/>SvelteKit 2 + Svelte 5 Runes + TS"]

    subgraph Routes["页面路由"]
      R1["login /"]
      R2["register /"]
      R3["invite /"]
      R4["dashboard /"]
      R5["project/[id]<br/>列表 / 看板 / 筛选"]
      R6["project/[id]/task/[taskId]<br/>详情 + 多标签页"]
      R7["project/[id]/settings /"]
      R8["project/[id]/reports /"]
      R9["search /"]
      R10["settings /"]
    end

    subgraph UI["UI 层"]
      Layout["App Shell<br/>Header + Sidebar"]
      TaskUI["Task Components<br/>TaskCard / ListView / Board / Dialog..."]
      ProjectUI["Project Components<br/>Header / FilterToolbar / GitConfig..."]
      DashboardUI["Dashboard Components<br/>BurndownChart / TeamWorkloadCard..."]
      CommonUI["Common Components<br/>MatrixAvatar / TaskIdBadge / Palette..."]
    end

    subgraph State["状态层 - Svelte 5 Runes"]
      AuthStore["Auth Store<br/>login / restore / logout"]
      ProjectsStore["Projects Store<br/>project list / fetchProjects"]
      TasksStore["Tasks Store<br/>task CRUD / bulkUpdate / cache"]
      CommentsStore["Comments Store"]
      NotificationsStore["Notifications Store"]
      UIStore["UI Store<br/>sidebar / theme / palette"]
    end

    subgraph Matrix["Matrix 层 - matrix-js-sdk"]
      ClientManager["Client Manager<br/>lifecycle + sync"]
      TaskRepo["Task Repository<br/>room to Task mapping"]
      ProjectRepo["Project Repository<br/>Space to Project mapping"]
      StatePrimitives["State Primitives<br/>send / get state events"]
      SyncManager["Sync Manager<br/>debounced listeners"]
      TimelineBus["Timeline Bus<br/>live comments"]
      Workflow["Workflow<br/>status transitions"]
      Search["Search<br/>full-text"]
      DueChecker["Due Checker"]
      NotificationsSvc["Notifications Svc"]
      Integrations["Git / External Links<br/>Custom Fields / Approvals<br/>Worklog / Templates"]
    end
  end

  subgraph Domain["领域模型 - TypeScript interfaces"]
    Task["Task<br/>roomId / ticketId / status / priority / type<br/>dueDate / estimate / tags / assignee<br/>sortOrder / archived..."]
    Project["Project<br/>roomId / name / description / taskCount"]
    Comment["Comment"]
    Attachment["Attachment"]
    Worklog["WorklogEntry"]
    Version["VersionInfo"]
    Integration["IntegrationInfo"]
    Notification["Notification"]
    Template["TaskTemplate"]
    CustomField["CustomFieldDefinition / Value"]
    Approval["ApprovalConfig"]
    ExternalLink["ExternalLink"]
    GitConfig["GitConfig"]
  end

  Frontend --> MatrixHS
  Matrix --> MatrixHS
  Matrix --> SSO
  Matrix --> Git

  Frontend --> Routes
  Frontend --> UI
  Frontend --> State
  State --> UI
  State --> Matrix
  Matrix --> Domain

  Task --> Project
  Task --> Comment
  Task --> Attachment
  Task --> Worklog
  Task --> Version
  Task --> Integration
  Task --> Template
  Task --> CustomField
  Task --> Approval
  Task --> ExternalLink
  Task --> GitConfig

  MatrixHS -->|"Space"| Project
  MatrixHS -->|"Room"| Task
  MatrixHS -->|"com.tamarix.* events"| Task
  MatrixHS -->|"Timeline Msg"| Comment
Loading

For the full Firmiana-series architecture diagrams, see Firmiana Clover.

Tech Stack

SvelteKit Svelte 5 TypeScript Tailwind CSS matrix-js-sdk Bun

Layer Technology
Framework SvelteKit 2 + Svelte 5 (runes mode)
Language TypeScript (strict)
Styling Tailwind CSS v4 (CSS-based config) + tailwind-variants (tv())
UI Library shadcn-svelte (Nova style) + bits-ui primitives
Icons @lucide/svelte
Data Layer matrix-js-sdk -- task data as Matrix room state events (com.tamarix.*)
Runtime / PM Bun
Testing Vitest + Playwright
Code Quality ESLint + Prettier + svelte-check + Husky + lint-staged

Quick Start

Prerequisites

Requirement Recommendation
Node.js 18+
OS Linux / macOS / Windows (WSL2)
Homeserver Palpo

Commands

# Install dependencies
bun install

# Start the dev server
bun run dev

# Type checking
bun run check

# Production build
bun run build && bun run preview

Project Structure

src/
  lib/
    components/       # UI components (board, task, project, dashboard, ...)
    stores/           # Svelte 5 rune-based stores ($state / $derived)
    matrix/           # Matrix SDK integration (auth, client, search, workflow, ...)
    i18n/             # Internationalization
  routes/             # SvelteKit file-based routing
    dashboard/        # Main task board
    project/[id]/     # Project views & settings
    search/           # Full-text search
    settings/         # App settings

Available Scripts

Command Description
bun run dev Start development server
bun run build Production build
bun run preview Preview production build
bun run check Type checking (svelte-check)
bun run lint Run ESLint
bun run lint:fix Auto-fix lint + format issues
bun run format Format all files with Prettier
bun run format:check Check formatting without modifying
bun run test Run unit tests (Vitest)
bun run test:watch Watch-mode unit tests
bun run storybook Start Storybook

Acknowledgements

Palpo -- Next-generation Matrix Homeserver written in Rust.

Matrix JavaScript SDK -- The Matrix Client-Server SDK for JavaScript and TypeScript.

Supported by Upstream Labs.

Related Projects

firmiana -- A local-first Matrix homeserver built on Micronaut 4.10.1 and GraalVM JDK 21.

honeysuckle -- A production-grade multi-agent financial compliance audit system built on the Matrix IM protocol.

Contributing

Issues and pull requests are welcome. Please open an issue first to discuss what you would like to change. See CONTRIBUTING.md for development setup, code conventions, and the PR process.

License

This project is licensed under the MIT License.

About

Matrix-native task management

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages