Skip to content

oodzchen/dproject

Repository files navigation

dproject

A web system like reddit and hacker news for discussing topics online.

开发说明

本项目开发的时候使用了fresh这个工具,它可以监听文件改动并实时重启进程,请务必在开发之前全局安装该模块。

不管是本地开发还是生产环境,主要用 docker compose 来管理各个服务,所以在开发前请确保本机安装了 docker。

本项目中的密码加密使用了bcrypt算法,htpasswd命令可提供该算法,用于生成样例数据,请确保机器上安装了相应的工具,一般Linux发行版上的apache2-utils可提供该命令。

启动服务之前需要自定义环境变量,请直接参考.env.example,根据里面的示例新建一个文件,如.env.local.dev,切记:不要把本地开发用的环境变量文件提交到仓库

以上这些准备好之后,先安装依赖

go mod download

以上步骤完成后,运行

./dev.sh .env.local.dev

即可启动服务。

你也可以直接使用docker compose命令来启动服务,不过有一些配置文件需要提前生成,具体你可以阅读dev.sh里面的代码。

测试

本项目写了单元测试和端到端测试,两种测试在启动之前都需要先启动服务(因为有些测试需要读写数据库)。

运行单元测试

go test ./...

运行端到端测试

go run ./e2e

尽管已经配置了 CI 跑自动化测试,还是建议每次推送之前手动运行一下测试,避免把报错的代码推送到远程仓库。

模拟数据

./seed模块专门用于批量生成模拟数据,以方便测试,具体使用方法请查看帮助

go run ./seed --help

国际化配置

本项目做了 i18n 配置,所有配置文件存放在./i18n里面,其中 TOML 文件都是由go-i18n这个工具生成的,请不要直接修改里面的内容。

新增翻译请直接修改 i18n 目录下的 go 文件里面的代码,改完之后在运行 i18n 相关命令,并添加各种语言的翻译内容,具体请参考go-i18n的说明文档