0528b1853a7d8b4e32c2a52599cf438d6b1a8db8
Digital Nomad Guide | 数字游民指南
开源免费的数字游民资源平台,支持多主题切换、国际化、电子书、课程、加入申请与支付等能力。
功能特性
- 多主题:内置数字游民、一人公司、TikTok 运营、独立开发等主题,可快速克隆扩展
- 国际化:中英双语,基于 next-intl 的 i18n 方案
- 7 天路线图:首页展示数字游民入门路径,支持按天查看详情
- 工具导航:按主题加载工具分类与链接
- 电子书:Markdown 电子书阅读,支持目录、懒加载、阅读进度
- 课程页:视频课程大纲、学习进度、讲师介绍
- 加入申请:表单提交 + PocketBase 存储 + 支付(Z-Pay / XorPay)
- 暗色模式:跟随系统或手动切换
技术栈
- 框架:Next.js 16、React 19
- 样式:Tailwind CSS 4
- 国际化:next-intl
- 后端服务:PocketBase(用户/申请)、MinIO(文件存储)、自建支付 API
快速开始
环境要求
- Node.js 20+
- pnpm(推荐)
安装与运行
# 安装依赖
pnpm install
# 开发模式
pnpm dev
# 构建
pnpm build
# 生产运行
pnpm start
开发模式下访问 http://localhost:3000(或终端显示的端口)。
环境变量(可选)
创建 .env.local 覆盖默认配置:
| 变量名 | 说明 | 默认值 |
|---|---|---|
NEXT_PUBLIC_THEME |
当前主题 | digital-nomad |
NEXT_PUBLIC_POCKETBASE_URL |
PocketBase 地址 | https://pocketbase.hackrobot.cn |
POCKETBASE_JOIN_COLLECTION |
申请集合名 | solan |
PAYMENT_API_URL |
支付 API 地址 | 开发 127.0.0.1:8700,生产 https://api.hackrobot.cn |
PAYMENT_PROVIDER |
支付提供商 | zpay |
MINIO_ENDPOINT |
MinIO 端点 | minioweb.hackrobot.cn |
MINIO_BUCKET |
存储桶 | hackrobot |
NEXT_PUBLIC_SITE_URL |
站点根地址(支付回跳等) | 开发 http://localhost:3001 |
NEXT_PUBLIC_SHOP_URL |
电商独立站链接 | https://store.hackrobot.cn/ |
项目结构
├── app/
│ ├── [locale]/ # 多语言路由 (zh, en)
│ │ ├── page.tsx # 首页
│ │ ├── about/ # 关于我们
│ │ ├── course/ # 课程页
│ │ ├── ebook/ # 电子书
│ │ ├── join/ # 加入申请
│ │ ├── jobs/ # 招聘
│ │ └── day/[id]/ # 路线图每日详情
│ ├── api/ # API 路由
│ │ ├── join/ # 申请提交
│ │ ├── pay/ # 支付
│ │ └── upload-media/ # 媒体上传
│ ├── components/ # 公共组件
│ ├── context/ # React Context
│ ├── data/ # 静态数据(如 ebook.md)
│ └── lib/ # 工具与配置
├── config/
│ ├── site.config.ts # 主题配置
│ └── services.config.ts # 服务配置(PocketBase、支付、MinIO)
├── content/themes/ # 主题内容
│ └── digital-nomad/
│ ├── messages/ # 文案 (zh.json, en.json)
│ └── data/ # 工具等数据
└── i18n/ # 国际化路由
主题配置
切换主题:设置 NEXT_PUBLIC_THEME 或修改 config/site.config.ts 中的 CURRENT_THEME。
内置主题:digital-nomad | solo-company | tiktok-ops | indie-dev。
新增主题步骤:
- 在
config/site.config.ts的THEME_CONFIGS中添加配置 - 在
content/themes/[theme-id]/下添加messages和data - 在
app/lib/theme-data.ts的 switch 中添加对应 case
脚本
| 命令 | 说明 |
|---|---|
pnpm dev |
启动开发服务器 |
pnpm build |
构建生产版本 |
pnpm start |
启动生产服务器 |
pnpm lint |
运行 ESLint |
开源与致谢
Description
Languages
TypeScript
55.3%
HTML
40.1%
CSS
3.2%
Python
1.1%
JavaScript
0.3%