Sayr is a free, open source collaboration & feedback project written in TypeScript and released under a custom open-source licence. It has 24 GitHub stars, 1 forks and 57 open issues, and was last pushed 9 hours ago. On this registry it ranks #20 of 20 tracked projects in Collaboration & Feedback, with 5 head-to-head comparisons available. It gained 2 stars over the last 6 tracked days.

What is Sayr?

Sayr is a source-available, self-hostable project management platform that pairs an internal task board with a built-in public feedback portal, so a product team can work privately while its users submit feedback, vote on features, and watch progress from the same tool.

What it is

Sayr is a TypeScript application built on TanStack Start 1.x, React 19.2+, Hono 4.10+, and the Bun runtime. It presents one board with two views: the internal team sees everything, and the public sees only the items the team marks as visible. Each organization can expose its board on a dedicated subdomain ({org}.sayr.io on the hosted edition, or a domain of the operator's own choosing when self-hosting). Sayr ships in three editions — Community for free self-hosting, Cloud for the hosted service at sayr.io, and Enterprise as a licensed self-hosted edition — and the Docker images are edition-locked at build time.

The concrete problem it solves is tool sprawl between project management and customer feedback. Teams that run a project management tool and a separate feedback tool duplicate work, publish stale updates, and leave users ignorant of what is happening to their requests. Sayr replaces that pair with a single system: tasks, comments, labels, and timeline entries each carry their own public or private toggle, and changes to that toggle take effect immediately.

Key capabilities

  • Task management across five statuses (Backlog, Todo, In Progress, Done, Canceled) and five priority levels (Urgent, High, Medium, Low, None), with multiple assignees, subtasks one level deep, and relations typed as Blocks, Depends on, or Related to.
  • A per-item visibility system that applies to tasks, comments (public versus internal), labels, and timeline entries, with labels carrying their own visibility settings.
  • A public portal per organization with a live board sortable by Most Popular, Newest, or Trending, real-time voting counts, public task submission by signed-in visitors, reactions on public comments, and a member badge marking official responses.
  • GitHub integration through a GitHub App, with bidirectional task-to-issue sync per repository and optional scoping by category, commit and pull request keyword references (Ref #N, Fixes #N, Closes #N, Resolves #N), commit and PR lifecycle entries on the task timeline, and comment syncing.
  • Releases as milestones with progress charts, assignee workload and priority distribution, plus saved views, issue templates that pre-fill title, description, labels, assignees, category, priority, status, release, and visibility, and a full audit timeline.
  • Real-time collaboration over WebSocket for all create, update, and delete events, with a ProseKit rich text editor, @mentions, threaded comments, edit history, emoji reactions, notifications, an inbox, and a cross-organization My Tasks view.
  • A REST API with an OpenAPI spec served through Scalar, bearer token authentication, and rate limits of 100 requests per minute authenticated and 10 requests per minute unauthenticated.

Who uses it and how

  • Product teams that publish a roadmap use the public portal to collect submissions and votes while keeping planning, internal comments, and private tasks out of the public view.
  • Engineering organizations route work to GitHub by category, so a task in a given category syncs to the matching repository while activity in private repositories stays internal.
  • Teams that must own their data self-host the Community edition from a Docker image, serve the portal on their own domain, and rely on GitHub OAuth, email and password login, TOTP two-factor authentication with backup codes, passkeys via WebAuthn, and per-session revocation.
  • Larger organizations model people as members and teams with permission controls grouped under Organization, Content Settings, Tasks, and Moderation, resolved with a "most permissive wins" rule, alongside a blocked users list.

Getting started

Deploy the Community edition from its Docker image for free self-hosting, or sign up for the hosted Cloud edition at sayr.io. Note that Docker images are edition-locked at build time, so the edition is fixed when the image is built.

How it compares

No paid products or comparable tools are named alongside Sayr in the facts available for this entry, so it stands alone in this registry on that count. What can be said is that the hosted Cloud edition and the self-hosted Community and Enterprise editions share a codebase, which lets an operator move between hosting models rather than being confined to a vendor-run service.

When to use it — and when not to

Pick Sayr when a public roadmap and an internal board need to be one system, and when self-hosting is a requirement rather than a preference. Be cautious if licence certainty matters: the registry records the licence as NOASSERTION, and the project describes itself as source-available rather than open source, so a legal review is warranted before adoption. The facts supplied also omit operational prerequisites such as database, storage, or mail requirements, and the README excerpt ends mid-table, so a prospective self-hoster cannot confirm the running costs and dependencies from that material alone; with 57 open issues against 24 stars and 1 fork, the project also has a small community, which means support largely rests on the maintainers.

project readme (upstream, from github) — read inline

Sayr.io

Project management your users can see.

Sayr is a source-available project management platform with a built-in public-facing portal. Your team works internally while users submit feedback, vote on features, and track progress — all from the same tool.

TypeScript TanStack Start React Hono Bun


The Problem

Teams juggle a project management tool and a separate customer feedback tool — duplicated work, stale updates, and users who never know what's happening.

Sayr replaces both with one board, two views: your team sees everything, the public sees only what you allow.


Features

Task Management

  • Tasks with statuses: Backlog, Todo, In Progress, Done, Canceled
  • 5 priority levels: Urgent, High, Medium, Low, None
  • Multiple assignees per task
  • Subtasks — one level deep
  • Task relations — Blocks, Depends on, Related to
  • Labels — color-coded, multiple per task, with own visibility settings
  • Categories — group tasks and route to GitHub repositories
  • Releases — milestones/versions with progress charts, assignee workload, and priority distribution
  • Saved views — filtered/grouped views persisted per organization
  • Issue templates — pre-fill title, description, labels, assignees, category, priority, status, release, and visibility
  • Kanban and list views
  • Bulk operations (status changes, label assignment)
  • Full audit timeline — every change recorded

Visibility System

The core differentiator. Every item carries its own public/private toggle: tasks, comments (public vs. internal), labels, and timeline entries. Changes take effect immediately.

Public Portal

  • Each organization gets a dedicated subdomain ({org}.sayr.io on cloud, or your own domain when self-hosting)
  • Live task board showing public tasks with sorting (Most Popular, Newest, Trending)
  • User voting on tasks (real-time counts)
  • Public task submission by signed-in visitors, optionally from a template
  • Public comments with reactions; member badge distinguishes official responses
  • Real-time updates via WebSocket
  • Organization branding (banner, logo, name, description)

GitHub Integration

  • Connect one or more GitHub organizations via GitHub App
  • Bidirectional task ↔ issue sync, per repository, optionally scoped by category
  • Keyword references in commits and PRs: Ref #N, Fixes #N, Closes #N, Resolves #N
  • Commit and PR lifecycle tracking appear on the task timeline
  • Comment syncing from GitHub to Sayr
  • Respects repository visibility (private repo activity stays internal)

Collaboration & Real-Time

  • Rich text editor (ProseKit) with headings, lists, code blocks, images, and @mentions
  • Threaded comments with edit history and emoji reactions
  • WebSocket broadcasting for all create/update/delete events
  • Notifications and inbox
  • My Tasks — cross-organization view of all assigned work

Account & Security

  • GitHub OAuth login
  • Email + password authentication
  • Two-factor authentication (TOTP + backup codes)
  • Passkeys — Face ID, Touch ID, Windows Hello, hardware security keys (WebAuthn)
  • Active session management — view and revoke individual sessions

Organization Management

  • Members and teams with granular per-permission controls
  • Permission categories: Organization, Content Settings, Tasks, Moderation
  • "Most permissive wins" model across team memberships
  • Blocked users list

API

  • REST API with OpenAPI spec (served via Scalar)
  • Bearer token authentication
  • Rate limiting: 100 req/min authenticated, 10 req/min unauthenticated

Editions

Sayr ships in three editions. Docker images are edition-locked at build time.

Community Cloud Enterprise
For Free self-hosting Hosted sayr.io Licensed self-hosting
Organizations 1 Unlimited Unlimited
Members Unlimited Free: 5 / Pro: unlimited Unlimited
Releases Unlimited Free: 0 / Pro: unlimited Unlimited
Saved views Unlimited Free: 3 / Pro: unlimited Unlimited
Issue templates Unlimited Free: 3 / Pro: unlimited Unlimited
Teams Unlimited Free: 1 / Pro: unlimited Unlimited
Availability Now Now Coming soon

Community Edition images are published at ghcr.io/dorasto/sayr-ce-*.


Tech Stack

Frontend

Technology Purpose
TanStack Start Full-stack React framework (SSR + server functions)
React UI library
TanStack Router Type-safe file-based routing
TanStack Query Server state management
Tailwind CSS Utility-first CSS
Shadcn/ui Accessible component library (Radix primitives)
ProseKit Block-based rich text editor (ProseMirror)
Vite Build tool

Backend

Technology Purpose
Bun JavaScript runtime
Hono Lightweight web framework (REST + WebSocket)
Drizzle ORM TypeScript ORM
PostgreSQL Primary database
Redis Job queue and caching
MinIO S3-compatible object storage
Zod Validation

Infrastructure & Tooling

Technology Purpose
Turborepo Monorepo build orchestration
pnpm Package manager
Biome Linting and formatting
TypeScript Type-safe JavaScript throughout
Docker Containerization
Nginx Reverse proxy and subdomain routing

Project Structure

sayr/
├── apps/
│   ├── backend/          # Hono API server (Bun runtime, port 5468)
│   ├── marketing/        # Astro marketing site + Starlight docs (port 3001)
│   ├── nginx/            # Nginx reverse-proxy config
│   ├── start/            # TanStack Start frontend (port 3000)
│   ├── traefik/          # Traefik TLS termination config
│   └── worker/           # Background job processor (GitHub webhooks, cron)
└── packages/
    ├── auth/             # Better Auth configuration
    ├── database/         # Drizzle ORM schemas and CRUD functions
    ├── edition/          # Edition detection, capabilities, and plan limits
    ├── opentelemetry/    # Tracing and observability utilities
    ├── queue/            # Job queue abstraction (Redis or file-based)
    ├── storage/          # MinIO/S3 client with obfuscated filenames
    ├── ui/               # Shared Shadcn/ui component library
    ├── util/             # Shared utilities (slugs, date formatting, CDN URLs)
    └── typescript-config/# Shared TypeScript configurations

Getting Started

Prerequisites

  • Bun 1.2+
  • Node.js 22+ (LTS)
  • pnpm 10.6+ (npm install -g pnpm)
  • PostgreSQL 15+
  • Redis (required for the job queue in production)
  • Docker (optional, for containerized development)

Available Commands

Root
Command Description
pnpm dev Start all apps in development mode
pnpm build Build all apps for production
pnpm lint Run Biome linting
pnpm lint:fix Fix linting issues
pnpm format-write Format code with Biome
pnpm check-types TypeScript type checking
Per App/Package
Command Description
pnpm -F backend dev Backend only
pnpm -F start dev Frontend only
pnpm -F marketing dev Marketing site only
pnpm -F worker dev Worker only
pnpm -F @repo/database generate Generate database schema
pnpm -F @repo/database migrate Apply schema migrations
pnpm -F @repo/database db:studio Open Drizzle Studio
pnpm -F start test Run tests (Vitest)

Integrations

Sayr supports extensible integrations that can add custom API routes and UI pages.

Creating an Integration

Use the create-integration scaffolding tool:

pnpm create-integration <integration-name> -a <author-name> -d <integration-description>

This generates a new integration in packages/integrations/ with:

  • API Routes — Custom REST endpoints (/api/integrations/:orgId/:integrationId/...)
  • UI Pages — Admin pages rendered from

readme truncated — read the full docs on github

Frequently asked questions

Is Sayr free to use?

Sayr is open source. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Sayr do?

Bridge internal workflows with public collaboration

What is Sayr written in?

Sayr is primarily written in TypeScript. Its source is publicly available at https://github.com/dorasto/sayr, and it has 24 GitHub stars.