UJCMS is a Java open source content management system (java cms) redesigned and developed based on the development experience of Jspxcms for many years. Use SpringBoot, MyBatis, Shiro, Lucene, FreeMarker, TypeScript, Vue3, ElementPlus and other technologies. For some pain points in the original system, solve, optimize and improve, and use the AGPL-3 open source protocol to release.
Technically, a mainstream, advanced and simple architecture is chosen to facilitate users to carry out secondary development. The persistence layer replaced Hibernate with MyBatis; the view layer replaced JSP with Vue3, which separated the front and back ends; the database was also redesigned. The design emphasizes “simple” and “flexible”, avoids complicated design and implementation, and reduces system maintenance costs and secondary development difficulties. Function use also requires “simple” to avoid complex use logic.
Official website address: https://www.ujcms.com Download address: https://www.ujcms.com/download/. Provide installation package download.
Demo station front desk: https://demo.ujcms.com. Use mobile phone access or browser mobile phone mode to access the front desk, the mobile phone page will be displayed automatically.
Demo station background: https://demo.ujcms.com/cp/. After the demo user logs in, he only has the function of browsing the background, and after clicking all the operation functions, it will show that he has no access (403). For operational testing, you can download the software to install it locally.
Technical and functional highlights Custom fields can be queried: All custom fields can be queried to enhance the flexibility of the system.
Custom field visual design: Custom fields use drag-and-drop visual design, what you see is what you get.
URL address SEO optimization: The dynamic addresses of columns and articles can be modified through the system’s global setting function. The default column and article URL address prefixes are /channel and /article, which can be modified according to your needs, such as changing to /categories and /archives. In the case of multiple sites, the subsite URL address is also changed from the original www.example.com/site-abc to the more friendly www.example.com/abc.
Clean up junk attachments: When the system is in use, there may be many attachments, such as misrepresented pictures, etc. After the article is deleted, the pictures in the article will remain in the system, resulting in a large number of unused junk pictures and attachments. The attachment management in the system can view all unused pictures and attachments and delete them.
Independent deployment of attachments, templates, and index files: The files generated when the system is running can be separated from the program and deployed to an independent directory, which is convenient for system backup, upgrade and management. For example, uploaded pictures and attachments, front-end templates, and index files can all be deployed to directories other than the program.
Template files and CSS and JS are in the same directory: The separate directory structure of template files, CSS and JS will bring great inconvenience to template production and deployment. The design of the template file and CSS, JS together, will be much more convenient.
MyBatis parameterized query: Background data usually needs to be searched through different fields, and writing a large number of queries for each table is undoubtedly a heavy work. The MyBatis parameterized query function can realize the query function of any field and associated table (such as: Q_title=abc, Q_user-username=test) by passing the query parameters through the front desk, without writing code in the background, which greatly reduces the development workload of the backend.
Primary and secondary table splitting: Split the primary and secondary tables for complex tables with a large amount of queries, put commonly used query fields in the main table, and put infrequently used fields in the secondary table to improve performance under large data volumes.
Back-end technology SpringBoot: Provides out-of-the-box functions for Spring. Simplifies Spring configuration and provides auto-configuration auto-configuration capabilities.
SpringMVC: MVC framework, easy to use, less bugs.
Mybatis: Persistence framework.
FreeMarker: Website template component.
Shiro: Security component. Easy to configure.
Lucene: Full-text search component.
Front-end technology TypeScript: a superset of JavaScript.
Vue 3: JavaScript framework.
ElementPlus: Vue 3 UI framework.
Tailwind CSS: A functional class-first CSS framework.
Tinymce: Rich text editor.
Function List Content Article Management Column Management Block Management Attachment Management Generation Management Configuration Global Settings Site Settings Model Management Block Settings Dictionary Type Dictionary Data User User Management Role Management User Group Management Organization Management System Site Management Storage Point Management Front-end Template Background Interface
…