TopGit
GitHub Repo Review

vhr: Spring Boot + Vue HR Scaffold

lenve/vhr
VTopGit review image for lenve/vhr
Review by Topgit.dev for lenve/vhr, with GitHub repository stats and README context.
Quick verdict

微人事 (vhr) is a Spring Boot and Vue teaching scaffold for an HR management system, not a finished product you deploy as-is. It's clean enough to read end to end in a weekend, which is the point: the author built it to show Spring Security role-based access control, Flyway-managed migrations, and WebSocket chat working together in one codebase. Treat it as a reference to strip parts from, not software to run in production unmodified.

Stars
★ 28.1k
Forks
⑂ 10.2k
Language
Java
License
See repository
Topic
Updated
Nov 2024
Homepage
GitHub

What Is 微人事 (vhr)?

微人事 (vhr) is an open-source, front-end/back-end-separated HR management system written in Java with Spring Boot on the server and Vue plus ElementUI on the client. It covers role and permission management, employee records, payroll account setup, and built-in real-time chat between staff. The author calls it a scaffold (脚手架) for learning the stack, not a business-complete product — the README points to a separate project, TienChin, for that.

Core Features: Permissions, Employees, Salaries, Chat

  • Role-based access control on Spring Security: an admin assigns roles to users and separately controls which menus, buttons, and API resources each role can touch.
  • Employee records module with add, edit, an advanced search, and bulk import/export to Excel via Apache POI.
  • Payroll account setup (工资账套) at the company level plus per-employee payroll account assignment.
  • Department, position, and job-title management under System Management, each documented with its own DB design in the project wiki.
  • Real-time staff chat built on the vue-chat project the README credits, plus a separate admin notification bell.
  • Schema and updates run through Flyway migrations — create an empty MySQL database and Flyway takes it from there.
  • Automatic welcome email to a new employee, rendered from a Freemarker template and sent on its own thread.
  • Redis-backed Spring Cache, with RabbitMQ carrying messages between the vhrserver and mailserver modules.
How this repository's GitHub stars have grown over time. Source: star-history.com.View the star history

Running vhr Locally

Clone the repo, then create an empty MySQL database named vhr — schema and updates run through Flyway migrations, so you never import a .sql dump by hand. Point the database, Redis, and RabbitMQ settings in application.properties at your own instances; RabbitMQ needs to be configured twice, once for the mailserver module and once for vhrserver. Open the project in IntelliJ IDEA, start the mailserver module, then run the vhr-web module inside vhrserver — the app is then live at http://localhost:8081/index.html. For front-end development, cd into vuehr, run npm install, then npm run serve to serve the Vue app on localhost:8080 (it proxies API calls to the running Spring Boot backend, so leave that running). To ship a build, run npm run build inside vuehr, then copy the generated static folder and index.html from vuehr/dist into the Spring Boot project's resources/static directory.

What You Can Build with It

  • A teaching reference for a Spring Boot + Vue front-end/back-end-separated architecture, since the wiki walks through decisions like the permission database schema and login-state persistence.
  • A starting skeleton for an internal HR tool: strip the demo employee/payroll screens and wire in your own schema while keeping the Spring Security role model.
  • A worked example of RabbitMQ doing a real job — sending onboarding email from a separate mailserver module — instead of a toy producer/consumer demo.
  • A base to fork before moving to vhr2.0, if you specifically want the older Spring Boot 2 / Vue 2 stack rather than the SpringBoot3+Vue3 rewrite.

Strengths

  • The wiki breaks down non-trivial decisions step by step — the permission database design, how roles and resources link dynamically, password salting — instead of leaving you to reverse-engineer the code.
  • Flyway migrations mean setup is 'create an empty database,' not hunting for the right .sql dump to import.
  • The feature set goes beyond a CRUD demo: RabbitMQ-driven email, WebSocket chat, and Excel import/export all live in one small codebase.
  • The author kept a documented update log and then moved the project forward instead of abandoning it — vhr2.0 exists specifically to carry the same lessons onto Spring Boot 3 and Vue 3.

