Back to home
ONLINE 2026 PRIVATE Team (2)

LVTN — Thesis Management System

A university thesis-management system — 5 gRPC services + GraphQL gateway, ~80% auto-generated by grpc-gen

GogRPCGraphQLgqlgenMongoDBMySQLRedisMinIODockermTLS
0
gRPC services
~0%
Auto-generated
0
Authz layers
0
CI/CD Docker images

Overview

A microservice backend for managing university graduation theses, generated from grpc-gen: about 80% of the code (CRUD services, GraphQL gateway, business engine) is auto-generated, the rest being business logic and a few hand-coded services (grpc-gen is just a fast-coding tool, inspired by Hasura/PostgREST). It has 5 gRPC services (user, academic, thesis, council, file) + 1 GraphQL gateway, a data-driven business engine on MongoDB (rule/RLS/action hot-reload), multi-layer authorization (operation + field + row-level), a role hierarchy that changes per semester, Google OAuth + JWT auth, MinIO upload, mTLS between services, and CI/CD that auto-builds 6 Docker images.

Role: DEV in a 2-person team (BA + DEV) — built the system with grpc-gen, wrote the business logic and hand-coded services

System architecture

> Client
Web / Mobile
GraphQL + REST + WS
> Gateway :8081
gqlgen
GraphQL
Business Engine
Mongo hot-reload
JWT + OAuth
Admin REST
> 5 gRPC services (mTLS)
user
academic
thesis
council
file
> Storage
MySQL
MongoDB
engine
Redis
MinIO

Modules & Services

Microservices

5
useracademicthesiscouncilfile

Gateway

4
GraphQL (gqlgen)DataLoaderRedis 2-layer cacheAdmin REST

Authorization

5
op_authfield_authread_scope (RLS)Role hierarchyPer-semester

Business Engine

4
business_ruleactionHot-reloadMongo-backed

Auth & Files

4
Google OAuthJWT HS256MinIO uploadmTLS

CI/CD

4
GitHub Actions6 Docker imagesDocker HubWatchtower

Key features

5 gRPC microservices (user, academic, thesis, council, file) + 1 GraphQL gateway
~80% auto-generated by grpc-gen, the rest is business logic + a few hand-coded services
Data-driven business engine on MongoDB: rule / RLS / action, hot-reload without redeploy
Multi-layer authorization: operation-level (op_auth) + field-level (field_auth) + row-level (read_scope)
Role hierarchy + per-semester: ADMIN > DEPT_LECTURER > TEACHER > STUDENT, changing each semester
Google OAuth (production) + dev fallback, JWT HS256; GraphQL gateway with N+1-proof DataLoader + Redis 2-layer cache
mTLS between gateway ↔ services, file upload via MinIO
CI/CD GitHub Actions: build 6 Docker images (matrix) → Docker Hub → Watchtower deploy

Highlights

~80% auto-generated by grpc-gen — a whole microservice system stood up quickly
One of the two real apps used to production-test grpc-gen (~700 integration tests)
Three-layer authorization + per-semester roles — close to a real university model
Business engine: edit rules as Mongo documents, no redeploy needed
Lý Vĩnh Thái - Backend Developer & DevOps Engineer