Cloudsteading
Seeder project performance dashboard with sample projects

Seeder

A self-hosted project workspace and task boards for small teams

Seeder is a self-hosted Trello alternative built on Cloudflare (D1, R2, Workers). Paid services required. Inspect the source and license in the linked repository.

Source & license

Upstream license: MIT

License TL;DR

You can use it, change it, self-host it and sell it. Keep the original copyright and license notice with copies of the code. You don’t have to publish your changes. The authors don’t promise it will work.

Explain MIT in plain English →

Summary of the main license. Separate packages and assets can have different terms.

Inspect repository ↗Read this project’s actual license ↗

Repository owner

@danielsyauqi

See the upstream repository for the original creator and contributors.

Maintain this project? Maintainer verification →

Cloudflare hosting

Paid services required

The committed cpu_ms=30000 explicitly targets Workers Paid, starting at $5 USD/account/month plus D1/R2 usage beyond included amounts. Supply an owner email, auth secret and production URL. Do not reuse the maintainer resource IDs present in the example configuration.

Hosting requirements
  • Create your own database and uploads bucket, apply migrations and set BETTER_AUTH_SECRET and the intended owner before opening registration.
  • The config notes ordinary SSR renders can take tens of milliseconds; a free-hosting claim is not defensible for this committed path.
  • Source and configuration review establishes a deployment path and conditional costs; this candidate was not executed or load-tested.
Check current pricing ↗
Sources checked 01/10/2026

