盈满的
  
一个用Ruby on Rails构建的Stack Overflow风格的问答平台。
由开发 紧线有限责任公司
特性
核心问答
- 问题与答案 -用户在Spaces中发布问题,其他人提供答案
- 投票系统 -社区对问题/答案的投票,按分数排序
- 节制 -空间管理员可以将答案标记为“已解决”
- 评论 -关于问题和答案的嵌套评论线程(最多3个级别)
- 标签 -按空格标记问题(每个问题最多5个)
知识库
- 条款 -用于文档和指南的长篇权威内容
- 多种内容类型 -Markdown、HTML、PDF、Word、Excel和网页导入
- 网页导入 -通过Jina.ai或自托管Firecrawl从URL获取内容
- 内容提取 -从上传的文件中自动提取文本以进行搜索索引
搜索与人工智能
- 混合搜索 -PostgreSQL全文搜索与pgvector语义回退
- RAG集成 -基于嵌入的内容分块用于检索增强生成
- 问答向导 -从文章和知识库生成基于人工智能的常见问题解答
- 可配置的提供者 -支持OpenAI、Cohere、Ollama和其他嵌入/LLM提供商
用户体验
- 用户档案 -Karma系统,包含问题、答案和最佳答案的统计数据
- 书签 -保存问题、答案、评论和文章以备后用
- SSO支持 -具有组到空间映射的LDAP/ActiveDirectory
即将推出
- 电子邮件摘要 -可配置每帖、每日或每周通知
- REST API -用于编程访问的完整API
- MCP服务器 -通过模型上下文协议集成AI助手
- 社交SSO -谷歌、GitHub、领英等
技术栈
- 后端:Ruby on Rails 8.1,PostgreSQL 17(带pgvector+pg_trgm)
- 后台作业:配备Valkey 9.0的Sidekiq
- 搜索:PostgreSQL全文搜索+用于语义搜索的pgvector
- 部署:Docker,适用于Kubernetes的Helm 3.x
快速开始
先决条件
- Docker和Docker Compose
- 制造
设置
# Clone the repository
git clone https://github.com/Tight-Line/brimming.git
cd brimming
# Set up the development environment
make setup
# Start all services
make up
# Access the application at http://localhost:33000发展
所有开发命令都使用Makefile来保持一致性:
| 命令 | 描述 |
|---|---|
make setup | 初始项目设置 |
make up | 启动所有服务 |
make down | 停止所有服务 |
make restart | 重新启动所有服务 |
make logs | 尾部服务日志 |
make shell | 在开发容器中打开bashshell |
make console | 打开Rails控制台 |
make server | 启动Rails服务器 |
数据库
| 命令 | 描述 |
|---|---|
make db-create | 创建数据库 |
make db-migrate | 运行挂起的迁移 |
make db-rollback | 回滚上次迁移 |
make db-reset | 拖放、创建、迁移和播种 |
make db-seed | 加载种子数据 |
测试
我们要求所有代码都有100%的测试覆盖率。
| 命令 | 描述 |
|---|---|
make test | 在覆盖范围内运行所有测试 |
make test-models | 运行型号规格 |
make test-requests | 运行请求规格 |
make test-jobs | 运行作业规范 |
make coverage | 生成覆盖率报告 |
代码质量
| 命令 | 描述 |
|---|---|
make lint | 运行RuboCop过梁 |
make lint-fix | 自动修复棉绒问题 |
make security | 运行安全扫描 |
舵
| 命令 | 描述 |
|---|---|
make helm-lint | Lint Helm图表 |
make helm-test | 运行Helm图表测试 |
CI管道
make ci # Run full CI pipeline (lint, security, test, helm)部署
Docker Compose(类似于生产环境)
docker-compose up -dKubernetes(Helm)
# Install with internal PostgreSQL and Valkey
helm install brimming helm/brimming \
--set rails.secretKeyBase="$(openssl rand -hex 64)" \
--set postgresql.auth.password="$(openssl rand -hex 32)" \
-n brimming \
--create-namespace
# Or use custom values file
helm install brimming helm/brimming \
-f my-values.yaml \
-n brimming \
--create-namespaceHelm chart支持:
- 内部或外部PostgreSQL(带pgvector)
- 内部Valkey子部件或外部Redis
- 水平Pod自动缩放
- 带TLS的入口
- Pod中断预算,实现高可用性
看 helm/brimming/values.yaml 对于所有配置选项。
配置
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
DB_HOST | PostgreSQL主机 | postgres |
DB_PORT | PostgreSQL端口 | 5432 |
DB_USER | 数据库用户 | brimming |
DB_PASS | 数据库密码 | - |
DB_NAME | 数据库名称 | brimming |
REDIS_URL | valkey/redis URL | redis://valkey:6379/0 |
SECRET_KEY_BASE | Rails密钥 | - |
SMTP_HOST | SMTP服务器主机名 | - |
SMTP_PORT | SMTP服务器端口 | 587 |
SMTP_TLS | 启用TLS(true/false) | - |
SMTP_USER | SMTP用户名(可选) | - |
SMTP_PASS | SMTP密码(可选) | - |
SMTP_AUTH | SMTP身份验证方法 | plain |
MAILER_FROM | 默认发件人电子邮件 | noreply@brimming.local |
数据库模式
所有应用程序表都是在 brimming 架构(不是 public).这是将应用程序表与PostgreSQL系统对象分离的最佳实践。
- 数据库名称:
brimming在除测试外的所有环境中(brimming_test) - 模式:
brimming(搜索路径:brimming,public) - 控制台访问:
make db-console使用正确的search_path打开psql
开发服务
所有开发服务都通过Docker Compose运行,并使用非标准端口以避免冲突:
| 服务 | URL | 凭据 |
|---|---|---|
| Web应用程序 | http://localhost:33000 | 请参阅下面的“测试帐户” |
| Mailhog (电子邮件查看器) | http://localhost:33025 | 无需登录 |
| Phpldapadmin | http://localhost:38080 | 请参阅下面的“LDAP” |
| PostgreSQL | 本地主机:35432 | brimming / brimming_dev |
| Valkey(Redis) | 本地主机:36379 | 无身份验证 |
| OpenLDAP | 本地主机:30389 | 请参阅下面的“LDAP” |
测试账户
运行后 make db-seed,这些帐户可用:
| 电子邮件 | 密码 | 角色 |
|---|---|---|
| admin@example.com | 密码123 | 管理员 |
| sarah.chen@example.com | 密码123 | 用户(主持人) |
| *(所有种子用户)* | 密码123 | 各种 |
LDAP测试用户
使用“使用LDAP登录”登录 用户名 (非电子邮件):
| 用户名 | 密码 | 名称 | 组 |
|---|---|---|---|
| jsmith | 密码123 | John Smith | 工程、经理 |
| 琼斯 | 密码123 | 玛丽·琼斯 | 工程、设计 |
| bwilson | 密码123 | Bob Wilson | 工程、开发 |
| agarcia | 密码123 | Ana Garcia | 设计,经理 |
| dlee | 密码123 | 李 | devops |
Phpldapadmin
要浏览/编辑LDAP数据,请访问http://localhost:38080:
- 登录DN:
cn=admin,dc=brimming,dc=local - 密码:
admin_secret
电子邮件(mailhog)
开发用途 Mailhog 捕获所有传出的电子邮件,而无需实际发送。访问http://localhost:33025查看捕获的电子邮件(无需登录)。
数据库控制台
make db-console # Opens psql with correct schema直接连接: psql -h localhost -p 35432 -U brimming -d brimming
SSO配置
LDAP服务器和组到空间的映射是通过以下位置的管理面板配置的 /admin/ldap_servers社交SSO提供商(即将推出)将可在 /admin/sso_providers.
建筑
flowchart LR
subgraph Ingress
LB[Load Balancer]
end
subgraph App[Application Layer]
App1[Rails App]
App2[Rails App]
end
subgraph Data[Data Layer]
PG[(PostgreSQL
+ pgvector)]
VK[(Valkey)]
end
subgraph Workers[Background Workers]
W1[Sidekiq]
W2[Sidekiq]
end
LB --> App1
LB --> App2
App1 & App2 --> PG
App1 & App2 --> VK
VK --> W1 & W2
W1 & W2 --> PG贡献
看 贡献.md 作为指导方针。
行为准则
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 了解详情。
版权所有(c)2025 紧线有限责任公司
