Software Engineer · Full Stack · Backend

Production software, documented architecture, live deployment.

I am Li Hong. NovaDesk is my engineering portfolio — a monorepo with microservices, shared packages, CI/CD, and four live applications behind a single API gateway. It demonstrates how I design, build, and operate production-ready systems.

Reviewer path: About → Engineering → Case Studies → Live demo — under three clicks.

Repository metrics

Quantified scope of the monorepo — useful for reviewers evaluating system complexity and engineering investment.

5

Applications

6

Backend services

8

Shared packages

1,262

TypeScript files

22

Bounded-context modules

24

Core technologies

21

Engineering docs

7

Architecture decisions

NovaDesk modules

Five applications and six backend services sharing authentication, observability, and a unified design system — routed through Nginx and an API gateway. Open any module to inspect a live, deployable component.

HelpDesk SaaS

app

Multi-tenant ticket management with SLA policies, agent workflows, and real-time collaboration.

NestJSNext.jsPostgreSQLBullMQ
Open app →

Analytics Dashboard

app

Business intelligence views with KPI tracking, exportable reports, and role-based dashboards.

NestJSNext.jsChartsCSV/PDF
Open app →

Admin Portal

app

Central control plane for users, tenants, service health, and platform-wide configuration.

Next.jsRBACSDK
Open app →

Realtime Chat

app

WebSocket-powered messaging integrated with HelpDesk for agent and customer conversations.

WebSocketRedis Pub/SubNestJS
Open app →

Auth Service

service

JWT authentication with RS256, refresh token rotation, multi-tenant RBAC, and JWKS.

NestJSPostgreSQLRedisJWT
Backend service

API Gateway

service

Unified entry point with JWT validation, rate limiting, circuit breaking, and service proxying.

NestJSRedisOpenTelemetry
Backend service

Notification Service

service

Transactional email delivery, in-app notifications, and template-driven messaging.

NestJSBullMQSMTPPostgreSQL
Backend service

Analytics API

service

Metrics aggregation, KPI queries, and export endpoints for the analytics dashboard.

NestJSPostgreSQLPrisma
Backend service

Realtime Chat Service

service

WebSocket messaging with Redis pub/sub for agent and customer conversations.

Socket.IORedisNestJS
Backend service

Engineering highlights

Patterns and practices applied across the platform — not marketing labels, but concrete implementation choices visible in the codebase and infrastructure.

Production Ready

Operations

Live deployment with Docker, Nginx reverse proxy, and CapRover per-service builds.

Docker

Operations

Containerized services with compose-based local stack and captain-definition per component.

CI/CD

Operations

GitHub Actions pipeline with lint, typecheck, test, and path-scoped builds.

Monorepo

Architecture

pnpm workspaces with Turborepo caching and explicit package boundaries.

Shared Packages

Architecture

Cross-cutting concerns centralized in auth, config, logger, SDK, UI, and shared types.

Microservices Ready

Architecture

Domain-oriented services behind an API gateway with independent deploy units.

OpenAPI

Quality

Swagger documentation exposed on each NestJS service for contract visibility.

Type Safety

Quality

End-to-end TypeScript with Prisma, Zod, and shared contracts across clients and APIs.

RBAC

Quality

Role-based access control with multi-tenant isolation at workspace scope.

DDD

Architecture

Bounded contexts with domain, application, infrastructure, and presentation layers.

SOLID

Architecture

Ports-and-adapters pattern with dependency injection and interface segregation.

Clean Architecture

Architecture

Framework-agnostic domain logic with explicit use cases and repository ports.

Engineering decisions

Technology choices with explicit rationale. Each decision is documented as an ADR in docs/adr.

Turborepo

Monorepo orchestration with remote-aware build caching and task pipelines.

Five applications and six services share types and tooling. Turborepo parallelizes builds and avoids redundant work across CI and local development.

Read ADR →

NestJS

Backend framework for all microservices with modular DI and OpenAPI integration.

Consistent module structure, guards, interceptors, and testing patterns across services. NestJS enforces boundaries that map directly to domain modules.

Read ADR →

Next.js

App Router for all frontends and the public website with SSR/SSG where appropriate.

Unified React stack, server components for performance, and API routes only at integration boundaries (e.g. contact form proxy).

Read ADR →

PostgreSQL

Primary relational store with Prisma ORM and per-service database ownership.

ACID guarantees, mature ecosystem, JSON support when needed, and schema migrations as living documentation.

Read ADR →

Docker

Container-first deployment with compose for local dev and CapRover for production.

Reproducible environments, isolated service deploys, and infrastructure-as-code alignment with production topology.

Read ADR →

Shared Packages

Eight workspace packages for cross-cutting concerns instead of copy-paste utilities.

Single source of truth for auth guards, env validation, logging format, UI primitives, and API contracts reduces drift between apps.

Read ADR →

Monorepo

Single repository with pnpm workspaces spanning packages, services, apps, and website.

Atomic changes across frontend and backend, shared CI, and visible architecture for reviewers evaluating engineering maturity.

Read ADR →

Case studies

Production systems delivered before NovaDesk — each documented with architecture, trade-offs, security, and lessons learned. Source code for these projects is not in this repository; documentation is based on direct engineering involvement.

Spell

In production at spelltalk.com.br

Multi-tenant SaaS for WhatsApp and Instagram customer service with RAG-grounded AI, human handoff, visual flows, and billing.

FastifyReactPostgreSQL
Read case study →

Broom

20+ franchise brands on one platform

White-label ride-hailing platform powering regional mobility brands with passenger/driver apps, admin panel, and WhatsApp booking.

GraphQLReact NativePostgreSQL
Read case study →

Teste de Perfil

3 assessment flows in production

Behavioral profile assessment platform for Paulo Odorico — online courses, corporate training events, and investor profiling.

Next.jsPostgreSQLPrisma
Read case study →

Get in touch

Have a project in mind? Send a message and I'll get back to you.