1
- # Moments - 极简朋友圈
1
+ # 🌟 Moments - 极简朋友圈
2
2
3
3
[ ![ release] ( https://img.shields.io/badge/release-更新记录-blue )] ( https://github.com/kingwrcy/moments/releases )
4
4
[ ![ docker-release-status] ( https://img.shields.io/github/actions/workflow/status/kingwrcy/moments/docker-image-release.yml )] ( https://github.com/kingwrcy/moments/actions/workflows/docker-image-release.yml )
5
5
[ ![ docker-pull] ( https://img.shields.io/docker/pulls/kingwrcy/moments )] ( https://hub.docker.com/repository/docker/kingwrcy/moments )
6
6
[ ![ telegram-group] ( https://img.shields.io/badge/Telegram-group-blue )] ( https://t.me/simple_moments )
7
7
[ ![ discussion] ( https://img.shields.io/badge/moments-论坛-blue )] ( https://discussion.mblog.club )
8
8
9
- 从 v0.2.1 开始,使用 Golang 重写了服务端,目前已经基本实现了 v0.2.0 版本的功能,同时软件包体积也更小了。
9
+ 💡 ** 从 v0.2.1 开始,Moments 采用 Golang 重写服务端,包体积更小,功能更强!**
10
+ 🔍 ** 仍需 v0.2.0 版本?[ 点这里] ( https://github.com/kingwrcy/moments/blob/master/README.md ) **
10
11
11
- 注意:如果你在找 v0.2.0 版本,请 [ 点击这里 ] ( https://github.com/kingwrcy/moments/blob/master/README.md ) 。
12
+ ---
12
13
13
- # 功能列表
14
+ ## 🎯 功能亮点
14
15
15
- ## 用户
16
+ ### 👤 用户系统
17
+ - 🏠 ** 默认账号** :` admin/a123456 ` ,登录后可在后台修改
18
+ - 👥 ** 支持多用户模式** ,可控制是否允许注册
16
19
17
- - 默认用户名和密码是 admin/a123456,登录后可以在后台修改
18
- - 多用户模式,可以在后台打开或关闭用户注册功能
20
+ ### 📝 Memo 记录
21
+ - 🔖 ** 标签管理** ,让内容更清晰
22
+ - 🖼️ ** 支持图片上传** ,可存储至本地或 S3
23
+ - 🖼️ ** 自动生成缩略图** (目前仅支持本地上传)
24
+ - 📝 ** 支持 Markdown 语法** ,后续增加更多标签支持
25
+ - ❤️ ** 点赞 & 评论** ,可在后台控制评论功能
26
+ - 🎵 ** 支持网易云音乐、B 站视频、外部链接嵌入**
27
+ - 📖 ** 支持豆瓣读书 & 豆瓣电影引用**
19
28
20
- ## Memo
29
+ ### 🛠️ 其他功能
30
+ - 📱 ** 完美适配移动端**
31
+ - 🌙 ** 支持暗黑模式**
32
+ - ⏫ ** 回到顶部按钮**
33
+ - 🗄️ ** 数据库采用 SQLite** ,随时可备份
34
+ - 🖼️ ** 支持自定义头图、头像、网站标题**
21
35
22
- - 支持设置标签
23
- - 支持上传图片,可以上传到服务器,也可以在后台开启上传到 S3
24
- - 支持生成缩略图,但是目前只支持直接上传到服务器时生成缩略图,将在后续版本中支持上传到 S3 时生成缩略图
25
- - 支持 Markdown 语法,但是目前只适配了常用的几个标签,将在后续版本中支持更多的标签
26
- - 支持点赞
27
- - 支持评论,可以在后台打开或关闭评论功能
36
+ ---
28
37
29
- ## 其他
38
+ ## 🚀 快速上手
30
39
31
- - 支持回到顶部按钮,PC 端和手机端都有
40
+ ### 🛠️ 环境变量
32
41
33
- 更多说明可以 [ 点击这里查看 ] ( https://discussion.mblog.club/post/pto2hqoFzDKzZMpvoPZKYuP ) 。
42
+ Moments 支持以下 ** 环境变量 ** 进行配置:
34
43
35
- # 使用教程
44
+ | 变量名 | 说明 | 默认值 |
45
+ | -----------------| ---------------------| ------------------------------------------------------|
46
+ | ` PORT ` | 监听端口 | ` 3000 ` |
47
+ | ` JWT_KEY ` | JWT 密钥 | ** 不填写则随机生成,重启后需重新登录** |
48
+ | ` DB ` | SQLite 数据库存放目录 | ` db.sqlite ` (默认 ` /app/data/db.sqlite ` ) |
49
+ | ` UPLOAD_DIR ` | 上传文件本地目录 | ` upload ` (默认 ` /app/data/upload ` ) |
50
+ | ` LOG_LEVEL ` | 日志级别 | ` info ` (可选 ` debug ` ) |
51
+ | ` ENABLE_SWAGGER ` | 启用 Swagger 文档 | ` false ` (可选 ` true ` ,访问 ` /swagger/index.html ` ) |
36
52
37
- ## 环境变量
38
-
39
- Moments 支持以下环境变量,可按需修改进行配置:
40
-
41
- | 变量名 | 解释 | 默认值 |
42
- | ----------------- | --------------------- | ------------------------------------------------------ |
43
- | PORT | 监听端口 | 3000 |
44
- | JWT_KEY | JWT 密钥 | 不填写则每次启动时随机生成,每次重启后需要重新登录 |
45
- | DB | sqlite 数据库存放目录 | 工作目录下的 db.sqlite,/app/data/db.sqlite |
46
- | UPLOAD_DIR | 上传文件本地目录 | 工作目录下的 upload,/app/data/upload |
47
- | LOG_LEVEL | 日志级别 | info,可选 debug |
48
- | ENABLE_SWAGGER | 是否启用 swagger 文档 | false,可选 true,启用后可访问路径 /swagger/index.html |
49
- | ENABLE_SQL_OUTPUT | 是否启用 SQL 调试日志 | false |
50
-
51
- 除了直接配置环境变量外,还可以可选地在工作目录下创建 ` .env ` 文件,Moments 在启动时也会读取该文件来决定最终生效的配置,例如:
52
-
53
- ```
54
- JWT_KEY=
53
+ ⚡ ** 支持 ` .env ` 文件加载环境变量** ,示例:
54
+ ``` env
55
+ JWT_KEY=your_secret_key
55
56
LOG_LEVEL=info
56
57
```
57
58
58
- ## 使用 Docker
59
+ ---
59
60
60
- 注意:需要将以下示例中的 ` $JWT_KEY ` 替换为你的真实 ` JWT_KEY ` ,生成方式可[ 参考这里] ( #jwt_key-生成 ) 。
61
-
62
- 使用命令行启动容器:
61
+ ## 🐳 使用 Docker
63
62
63
+ 🔹 ** 启动容器** (需替换 ` $JWT_KEY ` ):
64
64
``` bash
65
65
docker run -d \
66
66
-e PORT=3000 \
@@ -70,14 +70,10 @@ docker run -d \
70
70
--name moments \
71
71
kingwrcy/moments:latest
72
72
```
73
+ 📌 ** 持久化数据:** ` /app/data ` 挂载至 ` /var/moments `
74
+ 📌 ** 可选:** ` latest ` (稳定版) 或 ` dev ` (开发版,功能前沿但相对不稳定)
73
75
74
- 注意:
75
-
76
- - 容器默认的工作目录是 ` /app/data ` ,所以示例中将 ` /app/data ` 目录挂载到主机的 ` /var/moments ` 目录,实现持久化数据的目的,可以按需修改
77
- - 示例中使用的是 ` latest ` 标签来拉取最新的发布版;也可以通过 ` dev ` 标签来拉取最新的开发版,通常开发版会包含最新的功能和问题修复,但是相对于发布版的稳定较差
78
- - 无论使用 ` latest ` 版本还是 ` dev ` 版本,我们都 _ 强烈建议将容器的数据持久化,并(定期或在升级前)备份到安全的介质中_
79
-
80
- 也可以使用 Docker Compose:
76
+ ### 📝 使用 Docker Compose
81
77
82
78
``` yaml
83
79
services :
@@ -94,130 +90,95 @@ services:
94
90
- /var/moments:/app/data # 持久化数据到主机的 /var/moments 目录,可以按需修改
95
91
` ` `
96
92
97
- ## 使用可执行文件
98
-
99
- 首先在 [Release](https://github.com/kingwrcy/moments/releases) 列表根据自己的平台下载最新版本的可执行文件。
93
+ ---
100
94
101
- 例如以下是用于 ` windows-amd64` 的文件:
95
+ ## 💻 可执行文件安装
102
96
103
- | 文件名 | 说明 |
104
- | -------------------------------------------- | ---------------------------------------------- |
105
- | moments-windows-amd64-x.x.x.exe.zip | 包含可执行文件的压缩包,解压后可得到可执行文件 |
106
- | moments-windows-amd64-x.x.x.exe-checksum.txt | 包含对应可执行文件的 `MD5` 校验码 |
97
+ 🔽 **[下载最新版本](https://github.com/kingwrcy/moments/releases)**
107
98
108
- 下载并解压完成后,可以可选地检查可执行文件的校验码是否匹配,然后通过环境变量或 `.env` 文件进行配置,最后直接打开可执行文件即可。
99
+ > 示例(Windows 版):
109
100
110
- # # JWT_KEY 生成
101
+ | 文件名 | 说明 |
102
+ |----------------------------------------------|----------------------------------------------|
103
+ | ` moments-windows-amd64-x.x.x.exe.zip` | **压缩包**,解压后可直接运行 |
104
+ | `moments-windows-amd64-x.x.x.exe-checksum.txt` | `MD5` 校验码,验证文件完整性 |
111
105
112
- # ## 使用 OpenSSL
106
+ ---
113
107
114
- 执行以下命令生成 (仅测试了 Linux):
108
+ # # 🔑 生成 JWT_KEY
115
109
110
+ 📌 **方法 1:OpenSSL**
116
111
` ` ` bash
117
112
openssl rand -hex 32
118
- ` ` `
119
-
120
- # ## 使用 SHA256
121
-
122
- 执行以下命令生成 (仅测试了 Linux):
113
+ ` ` `
123
114
115
+ 📌 **方法 2:SHA256**
124
116
` ` ` bash
125
117
echo $RANDOM | sha256sum
126
- ` ` `
127
-
128
- # ## 在线生成
129
-
130
- 打开 [https://tool.lu/uuid](https://tool.lu/uuid) 生成不带 `-` 的 `UUID` 作为 `JWT_KEY`。
131
-
132
- # 开发
118
+ ` ` `
133
119
134
- # # 环境
120
+ 📌 **方法 3:在线生成**([点这里](https://tool.lu/uuid) 生成 UUID)
135
121
136
- 配置以下开发环境:
122
+ ---
137
123
138
- - Go 1.22.5(或更高)
139
- - NodeJS 18(或更高)
140
- - PNPM 包管理工具
124
+ # # 🛠️ 开发
141
125
142
- 对于 `VSCode`,我们推荐安装以下插件:
126
+ # ## 🔧 依赖环境
143
127
144
- - eamodio.gitlens
145
- - esbenp.prettier-vscode
146
- - dbaeumer.vscode-eslint
147
- - Nuxtr.nuxt-vscode-extentions
148
- - golang.go
149
- - qwtel.sqlite-viewer
128
+ 📌 **后端:** `Go 1.22.5+`
129
+ 📌 **前端:** `NodeJS 18+`,推荐使用 `PNPM`
130
+ 📌 **VSCode 推荐插件:**
131
+ - ` gitlens` (Git 扩展)
132
+ - ` prettier` (代码格式化)
133
+ - ` eslint` (代码规范检查)
134
+ - ` golang` (Go 语言支持)
150
135
151
- 另外,也可以直接通过 `VSCode` 的 [devcontainer](https://code.visualstudio.com/docs/devcontainers/containers) 来启动配置好的开发环境。
136
+ # ## 🏗️ 启动
152
137
153
- # # 启动
154
-
155
- 对于安装了 `make` 命令的用户,可以使用以下命令启动项目:
156
-
157
- 后端:
138
+ # ### 1️⃣ 使用 `make`(推荐)
158
139
140
+ 后端:
159
141
` ` ` bash
160
- # 进入项目根目录
161
142
cd moments
162
-
163
- # 编译并启动后端,注意此时的工作目录是项目根目录 moments
164
143
make backend-dev
165
144
` ` `
166
-
167
- 单独创建一个终端,启动前端:
168
-
145
+ 前端(新终端):
169
146
` ` ` bash
170
- # 进入项目根目录
171
147
cd moments
172
-
173
- # 安装前端依赖
174
148
make frontend-install
175
-
176
- # 启动前端
177
149
make frontend-dev
178
150
` ` `
179
151
180
- 如果没有 `make` 命令,也可以使用以下命令启动项目:
181
-
182
- 后端:
152
+ # ### 2️⃣ 手动运行
183
153
154
+ 后端:
184
155
` ` ` bash
185
- # 进入后端目录
186
156
cd moments/backend
187
-
188
- # 编译后端
189
157
go build -ldflags="-X main.version=local -X main.commitId=local" -o ./dist/moments
190
-
191
- # 启动后端,注意此时的工作目录是后端目录 moments/backend
192
158
./dist/moments
193
159
` ` `
194
-
195
- 单独创建一个终端,启动前端:
196
-
160
+ 前端:
197
161
` ` ` bash
198
- # 进入前端目录
199
162
cd moments/front
200
-
201
- # 安装前端依赖
202
163
pnpm install
203
-
204
- # 启动前端
205
164
pnpm run dev
206
165
` ` `
207
166
208
- # # 访问
167
+ 📍 启动后访问 `http://localhost:3000`
209
168
210
- 启动项目后可以通过 `http://localhost:3000` 来访问前端,并且开发环境的接口请求会通过前端代理转发到后端来避免跨域问题。
169
+ ---
211
170
212
- # 其他版本
171
+ # # 🌐 其他版本
213
172
214
173
| 项目 | 演示地址 |
215
- | --------------------------------------------------------------- | -------------------------------------------------------------------- |
174
+ |----------------------------------------------------------------| --------------------------------------------------------------------|
216
175
| [RandallAnjie/moments](https://github.com/RandallAnjie/moments) | [https://moments.randallanjie.com](https://moments.randallanjie.com) |
217
176
218
- # Contributors
177
+ ---
219
178
220
- 感谢这些贡献代码的朋友。
179
+ # # ❤️ 致谢 Contributors
180
+
181
+ 感谢所有贡献者!🎉
221
182
222
183
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
223
184
<!-- prettier-ignore-start -->
@@ -251,6 +212,12 @@ pnpm run dev
251
212
252
213
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
253
214
254
- # Star History
215
+ 📌 **欢迎贡献!** 详情见 [all-contributors](https://github.com/all-contributors/all-contributors) 规范。
216
+
217
+ ---
218
+
219
+ # # ⭐ Star History
220
+
221
+ [](https://star-history.com/#kingwrcy/moments&Date)
255
222
256
- [](https://star-history.com/#kingwrcy/moments&Date)
223
+ 🔥 **如果你觉得 Moments 还不错,欢迎点个 Star!** 🚀
0 commit comments