Lin-CMS-Vue is the Vue 3 and Element Plus front-end of Lin-CMS, an open-source content management system framework from the 林间有风 (TaleLin) team, built for developers who need to ship an internal CMS admin interface without rebuilding user, permission, and logging infrastructure from scratch.
What it is
Lin-CMS-Vue is the front-end half of a front-end/back-end separated CMS solution. It is written in JavaScript, ships under the MIT licence, and pairs with one of three official back-end implementations: lin-cms-koa, lin-cms-flask, or lin-cms-spring-boot. The repository at hand contains the Vue 3 branch, which is the default branch; the master branch holds the earlier Vue 2.x line. The framework was extracted by the TaleLin team from a large body of real project work, and it is documented at http://doc.cms.talelin.com/.
The concrete problem it solves is architectural repetition in internal management systems. Server-side rendered CMS pages were traditionally rendered by back-end developers using template languages such as JinJa2 or Jade, a split that suited neither side: few front-end developers know those template languages, and back-end developers are not page builders. Lin-CMS instead gives the front end a single-page Vue application and leaves the server to expose an API. It also replaces the ad-hoc decisions every team makes at the start of a CMS project — how to validate parameters, how to operate on the database, how to handle global exceptions, how the API should be shaped, how the front-end folders should be organised. Lin-CMS supplies opinions and utilities for all of these, so developers can follow the existing conventions instead of designing a new architecture.
Key capabilities
- Built-in user management, permission management, and a log system, the three needs the README identifies as most common in a CMS.
- A validation mechanism for API parameters, offered as a convention developers copy rather than design themselves.
- Front-end error handling that defaults to surfacing configured exception messages, controllable per request through
handleError and showBackend.
- Rich-text editing through
tinymce, with image upload, image preview, and other custom components, plus a lin-cms-ui library of base components.
- Routing built on
vue-router with configurable three-level navigation, side-navigation search toggled from config, and a plugin mechanism.
- State management through
vuex, with a refresh-token flow and a message centre component.
- Optional captcha login, off by default, and chart support added through a plugin.
- A user can belong to multiple groups, and name conventions standardise front-end files and folders to singular, lowercase, hyphenated form.
Who uses it and how
- Teams building internal admin panels where SEO is irrelevant, which the README states explicitly as the reason a single-page architecture was chosen over server-side rendering.
- Projects that already run one of the three official back ends (
lin-cms-koa, lin-cms-flask, lin-cms-spring-boot) and want the matching front end rather than a bespoke one.
- Developers evaluating the framework before committing, using the hosted demo at
http://face.cms.talelin.com/ and the case study at http://sleeve.talelin.com/.
- Teams that want a bundled development standard, including the ESLint and accessibility checks added in version 0.4.3.
- Small and mid-sized CMS efforts: the README says Lin covers the great majority of these, and that architectural modification is usually unnecessary.
Getting started
Clone the repository, then run npm install or yarn, then npm run serve or yarn serve to start the development server; a back-end deployment from one of the three official implementations is required alongside it. Node 8.11.0 or newer is expected, and the project was scaffolded with vue-cli3.
How it compares
No list of paid products replaced by this project is provided in the facts, and no similar tools are named. Lin-CMS-Vue therefore stands alone in this registry on the evidence available.
When to use it — and when not to
A self-hoster must operate a compatible back end — lin-cms-koa, lin-cms-flask, or lin-cms-spring-boot — alongside this front end, plus a suitable Node and build toolchain; the README notes the project is an engineering open-source release and cannot guarantee seamless upgrades, so version bumps may require manual work. Teams that need a public-facing, SEO-driven site, or that reject the Lin conventions for validation, API shape, and project structure, should not pick it. The latest version listed is 0.4.3, and the README does not enumerate database, storage, or SMTP requirements, so those dependencies must be confirmed from the back-end projects and documentation.
project readme (upstream, from github) — read inline
简介 | 快速上手 | 版本日志

