Skip to content
SaaS Products

SaaS · Worktray

Worktray

Boards for the work that currently lives in a chat thread.

Work scattered across chatsOne board the team reads

Worktray is a kanban workspace for teams who run projects out of group chats, forwarded photos, and a spreadsheet somebody owns. Boards hold lists, lists hold cards, and a card carries everything the work needs — dates, owners, priority, budget, files, and the conversation. Multi-user, bilingual, and scoped by row-level security so a board is only visible to the people it belongs to.

The board

Four views of the same board

Nobody has to adopt someone else's mental model to find their work. The cards are the same in all four; only the shape of the question changes. Cards can be added from any of them.

  1. 01

    Kanban

    Columns you drag cards between — with the mouse, or with the keyboard: focus a card, space to pick it up, arrows to move, space to drop.

  2. 02

    Table

    Every card as a row, sortable and scannable. For the weekly review, where a wall of columns is too slow to read down.

  3. 03

    Gantt

    Start and due dates on a timeline, so overlap and slippage are visible in advance rather than announced in a meeting.

  4. 04

    Calendar

    Deadlines on the month they actually fall in, which is how most people think about a deadline in the first place.

The card

The whole job, on one card

A card is the unit of work and the unit of record. Everything about it is in one place, and changes save as you type.

  • Detail that survives the handover

    Description, start and due dates, priority, labels, colleagues, notes, checklist tasks with their own assignees, an estimated budget, links, and file attachments.

  • A thread per card

    Chat on the card itself, with @mentions, images, and files. Attachments live in a private bucket and are served through short-lived signed URLs, never a public link.

  • Deadlines you read without reading

    The coloured left edge of a card encodes priority; the row tint and the due-date text encode how close the deadline is. The same signal, in all four views.

  • Closed, not deleted

    Work ends as finished, archived, or cancelled, and can be reopened. Hard delete is owner and admin only, so a record does not vanish because someone was tidying up.

LINE sync

The group chat, on the card

Connect a card to one LINE group. What gets said there arrives on the card in real time, with the sender's name and a LINE badge; what the team writes in Worktray is pushed back into the group. The conversation stays where it already happens, and the record ends up where the work is.

In the LINE groupLINE
  • ทีมช่างขอเลื่อนติดตั้งเป็นวันศุกร์
  • [หน้างาน-ชั้น3.jpg]
  • ok แต่ต้องแจ้งลูกค้าก่อนบ่ายนี้
  • ใบเสนอราคาเดิมยังใช้ได้ไหม
On the card
card
Site install · Phase 2
chat
4 messages · LINE
photo
Mirrored to attachments
due
Fri 31 Jul — moved
logged
Written to board activity

Loops and duplicate deliveries are handled: a LINE-origin message is never pushed back, and every webhook event is processed at most once.

Where the line is

  • One active LINE group per card, and one active card per group.
  • Inbound media is mirrored — images, video, audio, files. Outbound sync is text only.
  • No backfill: sync starts once the bot is in the group and the card is connected.

Across boards

What am I supposed to be doing

The parts that answer that question without opening five boards and reading every column.

  • My Tray

    Every card you created or were added to, from every board, grouped by urgency: overdue, today, this week, later, no date, closed.

  • Notifications

    A live bell fed by board activity and chat @mentions, derived only from data you are already allowed to see — so it cannot leak a board you cannot open.

  • Board activity log

    An append-only history written by database triggers rather than application code, exportable to CSV for the meeting where someone asks what actually happened.

  • Work schedules

    Recurring personal task series — daily, weekly, or monthly — with their due dates generated ahead of time instead of remembered.

Permissions

Who can see what, decided in the database

Every board is scoped by Postgres row-level security. The interface does not decide what you can read; hiding a button is not a permission model.

  • Three layers of role

    An instance operator, an organisation role — admin or member — that governs every board in that organisation at once, and three board tiers of owner, editor, and viewer that apply inside a board regardless of organisation.

  • MySpace, genuinely private

    A board belonging to no organisation lives in the owner's personal space, invisible even to the admins of every organisation they are in. Adding a member to one is refused outright — that is what never shareable means.

  • Organisations, handled properly

    Members, roles, and invitations come from Clerk, and the same signed-in session authenticates the database — so policies key on the actual person, not a shared service key.

  • Thai and English, per person

    The interface language is the user's own setting, not something decided once for the whole organisation by whoever set it up.

Built on

Framework
Next.js 16 · React 19 · TypeScript
Auth
Clerk — organisations and invitations
Data
Supabase Postgres, row-level security
Files
Private storage, short-lived signed URLs
Chat sync
LINE Messaging API webhook
Languages
ไทย · English

Want it running for your team?

Worktray is ours, so we host it, support it, and can shape it around the way your organisation actually runs. Tell us where your project work lives at the moment.