惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
月光博客
月光博客
T
Tailwind CSS Blog
Y
Y Combinator Blog
L
Lohrmann on Cybersecurity
Latest news
Latest news
H
Heimdal Security Blog
MongoDB | Blog
MongoDB | Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
阮一峰的网络日志
阮一峰的网络日志
C
CXSECURITY Database RSS Feed - CXSecurity.com
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Google DeepMind News
Google DeepMind News
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
D
Darknet – Hacking Tools, Hacker News & Cyber Security
G
Google Developers Blog
博客园 - 三生石上(FineUI控件)
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Recent Announcements
Recent Announcements
小众软件
小众软件
Security Archives - TechRepublic
Security Archives - TechRepublic
The Cloudflare Blog
T
Threatpost
S
Secure Thoughts
N
Netflix TechBlog - Medium
V2EX - 技术
V2EX - 技术
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog
Simon Willison's Weblog
Simon Willison's Weblog
G
GRAHAM CLULEY
人人都是产品经理
人人都是产品经理
M
MIT News - Artificial intelligence
C
Cisco Blogs
C
CERT Recently Published Vulnerability Notes
爱范儿
爱范儿
SecWiki News
SecWiki News
The GitHub Blog
The GitHub Blog
有赞技术团队
有赞技术团队
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
D
DataBreaches.Net
S
Security @ Cisco Blogs
B
Blog RSS Feed
N
News and Events Feed by Topic
V
Visual Studio Blog
P
Proofpoint News Feed
Last Week in AI
Last Week in AI
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
Team workspaces on orkestr, and the ownership-transfer problem
Stefan Iancu · 2026-05-18 · via DEV Community

Introducing the Team Plan on orkestr

Imagine this scenario: You signed up for a Team plan a year ago. Your card is on file. You hired two engineers, invited them, and they've shipped most of the production work since. Now, you're leaving the company.

On most SaaS platforms, this is the moment you have to open a support ticket:

"Hi, can the new tech lead take over the subscription? Also all 12 projects. Also the domains. Also the audit log." Three business days later, you get an email asking for "verification" of something.

The Team plan launched on orkestr today. The entire flow is built right into the dashboard, and an ownership transfer takes about 90 seconds end-to-end.

Here is what is shipping today, and why building it was harder than it looks.


What Ships Today

  • Explicit Team Workspaces: Create a team, invite members by email, and switch workspaces from the top bar. Personal projects stay personal; team projects are visible to the team.
  • Shared Plan Budgets: Your Team plan's 15-project allowance is shared across your personal workspace and the team. The team owner's plan applies to team projects automatically.
  • Role-Aware Features: Members can see who created each project. To protect infrastructure, members cannot delete team projects—only the owner can. Additionally, the activity feed shows team-tagged actions to all members.
  • Seamless Ownership Transfer: If the owner wants out, they can hand the team (and every project and function inside it) to another member atomically. This requires a quick 1 EUR card verification from the new owner. The old owner's subscription gets canceled, and the new owner's billing cycle seamlessly picks up on the original renewal date.

Pricing: Team is available for 29.99 EUR/month or 299 EUR/year via the Pricing Page. It features the same EU-hosted infrastructure as every other plan, with no US data transfers.


The Workspace Model

The word "workspace" is heavily overloaded in SaaS, so it's worth specifying how it works here.

orkestr features exactly two workspace contexts: Personal and Team. An early draft included a third context called "All Workspaces"—a unified dashboard showing everything across every team you are in. After testing it on staging for a week, it was completely ripped out. It made security scoping invisible, and data scoping is a detail that should be explicit, not implicit.

The active workspace is now part of every backend request. If you are a member of a team and you open the projects page, you will not see the owner's untagged personal projects. This isn't hidden by the UI; the backend simply never returns them.

Expanding Scope for Plan Limits

