lin-cms-vue: a Vue 3 and Element Plus admin shell for Lin CMS backends
🔆 Vue+ElementPlus构建的CMS开发框架
At a glance
- What is it?
- lin-cms-vue is the front end of the Lin CMS solution, pairing Vue 3, Vuex, Vue Router and Element Plus with Koa, Flask or Spring Boot backends. It ships user, permission and log screens out of the box, but its own README warns that upgrades are not guaranteed to be seamless.
- Who is it for?
- Adopt lin-cms-vue if you want a Vue 3 admin shell that already contains user management, permission management and a log system, and you are willing to run one of the Lin backends (lin-cms-koa, lin-cms-flask or lin-cms-spring-boot) behind it. Do not adopt it if you need a standalone front end that talks to an arbitrary REST API, or if you expect long-term drop-in upgrades, since the README states that seamless upgrades are not guaranteed.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 152 days ago.
- What is it written in?
- Mainly JavaScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 24, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What lin-cms-vue is, and the problem it removes
Building an internal admin panel usually means writing the same screens again: a login form, a user table, a role and permission editor, an operation log viewer. lin-cms-vue exists to remove that repetition. It is the front-end half of Lin CMS, a content management system framework that the README describes as extracted from the team's own project work. The repository is JavaScript, licensed MIT, and its default branch is vue-next, which is the Vue 3 line. The README states plainly that the current branch is the Vue3 version and that anyone needing Vue 2.x should switch to master.
The intended audience is a developer building a small or medium internal CMS. The README says Lin can meet the needs of most small and medium CMS projects, and that it is also a development specification: conventions for parameter validation, database access, global exception handling and API shape. That second claim is the more interesting one. The value is not only the screens, it is the set of decisions you no longer have to make. If you already have strong opinions about how an admin front end should be structured, that value shrinks.
Front end and back end are separate halves of one contract
Lin CMS is split. This repository is the Vue single-page application; the API lives in one of three sibling projects the README links to: lin-cms-koa, lin-cms-flask and lin-cms-spring-boot. The README justifies the split by arguing that server-side template rendering creates an ownership problem, since few front-end developers know Jinja2 or Jade and server developers are not page specialists, and by noting that SEO does not matter for an internal CMS.
That choice has a consequence worth naming. Because the front end is one half of a contract, it is not a generic admin template you point at any REST API. The changelog makes this concrete: version 0.2.1 renamed the login user field from nickname to username and added nickname as a separate display field, and it renamed list response fields from collection to items and total_nums to total, adding count, page and total_page. Both changes are annotated in the changelog as requiring the backend to be modified in step. A front end that expects items and total will not render a list from a backend that still returns collection and total_nums.
On the client side, package.json shows the shape of the app: vue 3.2.24, vue-router 4, vuex 4 with vuex-persist, axios, element-plus, and a set of smaller pieces including dayjs, moment, lodash, mitt, screenfull, swiper and photoswipe. The framework also carries its own plugin mechanism, visible in the script/ directory and the plugin:init, plugin:new and plugin:reconfig npm scripts.
Installing lin-cms-vue and getting the dev server up
The README's quick start is three commands. The badge in the README lists node 8.11.0+, and the scaffold is vue-cli 3, though package.json pins the Vue CLI service packages at ^5.0.3. Clone the repository, install dependencies with npm or yarn, then run the dev server:
# 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) serveThere is a detail in package.json that the README does not mention. The serve script is not a bare vue-cli-service serve call. It runs a Node script first:
node script/plugin-get-config.js && vue-cli-service serveThe same prefix appears on build. So the plugin configuration is regenerated on every serve and build, which means the plugin state lives in files that are rewritten by the tooling rather than edited by hand. If a plugin is not behaving, plugin:reconfig runs the same generator without starting the dev server. The README does not document what plugin-get-config.js writes or where, and it does not describe rollback of plugin configuration, so treat that script as something to read before you modify it.
The README also points to a hosted demo at face.cms.talelin.com and a case study at sleeve.talelin.com, which is the fastest way to see the built-in screens without wiring a backend.
What you get in the box, and what the changelog admits
The README lists the built-in features as user management, permission management and a log system, and says developers can then concentrate on their own CMS business. The changelog fills in more of the surface: a message center component (0.3.3), a chart plugin (0.3.2), image upload, image preview and rich text components (0.2.0), a captcha that is off by default (0.4.1), and a side navigation search that can be toggled in config (0.2.1). Version 0.3.0 added the ability for one user to belong to multiple groups and renamed the permission concept from auth right to permission.
The changelog is also where the framework is most honest about its own rough edges. Version 0.2.1 lists fixes for a rich text dynamic binding problem, for POST and PUT requests that could not be retried automatically, and for reuse-tab clearing. Version 0.1.0-beta.2 and 0.1.0-beta.1 both mention token refresh defects. An admin shell whose token refresh has been patched more than once is a shell whose session handling you should exercise yourself before trusting it.
Two other notes from the README matter. The project calls itself an engineering open source project and states that it cannot guarantee seamless upgrades. And the version numbering is inconsistent: the README's badge and the version log both say 0.4.3, package.json says 0.4.3, but the most recent published release listed for the repository is 0.4.2 from 2021-12-16. The last push to the repository was on 2026-05-04, so the branch has moved since that release, but no newer release is recorded.
Where lin-cms-vue is the wrong choice
The clearest failure mode is a backend mismatch. The front end is written against the Lin API conventions, and the changelog shows those conventions changing in ways that require coordinated backend edits. If you have an existing API with its own pagination envelope, its own login payload and its own permission model, you will spend your time adapting the front end rather than building features. Vue 3 plus Element Plus is a pleasant stack, but that is not a reason to pick this particular shell.
A second case is the public-facing site. The README's own argument for the single-page architecture is that SEO does not matter for an internal CMS. If SEO does matter for what you are building, the architecture is aimed away from you.
The third is upgrade tolerance. The README states that seamless upgrades are not guaranteed. A team that needs to move a long-lived admin panel across major Vue or Element Plus versions without touching application code should read that sentence as a warning rather than boilerplate. The jump from Element UI to Element Plus between the Vue 2 and Vue 3 branches is exactly the kind of migration the note is about.
Alternatives and how they differ in approach
The most direct alternative is to use the Lin backend without this front end. If lin-cms-koa, lin-cms-flask or lin-cms-spring-boot already gives you the users, permissions and logs you need, you can build your own Vue 3 interface against those endpoints and keep full control of the component layer. You lose the prebuilt screens and the conventions; you keep the freedom to change the API contract without editing a second repository in lockstep.
A second alternative is a general-purpose Vue admin template that is API-agnostic. Those templates typically ship the layout, routing and a handful of demo pages, and expect you to write the user and permission screens yourself. The trade is inverted: less assumption about your backend, more work before the first real screen works. lin-cms-vue makes the opposite bet, and the changelog entries about renamed response fields show what that bet costs when the contract moves.
The third alternative is a headless CMS. A headless CMS stores and serves content through an API and leaves the editing interface to its own product, which is a different problem from generating an admin panel for your own business logic. If your need is editorial content rather than internal operations screens, lin-cms-vue is aimed at the wrong target.
Maintenance, licence and the cost of staying current
The licence is MIT, stated in both the repository metadata and package.json. MIT permits commercial use and modification with the copyright notice retained; this is a description of the licence text, not legal advice, and anyone with a specific compliance question should read the LICENSE file in the repository root.
The maintenance picture is mixed and the facts should be read together. The repository is not archived. The last push was on 2026-05-04, which is recent. But the most recent release in the list is 0.4.2 from 2021-12-16, and the README's own version log stops at 0.4.3, whose entries are dependency bumps: element-plus to 2.1.4, Vue-related libraries to 5.0.3, eslint and @babel/eslint-parser upgrades, and an accessibility lint check. Nothing in the visible changelog since 0.4.0 describes new framework features. That pattern suggests the branch is being kept alive with dependency work rather than developed with new capability.
Upgrade cost follows from the README's own warning. The dependency set in package.json is broad for an admin shell: two date libraries (dayjs and moment), swiper, photoswipe, screenfull, mitt, vuex-persist and a TinyMCE Vue wrapper all need to move together when Vue or Element Plus moves. The 0.4.3 entry about upgrading Vue-related dependencies to 5.0.3 is the kind of work you inherit. Budget for it as recurring maintenance, not a one-time install.
Editorial conclusion
Adopt lin-cms-vue if you want a Vue 3 admin shell that already contains user management, permission management and a log system, and you are willing to run one of the Lin backends (lin-cms-koa, lin-cms-flask or lin-cms-spring-boot) behind it. Do not adopt it if you need a standalone front end that talks to an arbitrary REST API, or if you expect long-term drop-in upgrades, since the README states that seamless upgrades are not guaranteed. Before committing, check the vue-next branch rather than master, confirm that the backend you intend to use exposes the response fields the front end expects (the 0.2.1 changelog renamed collection to items and total_nums to total), and read the plugin scripts in script/ to see whether the plugin mechanism matches how you plan to extend the app.
Frequently asked questions
Does lin-cms-vue work with Vue 2?
Not on the default branch. The README states that the current branch is the Vue 3 version and that anyone who needs Vue 2.x should switch to master.
Does lin-cms-vue include a backend?
No. It is the front-end half of Lin CMS. The README links to three separate backends: lin-cms-koa, lin-cms-flask and lin-cms-spring-boot.
What features does lin-cms-vue already provide?
The README lists user management, permission management and a log system as built in, and the changelog adds a message center, a chart plugin, image upload and preview, rich text components, and a captcha that is disabled by default.
Can lin-cms-vue be upgraded without changing application code?
The README states that Lin-CMS is an engineering open source project and that seamless upgrades cannot be guaranteed, so upgrades should be expected to require work.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/logamee-lin-cms-vue)