Skip to content
Back to Projects
Dev Lab — Personal Practice & Tooling Monorepo

Learning Lab

Dev Lab — Personal Practice & Tooling Monorepo

Solo Developer 2026 — Present 1 developer
Source available
  • Spring Boot
  • Java 21
  • MyBatis
  • PostgreSQL
  • Maven
  • Gradle

Project Summary

Problem

Two years of backend practice work — core Java drills, Spring Boot topics by area, and a handful of small full apps — were scattered across four separate repositories with no consistent structure, so old work was hard to find or resume. Dev Lab consolidates that history into one browsable monorepo instead of losing it across dead repos.

Approach

Dev Lab keeps independent learning projects discoverable without presenting them as one production product. Each folder has its own build and documentation.

What I Built

  • Core Java exercises covering OOP, collections, generics, and patterns
  • Spring Boot practice organized by web, data, security, testing, and messaging
  • A MyBatis store-admin application on PostgreSQL
  • Focused API, JWT, and engineering-note projects that run independently

Implementation

Each folder is a standalone Java project with its own Maven or Gradle wrapper, so exercises and small applications can be opened, built, and documented independently.

architecture

java-core-mastery-lab — Java 21 core exercises
spring-boot-lab — Spring Boot topics by area
heang-dev-lab — Spring Boot + MyBatis store admin
heang-api-center — Spring Boot API practice
spring_jwt_authentication — JWT auth practice
There's no single request path here — Dev Lab's 'architecture' is its repo layout, not a runtime flow. Each folder is a standalone project with its own build tool and wrapper, so any one of them opens and runs in IntelliJ without touching the others.

Backend Evidence

Core data

usersproductcategoryco_smp_board_mstudentscompanycommon_codebudget_mng

Key endpoints

  • GET/api/products

    Paged product listing (heang-dev-lab store admin)

  • POST/api/products

    Create a product — multipart or JSON body (heang-dev-lab)

  • GET/users

    List users (heang-dev-lab)

  • GET/api/ping

    Health check (heang-api-center)

Engineering Decisions

  1. Challenge

    Organizing unrelated practice projects without coupling their builds

    Decision

    Kept one independent build wrapper and README per project folder

  2. Challenge

    Making older learning work easy to find and resume

    Decision

    Added a root index that groups the lab by topic and application

Takeaways

  • A practice repo needs the same hygiene as a product repo — without one folder per project and a README table, old work becomes unfindable
  • Keeping each sub-project on its own build tool and wrapper is what let four repos merge without any of them breaking
Next Project

H-Phsar — B2B Marketplace API