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, 事件响应平台, 安全插件, 安全防御评估, 搜索引擎查询, 测试用例, 特征检测, 自动化攻击, 请求拦截