Lin CMS 简介
Lin-CMS 是林间有风团队经过大量项目实践所提炼出的一套内容管理系统框架。
Lin-CMS 可以有效的帮助开发者提高 CMS 的开发效率。
Lin-CMS 是一套前后端完整的解决方案,后端部署请移步:
注意事项
Lin-CMS 是工程类开源项目,不能保证无缝升级.
当前分支为 Vue3 版本,如需使用 Vue2.x 请切换至 master 分支。
文档资料
文档地址
线上 Demo
案例
Lin CMS 的特点
Lin CMS 的构筑思想是有其自身特点的。下面我们阐述一些 Lin 的主要特点。
Lin CMS 是一个前后端分离的 CMS 解决方案
这意味着,Lin 既提供后台的支撑,也有一套对应的前端系统,当然双端分离的好处不仅仅在于此,我们会在后续提供NodeJS和PHP版本的 Lin。如果你心仪 Lin,却又因为技术栈的原因无法即可使用,没关系,我们会在后续提供更多的语言版本。为什么 Lin 要选择前后端分离的单页面架构呢?
首先,传统的网站开发更多的是采用服务端渲染的方式,需用使用一种模板语言在服务端完成页面渲染:比如 JinJa2、Jade 等。
服务端渲染的好处在于可以比较好的支持 SEO,但作为内部使用的 CMS 管理系统,SEO 并不重要。
但一个不可忽视的事实是,服务器渲染的页面到底是由前端开发者来完成,还是由服务器开发者来完成?其实都不太合适。现在已经没有多少前端开发者是了解这些服务端模板语言的,而服务器开发者本身是不太擅长开发页面的。那还是分开吧,前端用最熟悉的 Vue 写 JS 和 CSS,而服务器只关注自己的 API 即可。
其次,单页面应用程序的体验本身就要好于传统网站。
框架本身已内置了 CMS 常用的功能
Lin 已经内置了 CMS 中最为常见的需求:用户管理、权限管理、日志系统等。开发者只需要集中精力开发自己的 CMS 业务即可
Lin CMS 本身也是一套开发规范
Lin CMS 除了内置常见的功能外,还提供了一套开发规范与工具类。换句话说,开发者无需再纠结如何验证参数?如何操作数据库?如何做全局的异常处理?API 的结构如何?前端结构应该如何组织?这些问题 Lin CMS 已经给出了解决方案。当然,如果你不喜欢 Lin 给出的架构,那么自己去实现自己的 CMS 架构也是可以的。但通常情况下,你确实无需再做出架构上的改动,Lin 可以满足绝大多数中小型的 CMS 需求。
举例来说,每个 API 都需要校验客户端传递的参数。但校验的方法有很多种,不同的开发者会有不同的构筑方案。但 Lin 提供了一套验证机制,开发者无需再纠结如何校验参数,只需模仿 Lin 的校验方案去写自己的业务即可。
还是基于这样的一个原则:Lin CMS 只需要开发者关注自己的业务开发,它已经内置了很多机制帮助开发者快速开发自己的业务。
快速上手
# clone the project
git clone https://github.com/TaleLin/lin-cms-vue.git
# install dependency
npm install or yarn
# develop
npm run serve or yarn (run) serve
讨论交流
微信公众号搜索:林间有风
QQ群搜索:Lin CMS 官方交流群 或 814597236
版本日志
最新版本 0.4.3
0.4.3
U 升级 element-plus 到 Release 版本 2.1.4
U 升级 vue 相关依赖库版本至最新版本 5.0.3
U 升级 eslint 和 @babel/eslint-parser 版本
A 添加 Accessibility 相关 eslint 检查机制
0.4.2
U 升级 Vue 版本至 3.2.24
U 升级 axios 版本至 0.24.0
U 升级 element-plus 版本至 1.2.0-beta.5
0.4.1
A 新增验证码功能,默认关闭验证码
0.4.0
U 升级到 Vue3 版本
0.3.5
F 统一前端规范,文件夹、文件名统一用单数和小写字母中划线形式
A 新增右键关闭历史记录
F 调整默认 dialog 样式
0.3.4
U 优化变量命名,升级 element-ui 版本,
F Home 组件改为异步加载
0.3.3
A 新增消息中心组件
0.3.2
A 新增图表插件
0.3.1
F 增加历史栏高度
0.3.0
A 新增一个用户可以属于多个分组
F 权限相关 auth right 统一替换为 permission
0.2.2
F 修复 tinymce 富文本动态绑定问题
U 保持代码风格一致优化
0.2.1
A 新增一键清除 reuse tab
A 新增侧边导航搜索,可在 config 配置是否启用
F 修复 post put 等请求不能自动重发问题
U 优化异常处理,框架默认弹出前端配置异常信息,可通过 handleError 和 showBackend 控制本次请求是否开发者自行处理和是否直接展示后端返回异常信息
C 登录用户名字段由 nickname -> username,同时新增 nickname 为昵称字段,可以更新昵称(需后端同步修改)
U 优化了一些移动端适配
C 列表信息字段由 collection -> items, total_nums -> total, 增加 count、page、total_page字段(需后端同步修改)
0.2.0
A 新增图像上传、图像预览、富文本等自定义组件
A 新增 lin-cms-ui 多个基础组件
0.1.0-beta.3
U 首页更新为 card 设计
A 新增头像上传
A 新增单元测试
A 新增switch、rate、tabs、link、tag组件
0.1.0-beta.2
F 修复无感知刷新令牌异常
A 新增入场动画
A 新增全屏功能
A 新增Icon、Form组件
0.1.0-beta.1
U 新UI界面
A button组件、table组件
F 修复令牌刷新异常
0.0.1-alpha.3
A 添加插件机制
U 重构路由设计
A 可配置三级路由导航
0.0.1-alpha.2
U 升级到 vue-cli3.4
A 慕课网专题插件
0.0.1-alpha.1
A 初始化内测版