Limitations of the Original vhr

  • The author calls it a scaffold, not a business-complete project, and points readers who need one to a separate repo, TienChin — vhr is missing whatever business logic a real HR department needs beyond the demo modules.
  • RabbitMQ has to be configured twice, once for mailserver and once for vhrserver, and it's easy to miss one of the two config files.
  • The README is written in Chinese; there's no English translation, so non-Chinese-speaking developers have to work from a machine translation of both the README and the wiki.
  • The update log in this README stops at the 2019.12.22 entry — active development has since moved to the separate vhr2.0 rewrite on Spring Boot 3 and Vue 3.
  • Outbound email needs your own mail account authorization code hardcoded into EmailRunnable.java; there's no documented environment-variable setup for that secret.

Alternatives: TienChin and vhr2.0

TienChin — the author's own follow-up project, explicitly recommended in the vhr README for anyone who needs a business-complete system instead of a teaching scaffold.vhr2.0 — the same author's rewrite of this project on Spring Boot 3 and Vue 3, linked directly from the vhr README as the actively maintained successor.vue-element-admin — a Vue + ElementUI admin dashboard template worth a look if what you actually want is the admin-panel shell rather than vhr's HR domain logic.

Frequently Asked Questions

Is vhr still actively maintained or should I use vhr2.0 instead?

微人事 (vhr) is not where the author's current work happens — the README points readers to vhr2.0, a Spring Boot 3 and Vue 3 rewrite of the same project, as the maintained version. Use vhr for the original Spring Boot 2 stack as a reference; use vhr2.0 for anything ongoing.

What database does vhr use and how are migrations managed?

微人事 (vhr) uses MySQL, and schema changes run through Flyway migrations rather than manual SQL imports. You only need to create an empty database named vhr locally; Flyway applies the schema and any updates automatically when the app starts.

Can I use vhr in production as-is?

微人事 (vhr) is not meant to run in production unmodified — the author labels it a scaffold (脚手架) for learning, not a business-complete product, and points anyone who needs a full system to the separate TienChin project instead. Treat vhr as a reference to build from.

How does vhr handle role-based access control and permissions?

微人事 (vhr) implements role-based access control with Spring Security: an administrator assigns roles to individual users, then separately assigns which menus, pages, and operations each role can touch. The wiki documents the permission database design and how roles and resources link dynamically.

What is the difference between vhr and TienChin?

微人事 (vhr) is the author's teaching scaffold, built to show the Spring Boot + Vue stack with a stripped-down HR domain; TienChin is the same author's separate, business-complete project that the vhr README recommends for anyone needing more than a learning reference.

Does vhr support Redis and RabbitMQ and do I need them?

微人事 (vhr) uses both: Redis for caching alongside Spring Cache, and RabbitMQ for messaging between its vhrserver and mailserver modules, notably to send onboarding email. Both are required locally — point their settings in application.properties at your own instances before starting the server.

The problem it solves

Most Spring Boot tutorials show authentication in isolation: a login form, a JWT filter, done. 微人事 (vhr) instead wires role-based permissions into a full domain — departments, employee records, payroll accounts, and a chat module — behind one Spring Security plus MyBatis plus Vue stack, so you see how the pieces interact instead of a single-endpoint demo.

Who should try it — and who should skip

Backend developers who already know Spring Boot but want a worked example of Spring Security roles tied to real screens, not just an auth demo, get the most out of 微人事 (vhr) — reading the wiki alongside the code is worth the Chinese-to-English friction. Skip it if you need an HR system in English out of the box, or if you want current framework versions; go straight to vhr2.0 instead of patching vhr's Spring Boot 2 / Vue 2 stack yourself.

Source & attribution

Based on the lenve/vhr GitHub repository (https://github.com/lenve/vhr), including its README and project wiki.

GitHub data · last synced Aug 15, 2026Reviewed by Henry
Back to TopGit

Is vhr worth your time?

ChatGPT, Claude and Perplexity can all read this page. Ask one of them what it makes of vhr.

GitHub