Visiting SUSTech
[Spring Boot] WeChat Mini Program for campus access control · 10,000+ users
A WeChat Mini Program enabling campus visit appointment booking and QR code-based access verification at SUSTech. Developed as a 5-person team project over a 6-month lifecycle, serving 10,000+ users. My primary role was backend development — designing and implementing the Spring Boot API layer, authentication, caching, and containerized deployment.
Highlights
- Delivered a production WeChat Mini Program serving 10,000+ users across a 6-month lifecycle
- Implemented WeChat OAuth login with JWT token issuance —
wx.logincode exchange → session encryption → JWT signed token returned to client - Integrated Redis to cache high-frequency queries (appointment slots, news feed), reducing database load on peak access periods
- Designed RESTful APIs across 9 controllers (appointment, forum, news, user, QR auth) backed by PostgreSQL via Spring Data JDBC
- Containerized the full stack (app + PostgreSQL) with Docker Compose and deployed to Tencent Cloud
- Backend covered by JUnit service-layer tests with JaCoCo coverage reporting
System Overview
The mini program covers three user roles: visitors (book appointments, scan QR codes), administrators (review and approve bookings, publish news), and registered users (forum, campus map, profile).
Backend Architecture
Tech stack: Spring Boot · Spring Data JDBC · PostgreSQL · Redis · JWT · WeChat OAuth
The backend exposes RESTful endpoints organized into 9 controllers:
| Controller | Responsibility |
|---|---|
WxLoginController | WeChat OAuth code exchange, session encryption, JWT issuance |
AppointmentController | Booking creation, status management, QR code verification |
UserController | User profile read/write |
NewsController | Campus news CRUD (admin-only publish) |
ForumController | Forum posts and threads |
CommentController | Comment threads on forum posts |
ForumLikeController | Like/unlike actions |
ForumResourceController | File attachments on forum posts |
ImageController | Image upload and retrieval |
Authentication uses a custom JWT interceptor — every request carries a signed token containing an encrypted WeChat session, which the interceptor decrypts and validates before routing to the controller.
Deployment
The application is containerized with Docker and orchestrated via Docker Compose: the Spring Boot service and PostgreSQL run as independent containers with environment-variable-based configuration.
Testing
Backend service logic is covered by JUnit tests using Spring’s @Autowired injection. JaCoCo generates per-package coverage reports after each test run.
Technical Summary
| Role | Backend Developer |
| Team | 5 members |
| Scale | 10,000+ users · 6-month lifecycle |
| Backend | Java 17, Spring Boot, Spring Data JDBC, PostgreSQL, Redis |
| Auth | WeChat OAuth + JWT + AES session encryption |
| Frontend | WeChat native framework, Vant Weapp, WeUI |
| Deployment | Docker, Docker Compose, Tencent Cloud |
| Testing | JUnit, JaCoCo (backend); Minium + Python (frontend) |
| Codebase | ~2,900 lines Java (backend) · ~4,300 lines JS/WXML (frontend) |