本地优先企业管理软件

Co-Op是一款本地优先的企业管理软件,专为企业主设计,提供公司规划、研究、文件管理、客户工作和运营决策等功能,所有数据默认存储在本地,仅通过云服务进行账户身份验证和许可证管理。

  • by Afnanksalal
  • TypeScript
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 Afnanksalal/co-op

使用说明

合作

Co-Op是本地第一款用于公司规划、研究、文件、客户工作和运营决策的业务管理软件。安装的桌面应用程序拥有业务工作区。云后端拥有帐户标识和许可证授权。

该产品是为企业主而不是开发人员设计的。日常工作应该感觉像使用私人业务软件,而模型提供商、本地存储、审查门和许可证验证等技术选择则停留在清晰的设置屏幕和文档之后。

生产边界

flowchart LR
  Owner["Business owner"]
  Web["Web account<br/>login, license, download"]
  Cloud["Cloud license API<br/>identity, entitlement, heartbeat"]
  Desktop["Installed desktop app<br/>company work, files, plans, research"]
  Local["Local data<br/>state, files, memory, secrets"]
  Provider["Customer-selected AI<br/>Ollama or BYOK endpoint"]
  Optional["Customer-selected services<br/>web research, email, integrations"]

  Owner --> Web
  Web --> Cloud
  Owner --> Desktop
  Desktop -->|"activate and heartbeat only"| Cloud
  Desktop --> Local
  Desktop --> Provider
  Desktop --> Optional

云服务是有意缩小的。客户提示、输出、公司文件、提供商密钥、外联内容和本地运行历史记录将保留在已安装的计算机上,除非客户明确地将工作路由到配置的外部提供商。

包括什么

  • 公共网站、登录、帐户中心、下载页面、法律页面和管理许可证控制台。
  • NestJS许可证后端用于许可证生成、客户密钥删除、激活、心跳、停用、健康检查和现有用户回填。
  • Tauri桌面应用程序,用于入职培训、Today、Ask、统一的公司工作区、客户、资金、帐户设置、许可证状态、私人文件、本地搜索、商业记忆、工作计划、研究、外联、推介审核、计算器和所有权工具。
  • 围绕所有者工作构建的简化桌面导航:今天、询问、公司、客户和金钱。个人资料、文件、记忆和研究在公司下共同存在;设置和许可证位于帐户菜单中。
  • 顾问与实时、面向所有者的进度反馈聊天,以了解上下文加载、文件检查、内存查找、源代码搜索、审查和本地保存步骤。UI显示工作流状态,而不是隐藏的思维链。
  • 通过Ollama或OpenAI兼容的本地优先模型路由带来您自己的关键端点。
  • 源支持市场、竞争对手、法律、客户、定价、投资者和风险研究所需的本地Firecrawl配置,以及可选的重新发送或SendGrid电子邮件发送。
  • 多查询竞争对手研究,在总结有来源支持的直接竞争对手、间接替代品和非竞争对手之前,使用公司、产品、买家和地区背景。
  • 业务主题范围、源代码支持的外部事实、提示注入阻力、秘密保护、无代码执行和输出检查的运行时护栏。
  • 架构、许可、编排、操作、数据边界、定位、审计和贡献规则的文档。

什么不包括在内

  • 用于客户工作流执行的托管业务仪表板。
  • 移动包装。
  • 托管文档或聊天服务。
  • 单独的强制性矢量服务。
  • 存储原始许可证密钥、激活令牌、提供者密钥、提示、文件或客户输出的任何云路径。

在没有记录的产品决定的情况下,不应重新引入这些区域。

仓库的规划

backend/              NestJS cloud license control plane
frontend/             Next.js web app and Tauri desktop UI
frontend/src-tauri/   Rust runtime for local activation, storage, providers, and workflows
docs/                 Architecture, operations, licensing, data, and product references
AGENTS.md             Operating contract for humans and coding agents

重要的实施锚点:

  • backend/src/modules/licenses/ 包含激活、心跳、停用、自助服务和管理许可证流。
  • backend/src/database/schema/licenses.schema.ts 是云许可证模式的真实来源。
  • frontend/src/app/ 包含公共web路由、帐户路由、管理员路由、法律页面和桌面路由。
  • frontend/src/components/desktop/ 包含已安装的桌面UI模块。
  • frontend/src/components/desktop/navigation.ts, desktop-header.tsx,以及 desktop-sidebar.tsx 定义简化的面向所有者的shell。
  • frontend/src/lib/desktop/runtime/ 包含React和Tauri之间的类型化客户端边界。
  • frontend/src-tauri/src/ 包含用于许可、设置、工作区、聊天、文件、研究、源计划、外联、工具、提供商、存储、验证、安全和机密的本地运行时模块。

