Fider 功能请求管理平台自托管指南:30 分钟跑通第一条反馈
【免费下载链接】fiderOpen platform to collect and prioritize feedback项目地址: https://gitcode.com/GitHub_Trending/fi/fider
Fider 是一个开源的功能请求管理平台:把散落在邮件、群聊和应用商店里的用户建议集中到一个页面,用投票决定哪些功能先做。读完这篇文章,你会在本地跑起一个可用的 Fider 实例,并完成第一条功能请求的收集与投票。
反馈散落各处,你受够了吗
假设你是某个 SaaS 产品的负责人:用户 A 在邮件里说想要 CSV 导出,用户 B 在群里提了暗色模式,用户 C 在应用商店评论里骂"为什么不能批量操作"。三条反馈,三个地方,没人知道哪条呼声最高。
另一个场景更常见:你想做功能 A,做了两周才发现用户其实更想要 B——因为"想要 B"的信号藏在几十封没被认真看的邮件里。
Fider 做的事情很简单:给所有用户一个统一的反馈入口,提交建议、对已有建议投票、在评论里讨论,最多人支持的排最前面。它用 Go 写后端、React 写前端,数据存在你自己的 PostgreSQL 里,部署之后反馈数据完全掌握在自己手上。
5 分钟在本地跑起 Fider
你的机器需要装好 Go、Node.js 和 Docker,具体版本要求见 CONTRIBUTING.md(Go 1.26+、Node.js 22+)。下面的命令组合就是仓库文档里给出的最短启动路径:
# 克隆仓库 git clone https://gitcode.com/GitHub_Trending/fi/fider cd fiderdocker compose up -d # 启动 PostgreSQL(5555 端口)和本地 SMTP 服务 MailHog cp .example.env .env # 复制配置模板,数据库和邮件地址已按 compose 配好 go install github.com/cosmtrek/air # 装代码热重载工具,make watch 需要 go install github.com/joho/godotenv/cmd/godotenv # 装 .env 读取工具 npm install # 安装前端依赖 make watch # 同时启动后端和前端,改动自动热重载成功后你应该看到什么:浏览器打开 http://localhost:3000,出现 Fider 的注册/登录页 🎉。另外 http://localhost:8025 会打开 MailHog 的网页版收件箱,Fider 发出的每一封邮件(注册验证码、通知)都会显示在这里。
替代方案
- 生产镜像:仓库根目录的 Dockerfile 是多阶段构建,直接
docker build -t fider .即可。镜像启动时会自动执行数据库迁移(./fider migrate && ./fider),监听 3000 端口,并用./fider ping做健康检查。运行时通过环境变量注入配置,最少需要BASE_URL、JWT_SECRET、DATABASE_URL和邮箱相关变量,完整清单看 .example.env。 - 本地二进制:
make build编译出 Go 服务端和前端产物,然后make run启动。
第一次使用:提交并投票你的第一条功能请求
用邮箱登录:在登录页填邮箱,Fider 会发一个验证码(本地环境去 MailHog 网页看,或直接在make watch的终端日志里找,日志会打印验证码内容)。验证码 15 分钟内有效,输错超过 5 次需要重新发送。
登录后回到首页,左侧就是建议输入框。你输入一条标题加描述,点击提交——这条建议立刻出现在首页的列表里,状态为 open(待处理)。邀请同事用另一个邮箱登录,对这条建议投票,你会看到票数以"Most wanted"排序把这条建议顶上去;也可以展开评论区补充讨论。
管理员侧的工作是推进状态。每条建议都有明确状态:open(待处理)、planned(已排入计划)、started(开发中)、completed(已完成)、declined(已拒绝)、duplicate(重复),完整定义在 app/models/enum/post_status.go。在管理后台把一条建议从 open 改成 completed,页面会立刻反映出来,用户也清楚自己提的需求走到哪一步了。
进阶玩法:接下来你能做什么
品牌与外观:管理后台的站点设置可以改站点名、上传 logo(logo 以 blob 形式存储,见 app/models/entity/tenant.go),还支持自定义 CSS 和自定义域名。
权限管理:Fider 把成员分为 visitor(普通成员)、collaborator(协作者)和 administrator(管理员)三级,定义在 app/models/enum/user_role.go。管理员可以在后台的 Members 页面调整成员角色、封禁用户。
第三方登录:在 .env 里填OAUTH_GOOGLE_CLIENTID、OAUTH_GITHUB_CLIENTID等变量即可开启 Google / GitHub / Facebook 登录,入口在后台的 Authentication 页。用 OAuth 登录还能限制哪些角色能进站点,细节写在 docs/OAUTH_ROLE_RESTRICTION.md。
Webhook 集成:后台 Webhooks 页可以订阅"新建议、新评论、状态变更"等事件,推到你的系统里(比如接 Slack 或自己的后端),实现在 app/services/webhook/。
数据导出与备份:后台 Export 页一行点击就能导出全部建议(posts.csv)、标签(tags.json)和整站备份(backup.zip),路由定义在 app/cmd/routes.go,导出逻辑在 app/handlers/backup.go。
多语言:仓库的 locale/ 目录内置了简中、繁中、日、韩、法、德等二十多种语言,用LOCALE环境变量改默认语言。
排坑指南
症状:启动即崩溃,日志报could not find environment variable named 'BASE_URL'(或 JWT_SECRET、DATABASE_URL)原因:单主机模式下 Fider 启动时会强校验必需的环境变量,缺一个就 panic,校验逻辑在 app/pkg/env/。 解决:用cp .example.env .env生成配置后,逐项确认BASE_URL、JWT_SECRET、DATABASE_URL和EMAIL_*都填了值。
症状:点"发送验证码"后邮箱收不到信原因:SMTP 没配置或指向了不存在的服务器。 解决:本地开发用 compose 自带的 MailHog(SMTP 端口 1025,网页版在 http://localhost:8025),且验证码同时会打印在服务端日志里;生产环境配置EMAIL_SMTP_*系列变量,或改用 Mailgun / AWS SES,三种实现的代码都在 app/services/email/。
症状:docker compose up -d之后访问 localhost:3000 没有反应原因:仓库里的 docker-compose.yml 只负责拉起 PostgreSQL、MailHog 等依赖服务,Fider 应用本身不在其中。 解决:应用要靠make watch(开发)或make run(生产构建)启动;或者干脆用 Dockerfile 构建生产镜像来跑。
症状:3000 端口被占用原因:Fider 默认监听 3000 端口。 解决:通过PORT环境变量改端口即可。
适合谁 & 下一步
Fider 适合想把产品反馈数据留在自己服务器上、又不想从零开发一套投票排序系统的团队——小到独立开发者的 roadmap 页,大到需要审计合规的中大型产品。跑起来之后,日常操作看后台界面就够;想深入代码时,app/cmd/routes.go 是最快的地图,它把网页、管理后台和 REST API 的路由全部列在同一个文件里。问题反馈和功能建议可以直接提 issue,也可以像普通用户一样投到你想要实现的建议上。
【免费下载链接】fiderOpen platform to collect and prioritize feedback项目地址: https://gitcode.com/GitHub_Trending/fi/fider
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考