Hello everyone in the developer community! πŸ‘‹ I'm a backend developer with 3 years of experience in building scalable and maintainable systems.
Tech Dung

Tech Dung @tech_persona21

About: Hello everyone in the developer community! πŸ‘‹ I'm a backend developer with 3 years of experience in building scalable and maintainable systems. Nice to meet you everyone!

Joined:
May 21, 2025

Hello everyone in the developer community! πŸ‘‹ I'm a backend developer with 3 years of experience in building scalable and maintainable systems.

Publish Date: May 21
5 2

Comments 2 total

  • Tech Dung
    Tech DungMay 21, 2025

    This is my very first product – a small starter project built based on the clean architecture structure I use in real-world projects. Though it’s simple, I’ve made sure it follows professional patterns and is easy to understand and extend.
    πŸ”Ή Tech Stack Highlights:
    Hexagonal Architecture (Ports & Adapters)
    Spring Boot (Kotlin)
    Kafka integration
    JOOQ + PostgreSQL
    Docker Compose-ready
    I hope you enjoy it, and thank you so much for your support!
    🎯 What’s next if I get your support?
    Deeper dive into Hexagonal Architecture patterns
    More Kafka use cases (event-driven, command, notification...)
    More complex real-world project structures
    Thank you for checking out my first product – stay tuned for more! πŸš€

    Project structure:
    a_spring_hexagonal_jooq_kafka_project/
    β”œβ”€β”€ category-backend/
    β”‚ β”œβ”€β”€ build.gradle.kts
    β”‚ β”œβ”€β”€ gradlew
    β”‚ β”œβ”€β”€ gradlew.bat
    β”‚ β”œβ”€β”€ gradle/wrapper/...
    β”‚ β”œβ”€β”€ settings.gradle.kts
    β”‚ β”œβ”€β”€ README.md
    β”‚ └── src/
    β”‚ β”œβ”€β”€ main/
    β”‚ β”‚ β”œβ”€β”€ kotlin/com/example/categorybackend/
    β”‚ β”‚ β”‚ β”œβ”€β”€ CategoryBackendApplication.kt
    β”‚ β”‚ β”‚ β”œβ”€β”€ adapter/
    β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ api/
    β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ CategoryController.kt
    β”‚ β”‚ β”‚ β”‚ β”‚ └── CategoryDTOs.kt
    β”‚ β”‚ β”‚ β”‚ └── db/
    β”‚ β”‚ β”‚ β”‚ └── JooqCategoryRepository.kt
    β”‚ β”‚ β”‚ β”œβ”€β”€ domain/
    β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ model/
    β”‚ β”‚ β”‚ β”‚ β”‚ └── Category.kt
    β”‚ β”‚ β”‚ β”‚ └── port/
    β”‚ β”‚ β”‚ β”‚ └── CategoryRepository.kt
    β”‚ β”‚ β”‚ β”œβ”€β”€ infrastructure/
    β”‚ β”‚ β”‚ β”‚ └── JooqConfig.kt
    β”‚ β”‚ β”‚ └── usecase/
    β”‚ β”‚ β”‚ β”œβ”€β”€ CategoryUseCase.kt
    β”‚ β”‚ β”‚ └── CategoryUseCaseImpl.kt
    β”‚ β”‚ └── resources/
    β”‚ β”‚ β”œβ”€β”€ application.yml
    β”‚ β”‚ └── db/migration/
    β”‚ β”‚ └── V1_create_category_table.sql
    β”‚ └── test/... (empty basic test structure)
    β”œβ”€β”€ product-backend/
    β”‚ β”œβ”€β”€ build.gradle.kts
    β”‚ β”œβ”€β”€ gradlew
    β”‚ β”œβ”€β”€ gradlew.bat
    β”‚ β”œβ”€β”€ gradle/wrapper/...
    β”‚ β”œβ”€β”€ settings.gradle.kts
    β”‚ β”œβ”€β”€ README.md
    β”‚ └── src/
    β”‚ β”œβ”€β”€ main/
    β”‚ β”‚ β”œβ”€β”€ kotlin/com/example/productbackend/
    β”‚ β”‚ β”‚ β”œβ”€β”€ ProductBackendApplication.kt
    β”‚ β”‚ β”‚ β”œβ”€β”€ adapter/
    β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ api/
    β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ ProductController.kt
    β”‚ β”‚ β”‚ β”‚ β”‚ └── ProductDTOs.kt
    β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ db/
    β”‚ β”‚ β”‚ β”‚ β”‚ └── JooqProductRepository.kt
    β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ http/
    β”‚ β”‚ β”‚ β”‚ β”‚ └── RemoteCategoryServiceAdapter.kt
    β”‚ β”‚ β”‚ β”‚ └── kafka/
    β”‚ β”‚ β”‚ β”‚ └── KafkaProductEventProducer.kt
    β”‚ β”‚ β”‚ β”œβ”€β”€ domain/
    β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ model/
    β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ Product.kt
    β”‚ β”‚ β”‚ β”‚ β”‚ └── event/
    β”‚ β”‚ β”‚ β”‚ β”‚ └── ProductCreatedEvent.kt
    β”‚ β”‚ β”‚ β”‚ └── port/
    β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ CategoryServicePort.kt
    β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ ProductEventPublisher.kt
    β”‚ β”‚ β”‚ β”‚ └── ProductRepository.kt
    β”‚ β”‚ β”‚ β”œβ”€β”€ infrastructure/
    β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ AppConfig.kt
    β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ JooqConfig.kt
    β”‚ β”‚ β”‚ β”‚ └── KafkaConfig.kt
    β”‚ β”‚ β”‚ └── usecase/
    β”‚ β”‚ β”‚ β”œβ”€β”€ ProductUseCase.kt
    β”‚ β”‚ β”‚ └── ProductUseCaseImpl.kt
    β”‚ β”‚ └── resources/
    β”‚ β”‚ β”œβ”€β”€ application.yml
    β”‚ β”‚ └── db/migration/
    β”‚ β”‚ └── V1
    _create_product_table.sql
    β”‚ └── test/... (empty basic test structure)
    β”œβ”€β”€ docker-compose.yml
    └── init-db.sh

Add comment