零碎整体需要

收益模型

  • 广告

    • 访客及普通用户展示广告
  • 付费内容

    • 访客及普通用户无奈查看付费内容的全部内容
    • 付费内容收费浏览
    • 付费内容可单篇付费
    • 付费资源附件须要付费购买(普通用户原价,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: string
  • name: i18nObj
  • desc: i18nObj
附件
  • slug: string
  • title: i18nObj
  • desc: i18nObj
  • path: string
  • tags: 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、支付宝、微信小程序等)。

界面具体设计