托管Web和桌面分离

托管的web应用程序用于营销、身份验证、帐户管理、下载和管理员许可。它不得将已安装的桌面应用程序作为托管生产产品公开。

生产web构建块 /desktop 和 /local 路线。桌面构建设置了Tauri导出环境,以便安装的应用程序可以从捆绑的静态文件中渲染本地shell。

先决条件

  • Node.js 20或更新版本。
  • npm 10或更新版本。
  • 防锈稳定。
  • Tauri系统是目标操作系统的先决条件。
  • 后端的PostgreSQL兼容数据库。
  • 云身份验证的Supabase项目。

后端设置

cd backend
npm install
cp .env.example .env
npm run db:migrate
npm run dev

所需后端变量:

变量 目的
DATABASE_URL PostgreSQL连接字符串
DATABASE_SSL_REJECT_UNAUTHORIZED 设置为 true 除非数据库提供者要求记录异常。
SUPABASE_URL Supabase项目URL
SUPABASE_ANON_KEY Supabase公钥用于验证用户会话。
LICENSE_KEY_PEPPER 用于密钥许可证和激活令牌哈希的强服务器密钥。
CORS_ORIGINS 生产环境中以逗号分隔的可信web源。
LICENSE_OFFLINE_GRACE_DAYS 可选的桌面脱机宽限期窗口。
SUPABASE_SERVICE_KEY 现有用户许可证回填的可选一次性密钥。

前端和桌面设置

cd frontend
npm install
cp .env.example .env.local
npm run dev

所需的前端变量:

变量 目的
NEXT_PUBLIC_SUPABASE_URL 为浏览器身份验证提供项目URL。
NEXT_PUBLIC_SUPABASE_ANON_KEY suabase浏览器匿名密钥。
NEXT_PUBLIC_API_URL 后端API URL,通常以结尾 /api/v1.
NEXT_PUBLIC_APP_URL 公共web应用程序URL
COOP_CLOUD_URL 云源的可选桌面构建覆盖。

桌面开发:

cd frontend
npm run tauri:dev

桌面发布版本:

cd frontend
npm run build:tauri
npm run tauri:build

发布安装程序写在 frontend/src-tauri/target/release/bundle/.

验证

迭代时运行狭义检查。在装运产品更改之前,请运行完整套件:

cd backend
npm test
npm run build
npm audit --audit-level=low

cd ../frontend
npm run typecheck
npm run build
npm run build:tauri
npm audit --audit-level=low
npm run audit:rust

cd src-tauri
cargo test
cargo clippy --all-targets -- -D warnings

当需要桌面安装程序时,还要运行:

cd frontend
npm run tauri:build

安全原则

  • 切勿记录原始许可证密钥、激活令牌、提供者密钥、提示、文件或客户输出。
  • 仅将后端许可证密钥和激活令牌存储为密钥哈希。
  • 将桌面激活令牌和提供程序密钥存储在操作系统凭据存储中。
  • 将业务工作流保持在已安装应用程序的本地。
  • 在将工作路由到外部AI、研究、电子邮件或集成提供商之前,需要明确的客户配置。
  • 拒绝可执行代码请求,并且不从桌面运行时公开shell执行。
  • 需要web源进行外部事实业务工作,并在源不可用时失败关闭。
  • 将生产CORS限制在已知来源。
  • 保持 /desktop 和 /local 在托管的生产web构建中不可用。

私下向报告安全问题 contact@co-op.software.

文档

  • AGENTS.md -存储库操作合同。
  • docs/ARCHITECTURE.md -云、web、桌面和本地运行时架构。
  • docs/LICENSING.md -许可证生命周期、激活、心跳、撤销和回填。
  • docs/AGENT_ORCHESTRATION.md -本地顾问/工作流程管理和审查政策。
  • docs/DATA_PLANE.md -本地存储、文件内存和可选的自主机方向。
  • docs/OPERATIONS.md -开发、部署、发布、清理和事件响应。
  • docs/PRODUCT_POSITIONING.md -面向所有者的语言、市场地位、入职培训和用户体验栏。
  • docs/CODEBASE_AUDIT.md -模块化和可维护性审计。
  • docs/FEATURE_RESTORATION_AUDIT.md -恢复了特征族和生产硬化状态。

许可证

麻省理工学院