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.

Backend Frontend


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.login code 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).

End-user documentation overview — login, appointment booking, news, forum, and admin review flows

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.

Docker build and compose-up: all layers pulled, app and database containers started
Docker Desktop: app (562 MB) and PostgreSQL containers running on Tencent Cloud

Testing

Backend service logic is covered by JUnit tests using Spring’s @Autowired injection. JaCoCo generates per-package coverage reports after each test run.

JaCoCo coverage report — service and controller packages; entity layer at near-zero missed instructions

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)