https://github.com/evannotfound/questionbox
https://github.com/evannotfound/questionbox
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/evannotfound/questionbox
- Owner: EvanNotFound
- Created: 2023-07-01T03:41:39.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-07-02T01:46:32.000Z (almost 3 years ago)
- Last Synced: 2025-02-01T05:26:15.336Z (over 1 year ago)
- Language: JavaScript
- Homepage: https://question-box-kappa.vercel.app
- Size: 2.98 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 私有部署提问盒
这两年提问盒形式的匿名问答越来越多了,像在朋友圈流行的 Popi,在推特流行的那个匿名提问箱,还有以前 QQ 的悄悄话。玩这类匿名社交最有意思的事情就是猜测提问者是谁,提问者提问时的心态。读者在看提问盒的回答历史的时候可以快速建立回答者的初步形象,然后进一步推断作者是一个什么样的人。
## 匿名?
但是,匿名问答,真的可以匿名吗?很难!数据和流量太过重要,没有人可以舍弃,就算是那些声称极为注重隐私的公司,也会默默收集用户的页面浏览信息(例如浏览时长,用户来源,用户 IP 地址等)。我在最开始的时候并不想收集任何信息,希望做一个完全匿名,没有任何额外信息收集的提问箱,但是后来遇到了轰炸式提问,几分钟发了几十条,非常影响体验,所以我觉得还是要有所限制的(因为需要限定固定 IP 轰炸)。
## 社交监管?
众所周知,社交类应用有许多的限制,个人基本上不能搞社交类应用,特别是那些想要上架应用市场的,任何 UGC 都是要审查的,而且,网络上鱼龙混杂,难免有脚本小子来轰炸小网站,所以部署在自己的服务器上不是特别安全。
正好没开发过 Vercel 相关的应用,nextjs 也是久闻大名,我想是时候了,该上手试试。
## 物料准备
本来我想着 vercel 没有配套的数据库服务,用起来会很麻烦,所以就找个 SaaS 平台放数据,于是就想到了以前用过的 LeanCloud,知名的博客评论应用 Valine 就是用的这个服务商,基本上花不了什么钱,而且他们的文档写的很丰富,相当不错。缺点是部分功能需要自己的域名,而且要是备案过的域名。
当然,你也可以在自己的服务器上部署本项目,不过你仍然需要 LeanCloud 的数据库作为支撑,在下一个大版本我会提供更多的存储介质支持,并用 Vue 对项目进行重写。相关教程可以看这篇文章 https://www.tanknee.cn/2023/03/03/17。
> 之前我也打算做一个使用本地数据库的分支,这样就能直接部署到 railway 这样的平台上了(我是快写完了才发现有这样一个平台)。
所以我们需要以下准备:
* 一个 LeanCloud 账号
* 一个备案过的域名
* 一个 GitHub 账号
## 部署步骤
首先打开 [LeanCloud](https://www.leancloud.cn/) 平台,创建一个新应用:
> LeanCloud 国际版已经通过测试,国际版不需要国内域名,可以直接使用 LeanCloud 提供的服务域名!

选择免费版即可,完全足够。
然后前往应用的设置-应用凭证页面保存凭证信息:

> 理论上这个临时服务器地址是可以用的,不过我还是建议使用自己的域名。
然后点击数据存储-结构化数据-创建 Class

此处我们需要创建三个类,分别是:
* Answer:存放回答
* Question:存放提问
* Settings:存放一些设置信息,例如页面标题
接下来我们可以点击[](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FTankNee%2FAnonymousQuestionBox\&env=PORT,LEANCLOUD_APP_ID,LEANCLOUD_APP_KEY,LEANCLOUD_SERVER_URL,USER_KEY,MAILER_ACCOUNT,MAILER_PASSWORD,MAILER_HOST\&envDescription=%E8%AF%B7%E6%AD%A3%E7%A1%AE%E5%A1%AB%E5%86%99%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%EF%BC%8C%E8%AF%A6%E7%BB%86%E8%A7%A3%E9%87%8A%E8%AF%B7%E6%9F%A5%E7%9C%8B%E4%BB%93%E5%BA%93%20README\&envLink=https%3A%2F%2Fgithub.com%2FTankNee%2FAnonymousQuestionBox)来在 vercel 上部署提问箱。环境变量需要正确填写,否则可能引发未知错误。
* PORT(**必需**):运行端口,直接填写 4000 就好。
* LEANCLOUD\_APP\_ID(**必需**):填写上文获取到的 LeanCloud 应用 APP ID 信息。
* LEANCLOUD\_APP\_KEY(**必需**):填写上文获取到的 LeanCloud 应用 APP KEY 信息。
* LEANCLOUD\_SERVER\_URL(**必需**):填写上文获取到的 LeanCloud 应用服务器地址信息。
* USER\_KEY(**必需**):提问箱登录的密码,注意保护隐私。
* MAILER\_ACCOUNT:SMTP 邮箱账户(为了给提问箱的主人发送邮件,所以需要一个邮箱账号)。
* MAILER\_PASSWORD:邮箱密码。
* MAILER\_HOST: SMTP 服务的域名(例如:`smtp.163.com`)。
填写完成之后等待部署即可!
示例提问箱请查看:
*
*
***
管理员用户可以通过点击标题来进入管理页面:

登录成功之后再次点击标题可以推出管理页面。