The one place where scope expands automatically is plan limits. A project's plan is tied to whoever owns it. If you are on the free tier but working on a project within a paid Team workspace, you get full Team-plan limits on that project:

  • Rollbacks
  • Custom domains
  • Expanded CPU and memory budgets
  • IP allowlists

You won't hit any "upgrade to Pro" walls inside a team that is already being paid for.


Shared Budgets and Role-Aware Counts

The 15-project limit on the Team plan is a single budget split across both personal and team contexts.

If you (the owner) have 5 personal projects and your team has 8 team projects, you have used 13 of your 15 allowed projects. However, your team members will only see "8 of 15" on their dashboard. Their personal projects do not count against the team's budget, and they shouldn't see how many personal projects you hold. Even leaking the raw count feels like a privacy violation.


Total Team Budget: 15 Projects
├── Owner's View:   5 Personal + 8 Team = 13/15 Used
└── Member's View:  8 Team Projects     =  8/15 Used

Enter fullscreen mode Exit fullscreen mode

This is the kind of detail that nobody notices when it's right, and everyone notices when it's wrong. The same logic applies to the activity feed: members see team-tagged actions from everyone plus their own personal actions, but never the owner's personal actions. The same goes for domains, add-ons, and deployments.


Solving the Invite Flow & Email Mismatch

Invites are entirely email-based. The owner enters an email, the system creates a TeamInvite row, and the invitee gets a link. Standard practice.

However, a common, annoying edge case occurs when an invitee already has an orkestr account, but under a different email. For example, they signed up with firstname@gmail.com for personal use, but you invited their work email: firstname@company.com. Most platforms either silently match the accounts (which is dangerous, as emails are not identity) or hard-fail and tell the owner to try again.

orkestr handles this gracefully. The acceptance page displays:

"This invite was sent to firstname@company.com. Your account email is firstname@gmail.com. Are these the same person?"

If the invitee confirms, the system logs both emails on the membership row and grants access. If they say no, the invite stays open for whoever actually controls that email address. This tiny UX detail eliminated roughly half of the anticipated support tickets.


Re-engineering Ownership Transfer

Until recently, if a Team-plan owner wanted to leave a team, they had one option: remove every member, delete every team project, cancel their subscription, and let the data evaporate. That isn’t an ownership transfer; that's burning down the office and leaving.

Here is how the new, 90-second automated flow works:

  1. Owner Requests Transfer: The current owner selects a team member and checks a consent box acknowledging they will lose access to all team projects and functions.
  2. Target Notified: If the target teammate isn't on a Team plan yet, they are prompted to subscribe. A team cannot be handed over to an account whose plan limits cannot support the existing resources.
  3. Target Pays 1 EUR: This is a Mollie card verification, not a real charge. It serves two purposes: it proves the new card is valid before handing over a subscription, and it satisfies EU consumer protection rules requiring an explicit, attributed action before initiating a recurring charge.
  4. Atomic Swap: Once Mollie confirms the verification, a single database transaction reassigns the team, every project, and every function in one go. Either every write succeeds, or the entire transaction rolls back.
  5. Subscription Handover: The new owner's billing cycle starts exactly on the day the old owner's subscription would have renewed. The old owner's subscription is canceled, and the 1 EUR verification fee is refunded.

Aligning the start date to the original renewal date prevents both parties from double-paying or losing paid days, completely eliminating a common customer service trap.


What’s Not in This Release

To be completely transparent, a few features didn't make the cut for today's launch:

  • No Automatic Expiry on Pending Transfers: Right now, transfer requests sit open indefinitely until someone explicitly cancels or accepts them. A 7-day default expiration will be added soon.
  • No Multi-Owner Teams: There is a strict limit of one owner per team. Co-ownership introduces entirely different database invariants and security complexities, and we didn't want to ship a half-baked version of it.

If you’ve been waiting for team collaboration features, you can get started right now at orkestr.eu/pricing. If you’re already on a Pro plan and want to bring your engineers onboard, you can find the upgrade toggle directly in your workspace settings.