Repository snapshot: 0268c44. Hosting eligibility reflects the deployment documentation and listed assumptions.

  • trello ↗

    A foundational project manager for small teams — simple to run, and yours to fork. Runs on **Cloudflare Workers** (D1 + R2) or a

  • workers ↗

    { "$schema": "node_modules/wrangler/config-schema.json", "main": ".open-next/worker.js", "name": "seeder", "compatibility_date": "2026-04-30", "compatibility_flags": ["nodejs_compat"], "workers_dev": true, "observability": { "enabled": true }, // Per-request CPU ceiling (Workers Paid). Caps worst-case compute per request // so a runaway invocation can't rack up CPU-time cost — it's killed

  • d1 ↗

    quest origin when unset. "assets": { "directory": ".open-next/assets", "binding": "ASSETS" }, "d1_databases": [ { "binding": "PM_DB", "database_name": "seeder", "database_id": "b9596b56-bb58-41be-bcf1-17e30426ec29", "preview_database_id": "b9596b56-bb58-41be-bcf1-17e30426ec29", "migrations_dir": "migrations" } ], "r2_buckets": [ { "binding": "UPLOADS", "bucket_name": "seeder-uploads", "preview_bucket_name": "seeder-uploads"

  • r2 ↗

    eview_database_id": "b9596b56-bb58-41be-bcf1-17e30426ec29", "migrations_dir": "migrations" } ], "r2_buckets": [ { "binding": "UPLOADS", "bucket_name": "seeder-uploads", "preview_bucket_name": "seeder-uploads" } ] }

  • paid ↗

    { "$schema": "node_modules/wrangler/config-schema.json", "main": ".open-next/worker.js", "name": "seeder", "compatibility_date": "2026-04-30", "compatibility_flags": ["nodejs_compat"], "workers_dev": true, "observability": { "enabled": true }, // Per-request CPU ceiling (Workers Paid). Caps worst-case compute per request // so a runaway invocation can't rack up CPU-time cost — it's killed instead. // 30s is the Paid default; well above normal page renders (tens of ms). "limits": { "cpu_ms": 30000 }, // App config is provided at runtime, never committed here: // - locally via `.dev.vars` (copy `.dev.vars.example`) // - in production via Worker vars/secrets (e.g. `wrangler secret put ...`) // Required: OWNER_EMAIL, BETTER_AUTH_SECRET. BETTER_AUTH

  • paid ↗

    The Workers Paid plan includes Workers, Pages Functions, Workers KV, Hyperdrive, and Durable Objects usage for a minimum charge of $5 USD per month for an account. The plan includes increased initial usage allotments, with clear charges for usage that exceeds the base plan. There are no additional charges for data transfer (egress) or throughput (bandwidth).

  • paid ↗

    | Rows read | 5 million / day | First 25 billion / month included + $0.001 / million rows |

  • paid ↗

    | Storage | 10 GB-month / month |

  • paid ↗

    | Class A Operations | 1 million requests / month |

  • paid ↗

    | Class B Operations | 10 million requests / month |

  • paid ↗

    | Rows written | 100,000 / day | First 50 million / month included + $1.00 / million rows |

  • MIT ↗

    MIT License Copyright (c) 2026 Daniel Syauqi and Thaqif Rosdi Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, O

  • architecture ↗

    { "$schema": "node_modules/wrangler/config-schema.json", "main": ".open-next/worker.js", "name": "seeder", "compatibility_date": "2026-04-30", "compatibility_flags": ["nodejs_compat"], "workers_dev": true, "observability": { "enabled": true }, // Per-request CPU ceiling (Workers Paid). Caps worst-case compute per request // so a runaway invocation can't rack up CPU-time cost — it's killed instead. // 30s is the Paid default; well above normal page renders (tens of ms). "limits": { "cpu_ms": 30000 }, // App config is provided at runtime, never committed here: // - locally via `.dev.vars` (copy `.dev.vars.example`) // - in production via Worker vars/secrets (e.g. `wrangler secret put ...`) // Required: OWNER_EMAIL, BETTER_AUTH_SECRET. BETTER_AUTH

  • architecture ↗

    { "$schema": "node_modules/wrangler/config-schema.json", "main": ".open-next/worker.js", "name": "seeder", "compatibility_date": "2026-04-30", "compatibility_flags": ["nodejs_compat"], "workers_dev": true, "observability": { "enabled": true }, // Per-request CPU ceiling (Workers Paid). Caps worst-case compute per request // so a runaway invocation can't rack up CPU-time cost — it's killed

  • architecture ↗

    quest origin when unset. "assets": { "directory": ".open-next/assets", "binding": "ASSETS" }, "d1_databases": [ { "binding": "PM_DB", "database_name": "seeder", "database_id": "b9596b56-bb58-41be-bcf1-17e30426ec29", "preview_database_id": "b9596b56-bb58-41be-bcf1-17e30426ec29", "migrations_dir": "migrations" } ], "r2_buckets": [ { "binding": "UPLOADS", "bucket_name": "seeder-uploads", "preview_bucket_name": "seeder-uploads"

  • architecture ↗

    eview_database_id": "b9596b56-bb58-41be-bcf1-17e30426ec29", "migrations_dir": "migrations" } ], "r2_buckets": [ { "binding": "UPLOADS", "bucket_name": "seeder-uploads", "preview_bucket_name": "seeder-uploads" } ] }

Upstream screenshot · danielsyauqi/Seeder repository contributors ↗. Depicts the upstream project. We have not deployed and tested a fresh installation here.

What it can replace

Compare the workflow you need. These mappings describe overlap; full feature parity requires a separate comparison.

external SaaS target
varies
→ D1 + R2 + Workers

How it works

The shape of Seeder on Cloudflare, and how it stacks up against the rented tools it replaces.

Architecture

Diagram of deployment declarations at the reviewed commit. Each app has its own entrypoint; declared resources do not prove runtime calls. Follow file and line sources below.

View upstream source ↗
Public interface
Configured entry points2
seeder
wrangler.jsonc
seeder
wrangler.remote.jsonc
↓
App
seeder
entry
Cloudflare Workers
Entrypoint: .open-next/worker.js
seeder
entry
Cloudflare Workers
↓

Configuration and workflow sources

Reviewed commit 0268c44dd565. Files were read as data; upstream applications and CI jobs were not executed.

Deployment configuration · 2 files
wrangler.jsonc ↗

Cloudflare Workers · compatibility 2026-04-30

seeder · default

Entrypoint: .open-next/worker.js

Static assets: .open-next/assets

  • PM_DB → D1
  • UPLOADS → R2
  • ASSETS → Static assets
wrangler.remote.jsonc ↗

Cloudflare Workers · compatibility 2026-04-30

seeder · default

  • PM_DB → D1
  • UPLOADS → R2

Named environments are separate deployments. Bindings are shown only where declared. Configured routes are URL patterns, not verified application endpoints.

Runtime source · handlers, binding usage and workflow steps

Observed TypeScript/JavaScript declarations from Worker entrypoints and resolved relative imports. Calls and workflow steps may run conditionally; their listed order is not a proven end-to-end request flow. Router declarations may be mounted under a prefix or may not be registered. This shows code wiring, not a successful deployment or runtime test. Dynamic wiring, aliases and generated code may not resolve.

No direct runtime declarations resolved from this snapshot. Generated framework bundles or dynamic entrypoints need manual tracing.

Build and deployment pipeline · 2 GitHub Actions workflows

Repository CI declarations, separate from runtime request processing. Job dependencies and conditions are shown as written; long commands are shortened with an ellipsis; a workflow file does not prove a recent successful run.

CI · .github/workflows/ci.yml ↗

Triggers: push, pull_request

check · no job dependencies declared

  1. actions/checkout@v4actions/checkout@v4
  2. actions/setup-node@v4actions/setup-node@v4
  3. Shell commandnpm ci
  4. Lintnpm run lint
  5. Typechecknpx tsc --noEmit
  6. Testnpm test
  7. Buildnpm run build
Publish container image · .github/workflows/publish-container.yml ↗

Triggers: push, workflow_dispatch

publish · no job dependencies declared

  1. Check out repositoryactions/checkout@v6
  2. Set up QEMUdocker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8
  3. Set up Docker Buildxdocker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c
  4. Log in to Docker Hubdocker/login-action@dbcb813823bdd20940b903addbd779551569679f
  5. Log in to GitHub Container Registrydocker/login-action@dbcb813823bdd20940b903addbd779551569679f
  6. Generate image metadatadocker/metadata-action@dc802804100637a589fabce1cb79ff13a1411302
  7. Build and push imagedocker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a
package.json ↗
  • build: next build --webpack
  • build:node: cross-env RUNTIME=node next build --webpack
  • deploy: opennextjs-cloudflare build && opennextjs-cloudflare deploy -- --keep-vars
  • deploy:ci: wrangler d1 migrations apply PM_DB --remote && opennextjs-cloudflare deploy -- --keep-vars

Full upstream document by @danielsyauqi · README.md · snapshot 0268c44

Seeder

Seeder: Your Personal Project Manager

CI License: MIT Docs

A foundational project manager for small teams — simple to run, and yours to fork. Runs on Cloudflare Workers (D1 + R2) or a single Node VM, built with Next.js, Drizzle ORM, Better Auth, and Tailwind.

📖 Full documentation: seederpm.xyz/docs

Philosophy

Project tools tend toward two extremes: the heavyweight complexity of Jira, or lightweight boards small teams outgrow in a month. Seeder takes the opposite stance:

  • Foundational, not heavy. The essentials a small team needs to run projects, client requests, and day-to-day execution — productive immediately.
  • Yours to fork. It's open source. Customization is a change to your own copy — add the field, view, or workflow you need without waiting on a roadmap, a plan upgrade, or any lock-in.
  • A small core, on purpose. Keep the core minimal and solid; the rest is yours to build on.

Features

  • Projects & Kanban — tasks with categories, multi-tag labels, phases, priorities, assignees, due dates, and per-project code numbers.
  • Client requests — a separate inbound queue (new → reviewed → converted → closed) that converts into tasks.
  • Public client board — an opt-in, token-gated read-only view to share progress with clients without giving them an account.
  • Daily planner — an adhoc/project daily task queue with drag-to-reorder.
  • Rich text & comments — TipTap-powered descriptions, notes, and comments (Markdown-aware) with images and tables.
  • Activity feed — every change is logged with before→after diffs, whether it comes from the UI or an AI assistant.
  • Roles, invites & notifications — owner/admin/member roles, invite-only onboarding with a first-owner bootstrap, and in-app notifications.
  • White-labeling — customizable system name, logo, favicon, and accent color.
  • Built-in MCP server — let AI assistants read and edit your data over the Model Context Protocol (docs).

Quick start

Seeder 2.1: GitHub/GitLab integration, commit details on task cards, guided MCP client setup, and smoother navigation. See the release notes for features and required upgrade steps.

npm install
npm run setup   # interactive wizard: dev / production (node) / production (cloudflare)
npm run dev     # local dev — Miniflare simulates D1 + R2, no Cloudflare account

npm run setup generates the env + config (and, for the node target, the PM2/systemd/Docker + reverse-proxy artifacts). On first run, create the owner account at /sign-in — sign-up is permitted only for the configured OWNER_EMAIL and only while the instance has no users; after that, onboarding is invite-only.

Prefer to wire it up by hand? See the manual setup guide.

Documentation

Everything lives at seederpm.xyz/docs:

All documentation lives on the docs site — this README stays intentionally short.

MCP server

Seeder ships a built-in Model Context Protocol server at /api/mcp, so AI assistants can read and edit your projects, tasks, requests, comments, and settings — it deploys with the app, so every instance gets it for free. Mint a token at Settings → API tokens (read, or read & write), then point your client at https://<your-domain>/api/mcp with the token as a Bearer header. A token can never do more than the user who created it, and every change shows in the Activity feed. Full tool list and setup: seederpm.xyz/docs/mcp.

Forks in the wild

Seeder is yours to fork — and people do. Community variants built on top of it:

  • goutou by @jhfnetboy — a Seeder variant that adds multi-repo Claude Code coordination skills (狗头军师): a "commander" dispatches work to a central board and per-repo "soldiers" pick it up over the MCP bus.

Built your own variant? Open an issue or a PR adding it here.

Support

Hit a bug or have an idea? Open an issue on GitHub, or email seeder.admin@gmail.com.

Contributing

Contributions are welcome! See CONTRIBUTING.md for local setup, the pre-PR checks (lint, type-check, tests, build), and conventions — CI runs the same gates on every pull request.

Security

Please report vulnerabilities privately via the process in SECURITY.md. Don't open public issues for security problems.

Acknowledgements

A massive thank you to Thaqif Rosdi (@takippu) — Seeder grew out of his original idea, first built as northstar-pm, and it wouldn't exist without it. 🙏

Contributors

Manuele J. Sarfatti (@mjsarfatti)

Manuele J. Sarfatti (@mjsarfatti) — contributed the responsive Kanban layout fix and the navigation progress experience.

License

MIT © 2026 Daniel Syauqi (@danielsyauqi) and Thaqif Rosdi (@takippu)

The code is free to use, fork, and modify under MIT — just keep the copyright notice and license intact (see NOTICE). The Seeder name and logo are trademarks and are not covered by the MIT License: you can fork the code, but not the brand. See TRADEMARK.md.


Made by @danielsyauqi and @takippu.

Frequently asked about Seeder

What is Seeder?+

Seeder is a self-hosted Trello alternative built on the Cloudflare developer platform. A self-hosted project workspace and task boards for small teams

What does Seeder replace?+

Seeder is listed as an alternative to Trello. Compare the features and tradeoffs before migrating.

What Cloudflare primitives does Seeder use?+

Seeder is built on D1, R2, Workers.

How much does Seeder cost to run?+

The committed cpu_ms=30000 explicitly targets Workers Paid, starting at $5 USD/account/month plus D1/R2 usage beyond included amounts. Supply an owner email, auth secret and production URL. Do not reuse the maintainer resource IDs present in the example configuration. Create your own database and uploads bucket, apply migrations and set BETTER_AUTH_SECRET and the intended owner before opening registration. The config notes ordinary SSR renders can take tens of milliseconds; a free-hosting claim is not defensible for this committed path. Source and configuration review establishes a deployment path and conditional costs; this candidate was not executed or load-tested. Check current Cloudflare pricing before deploying.

Is Seeder open source?+

The upstream repository declares the MIT license. Read its terms at https://raw.githubusercontent.com/danielsyauqi/Seeder/0268c44dd565257f4ff5074e03bb9b3ac285ef5f/LICENSE. Source code and contributor credit are available at https://github.com/danielsyauqi/Seeder.

Discussion · 0

sign in to comment →
No comments yet — be the first.