kartik-sharma-0786/NexaOps

GitHub: kartik-sharma-0786/NexaOps

NexaOps 是一个基于 TypeScript 全栈构建的多租户 B2B 事件响应平台,通过租户隔离、角色权限和实时更新来简化工程团队的事件管理流程。

Stars: 1 | Forks: 0

# NexaOps 一个强大、多租户的 B2B 事件响应平台,旨在为现代工程团队简化事件管理流程。提供实时更新、基于角色的访问控制以及企业级隔离。 ## 技术栈 构建时专注于类型安全、可扩展性和可维护性。 - **Monorepo**:Turborepo / Nx - **语言**:TypeScript (Strict) - **前端**:Next.js 14+ (App Router)、TanStack Query、React Hook Form - **后端**:NestJS (模块化架构) - **数据库**:PostgreSQL (配合 Drizzle ORM) - **基础设施**:Docker & Redis (使用 BullMQ 作为队列) - **实时通信**:WebSockets ## 核心功能 - **多租户**:使用行级安全 (RLS) 逻辑实现租户间严格的数据隔离。 - **RBAC**:通过 Guard 中间件为管理员、响应者和查看者提供细粒度的权限控制。 ## 运维 - **CI/CD**:使用 GitHub Actions 进行自动化测试和 linting。 - **可观测性**:通过 `/health` endpoint (Terminus) 监控数据库和内存的健康状态。 - **容器化**:为 API、Web、Postgres 和 Redis 提供全面的 Docker 支持。 ### Vercel 部署说明 如果你在 Vercel 上部署 API 或完整应用,必须将 `DATABASE_URL` 指向托管的 Postgres 实例,例如 Neon、Supabase 或 Vercel Postgres。Docker Compose 的主机名 `postgres` 仅在本地或 VPS 容器栈中有效,在 Vercel 上会返回数据库错误。 如果你仅在 Vercel 上部署 Web 应用,请将 `NEXT_PUBLIC_API_URL` 设置为你已部署的 API URL,并确保在 Vercel 项目的环境变量中配置了 `NEXTAUTH_URL` 和 `NEXTAUTH_SECRET`。 ## 项目结构 本项目采用 monorepo 架构,以分离关注点并共享逻辑。 ``` /apps ├── web # Next.js Frontend Dashboard └── api # NestJS Backend Service /packages ├── database # Shared Drizzle/Prisma schema & client ├── ui # Shared React component library └── typescript # Shared TS Configuration ``` ## 快速开始 ### 前置条件 - Node.js (v20+) - Docker & Docker Compose - pnpm (推荐) ### 安装说明 1. **克隆仓库** git clone https://github.com/yourusername/nexaops.git cd nexaops 2. **运行基础设施与应用 (Docker)** 使用单个命令运行整个技术栈 (API、Web、数据库、Redis): docker-compose up --build 3. **手动开发环境设置 (可选)** 如果你更喜欢使用 Node.js 在本地运行应用: docker-compose up -d postgres redis pnpm install pnpm db:migrate pnpm db:seed pnpm dev ## 质量与测试 我们坚信“看不见的工作”最为重要。 - **E2E 测试**:使用 **Playwright** 对全面流程进行测试。 - **CI/CD**:GitHub Actions pipeline,在每次推送时进行 linting、测试和构建验证。 - **ADR**:请参阅 [/docs/adr](./docs/adr) 查看架构决策记录,了解我们的技术权衡(例如,_为什么选择 Postgres 而不是 Mongo?_)。 ## 许可证 MIT
标签:B2B应用, Docker, NestJS, RBAC, SaaS多租户, TypeScript, 事件响应平台, 安全插件, 安全防御评估, 搜索引擎查询, 测试用例, 特征检测, 自动化攻击, 请求拦截