零碎整体需要
收益模型
-
广告
- 访客及普通用户展示广告
-
付费内容
- 访客及普通用户无奈查看付费内容的全部内容
- 付费内容收费浏览
- 付费内容可单篇付费
- 付费资源附件须要付费购买(普通用户原价,VIP 会员 X 折)
-
会员
- VIP 会员免广告
- 付费内容收费浏览
零碎架构图
graph LR
app[常识付费零碎]
app --- user[用户核心]
app --- content[内容]
app --- ad[广告]
user --- 注册 / 登录
user --- 会员中心
user --- 领取历史
content --- 文章 --- 免费附件
content --- 页面 --- 免费附件
content --- 代码片段 --- 免费附件
content --- comp1[禁止文本选中复制组件]
content --- comp2[代码复制组件]
ad --- 会员免广告组件
ad --- comp3[AntiAdBlock 插件]
模块阐明
用户核心
注册、登录
- Github 账号登录
- 微信扫码登录
- 短信验证码登录
- 账号密码登录
会员中心
- 非会员:提醒开明
- 会员:显示到期工夫和提醒续费
领取历史
次要能够查问以下三类领取数据:
- 会员开明记录
- 内容付费记录
- 资源购买记录
内容
文章、页面、代码片段
字段 | 阐明 | 必填 | 文章 | 页面 | 代码片段 |
---|---|---|---|---|---|
slug | 链接 | ✅ | ✅ | ✅ | ✅ |
title | 题目 | ✅ | ✅ | ✅ | ✅ |
content | 内容 | ✅ | ✅ | ✅ | ✅ |
paid | 是否为付费 | ❌ | ✅ | ✅ | ✅ |
price | 售价 | ❌ | ✅ | ✅ | ✅ |
tags | 标签 | ❌ | ✅ | ❌ | ✅ |
标签
slug
:stringname
:i18nObjdesc
:i18nObj
附件
slug
:stringtitle
:i18nObjdesc
:i18nObjpath
:stringtags
:Tag[]
付费内容外围业务流程
graph TB
Start([Start]) -- 拜访付费内容 -->
check1{是否登录} --F--> free[仅收费内容可见]
check1 --T--> check2{是否为 VIP 会员} --F-->
check3{是否购买该内容} --F--> free
check2 --T--> paid[可见全部内容]
check3 --T--> paid
paid -- 下载付费资源 --> check4{是否购买付费资源}
free -- 下载付费资源 --> check4
check4 --F--> payment[购买领取页面]
check4 --T--> download[下载]
download --> Stop([Stop])
payment --> Stop
广告
暂定为两类广告:
- 默认展现 Google Adsense
- 广告位可付费预约(分阶段实现)
要求
对浏览器广告屏蔽插件进行检测,如果访客(非 VIP 用户)开启了广告拦挡插件,则禁止显示文章内容注释,改为提醒敞开广告拦挡插件。
零碎具体设计
待欠缺。
系统结构设计
-
用户模块
- 注册登录
- 个人信息补全
- 会员模块
-
领取模块
- Prisma Schema
- 支付宝二维码订单预创立
- 领取回调解决
- 手动查问更新订单状态
-
内容模块
- Sanity Schema
- 广告模块
我的项目代码构造
.
├── app # 外围利用代码,上司目录酌情增加
│ ├── components # 前端组件
│ ├── i18n # 翻译
│ ├── layout # 布局页面(可省,算组件也行)│ ├── routes # Nested 路由
│ ├── services # 后端服务,如 Cache、Prisma 等
│ └── types # 类型定义(不肯定须要)├── prisma # Prisma 数据库 Schema
├── public # Assets 动态资源
└── styles # Tailwind CSS 源码
我的项目根目录还会搁置其余配置类的文件,如 Sanity、ESLint、Prettier 配置等。
功能模块具体设计
用户模块
应用 Authing 服务,注册、登录合并,反对第三方登录(如 Github、Gitee、支付宝、微信小程序等)。