Git Product home page Git Product logo

core's Introduction

Mix Space Core

GitHub stars GitHub issues Build Core Release GitHub license wakatime Docker Image Size (latest by date)

Mix Space 核心服务;基于 nestjs (nodejs),需安装 mongoDBRedis 方可完整运行。

v3 还是使用 nestjs 进行重构,之前的版本在 此仓库

此项目不带主站,可以使用以下项目(选一)进行部署。

  • Kami (老二次元的风格)
  • Yun (简洁的风格)

现有的比较有意思的一些小玩意的实现:

  • 实时日志输出。通过 Socket.IO + 劫持 process.stdout 实现。
  • 云函数

三方服务集成:

  • Bark 推送
  • 邮件订阅
  • 同步到 xLog

Docker 部署(建议)

cd
mkdir -p mx/server
cd mx/server
wget https://fastly.jsdelivr.net/gh/mx-space/mx-server@master/docker-compose.yml
docker-compose up -d

宿主部署

需要以下环境:

  • Node.js 18+
  • MongoDB
  • Redis

现有 macOS(x86)、Linux(x86) 的已构建产物。使用以下脚本可免手动构建直接运行。

curl https://cdn.jsdelivr.net/gh/mx-space/mx-server@master/scripts/download-latest-asset.js >> download.js
zx ./download.js
cd mx-server
node index.js

或者手动下载 release,之后解压然后

node index.js

所有的依赖都打包进了产物,无需黑洞一般的 node_modules

开发环境

git clone https://github.com/mx-space/core mx-core
cd mx-core
pnpm i
pnpm dev

项目结构

.
├── app.config.ts                 # 主程序配置,数据库、程序、第三方,一切可配置项
├── app.controller.ts             # 主程序根控制器
├── app.module.ts                 # 主程序根模块,负责各业务模块的聚合
├── common                        # 存放中间件
│   ├── adapters                  # Fastify 适配器的配置
│   ├── decorator                 # 业务装饰器
│   ├── exceptions                # 自定义异常
│   ├── filters                   # 异常处理器
│   ├── guard                     # 守卫与鉴权
│   ├── interceptors              # 拦截器, 数据过滤与响应格式化处理
│   ├── middlewares               # 传统意义上的中间件
│   └── pipes                     # 管道
├── constants                     # 常量
├── main.ts                       # 引入配置,启动主程序,引入各种全局服务
├── modules                       # 业务逻辑模块
├── processors                      # 核心辅助模块
│   ├── cache                       # Redis 缓存相关
│   ├── database                    # Mongo 数据库相关
│   ├── gateway                     # Socket.IO 相关
│   ├── helper                      # 辅助类
│   └── logger                      # 自定义 Logger
├── shared                          # 通用模型
│   ├── dto                         # 数据验证模型
│   ├── interface                   # 接口
│   └── model                       # 基本数据模型
├── utils                           # 工具类
└── zx.global.ts

应用结构

  • 请求处理流程

    1. request:收到请求
    2. middleware:中间件过滤爬虫 PHP 肉鸡扫描路径,记录访问历史
    3. guard:守卫过滤(鉴权)和角色附加
    4. interceptor:before:只用于 DEBUG 请求计时
    5. pipe:校验请求数据,过滤未知数据,非法类型抛错 422
    6. controller & resolver:业务控制器
    7. service:业务服务
    8. interceptor:after:数据流拦截器(格式化数据)、请求缓存
    9. filter:捕获以上所有流程中出现的异常,如果任何一个环节抛出异常,则返回错误
  • 拦截器流向

ResponseInterceptor -> ResponseFilterInterceptor -> JSONTransformInterceptor -> CountingInterceptor -> AnalyzeInterceptor -> HttpCacheInterceptor
  • 业务逻辑模块

    1. [Aggregate] 聚合
    2. [Analyze] 数据统计
    3. [Auth] 认证
    4. [Backup] 备份
    5. [Category] 分类
    6. [Commnet] 评论
    7. [Configs] 读取配置项
    8. [Feed] RSS
    9. [Health] 应用健康检查与日志相关
    10. [Init] 初始化相关
    11. [Link] 友链
    12. [Markdown] Markdown 解析导入导出解析相关
    13. [Note] 日记
    14. [Option] 设置
    15. [Page] 独立页面
    16. [PageProxy] 反代管理页
    17. [Post] 博文
    18. [Project] 项目
    19. [Recently] 最近
    20. [Say] 说说
    21. [Search] 搜索
    22. [Sitemap] 站点地图
    23. [User] 用户
  • 核心辅助模块 processors

    1. [cache] Redis 缓存相关
    2. [database] 数据库相关
    3. [gateway] Socket.IO 相关
      • 用户端
      • 管理端
      • 实时通知
    4. [helper] 辅助类
    5. [CountingService] 提供更新阅读计数
    6. [CronService] 维护管理计划任务
      • 自动备份
      • 推送百度搜索
      • 清除缓存
      • etc.
    7. [EmailService] 送信服务
    8. [HttpService] 请求模块
    9. [ImageService] 图片处理
    10. [TqService] 任务队列
    11. [UploadService] 上传服务
    12. [AssetService] 获取本地资源服务
    13. [TextMacroService] 文本宏替换服务
    14. [JWTService] JWT 服务
    15. [BarkPushService] Bark Push 服务

开发

pnpm i
pnpm start

Reference

项目参考了 nodepress


Since 2021-08-31

Thanks

许可

This project is licensed under AGPLv3 licensed. 2021 Innei

core's People

Contributors

innei avatar renovate[bot] avatar renovate-bot avatar cielneko avatar wibus-wee avatar wuhang2003 avatar ttimochan avatar vxrain avatar zsbai avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.