feiniaojin/ddd-live
41.3
Weak · 21 September 2026
1.9k
lines of production code
Java
primary language
4
measurements over time
What this system is
This system is a live streaming application built on a Domain-Driven Design architecture, managing core entities like broadcasts, rooms, and streamers. It provides a dual-persistence layer using Spring Data JDBC and MyBatis, alongside infrastructure for URL generation and caching. The application exposes these capabilities through a Spring Boot launcher, RESTful web consoles, and background workers for processing commands.
Features
Add live streaming persistence layer with Spring Data JDBC and MyBatis
The live infrastructure now supports persistence for live streams, rooms, and streamers. This change introduces a dual-persistence approach: Spring Data JDBC repositories (LiveJdbcRepository, RoomJdbcRepository, StreamerJdbcRepository) alongside MyBatis mappers (LiveMapper, RoomMapper, StreamerMapper) and their corresponding XML configurations. The JdbcConfig class wires both technologies, enabling the domain entities (LiveEntity, RoomEntity, StreamerEntity) to be saved and loaded via either the JDBC or MyBatis layers. Additionally, the SQL schema for the t\_live, t\_room, and t\_streamer tables is included to support these new data models.
ddd-live-infrastructure-persistence · high confidence
Add live, room, and streamer application services
Introduces the application service layer for the live streaming feature, including command and query services for managing live broadcasts, rooms, and streamers. This adds the ability to create, modify, and query live sessions, rooms, and streamer profiles, along with associated DTOs and factories.
ddd-live-application-service · high confidence
Added live streaming URL generation capabilities
The live infrastructure gateway now includes a new \LiveUrlGenerator\ utility that creates push and pull URLs for live streams. It supports generating addresses for RTMP, FLV, and HLS (m3u8) protocols, applying MD5-based authentication keys and expiration timestamps to secure the streams. This is wired through a \StreamConfig\ for domain and key settings, and exposed via the \StreamGatewayImpl\ implementation, which handles the actual URL generation logic for both push and pull operations.
ddd-live-infrastructure-gateway · high confidence
Initial Java scaffolding for cache and UI provider modules
The \ddd-live-infrastructure-cache\ and \ddd-live-user-interface-provider\ modules each received a new \Main.java\ file containing a basic Java application that prints a welcome message and iterates through a simple loop. This establishes the foundational entry points for these components.
ddd-live-infrastructure-cache, ddd-live-user-interface-provider · high confidence
Initial commit of live streaming components
Added new Java classes for the live streaming feature: a \LiveListener\ in the subscriber module, a \LiveTask\ worker that periodically processes forbidden stream commands via \LiveCommandService\, and placeholder \Main\ entry points for both the subscriber and worker modules.
ddd-live-user-interface-subscriber, ddd-live-user-interface-worker · high confidence
Initial release of the live streaming application launcher
The ddd-live-launcher module is introduced as a new Spring Boot application entry point, configuring the server on port 9799 with MySQL database connectivity via HikariCP, Jackson serialization settings, and specific configurations for DDD live streaming domains such as pull/push domains and keys.
ddd-live-launcher · high confidence
Initial web console and Diliddli interface controllers for live, room, streamer, and user management
Added the web console module with REST controllers for managing live sessions, rooms, streamers, and user authentication (login/info). The console exposes endpoints for listing, creating, and modifying live content and rooms, as well as streamer management. A dedicated Diliddli interface provides live query and retrieval endpoints. Both modules include a Spring configuration class enabling graceful response handling.
ddd-live-user-interface-web-console, ddd-live-user-interface-web-diliddli · high confidence
Introduce live streaming domain model
Added the core domain model for the live streaming feature, including entities for live broadcasts, rooms, and streamers, along with their respective factories, repositories, and ID value objects. This establishes the foundational structure for managing live broadcast states, room configurations, and streamer profiles within the DDD live domain.
ddd-live-domain · high confidence
Dependencies
Initial project structure and dependency management
The project is initialized with a multi-module Maven structure, defining modules for domain, application service, infrastructure (cache, gateway, persistence, publisher), and user interfaces (web console, worker, provider, subscriber) along with a launcher. The root pom.xml establishes a Spring Boot 2.7.15 parent, managing versions for Spring Kafka, MyBatis (2.3.1), Jackson (2.15.2), Lombok (1.18.12), and internal DDD modules. Specific modules declare dependencies on these libraries and internal artifacts, such as the persistence module using spring-boot-starter-data-jdbc and mybatis-spring-boot-starter, while web modules depend on spring-boot-starter-web.
(dependencies) · medium confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 43 → 41 (-1.7)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 99 → 98 (-0.9)
- Architecture 100 → 78 (-21.8)
- Maturity 52 → 52 (+0.0)
- Readiness 17 → 17 (+0.0)
- Security 63 → 63 (+0.0)
Resolved (26)
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Duplicated block (5 lines × 2) (ddd-live-infrastructure-gateway/src/main/java/com/feiniaojin/ddd/live/infrastructure/gateway/stream/LiveUrlGenerator.java)
- Duplicated block (7 lines × 2) (ddd-live-infrastructure-gateway/src/main/java/com/feiniaojin/ddd/live/infrastructure/gateway/stream/LiveUrlGenerator.java)
- Duplicated block (8 lines × 3) (ddd-live-application-service/src/main/java/com/feiniaojin/ddd/live/application/service/live/LiveQueryService.java)
- Duplicated block (8 lines × 3) (ddd-live-infrastructure-persistence/src/main/java/com/feiniaojin/ddd/live/infrastructure/persistence/LiveEntityRepositoryImpl.java)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- No exposed public API
- …and 6 more
New (36)
- Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
- Documentation: no contributor guidance (README.md)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (18 lines × 4) (ddd-live-infrastructure-cache/src/main/java/com/feiniaojin/Main.java)
- Duplicated block (2–5 lines × 5) (ddd-live-infrastructure-gateway/src/main/java/com/feiniaojin/ddd/live/infrastructure/gateway/stream/LiveUrlGenerator.java)
- Duplicated block (39 lines × 2) (ddd-live-user-interface-web-console/src/main/java/com/feiniaojin/ddd/live/ui/web/controller/RoomController.java)
- Duplicated block (3–6 lines × 3) (ddd-live-infrastructure-gateway/src/main/java/com/feiniaojin/ddd/live/infrastructure/gateway/stream/LiveUrlGenerator.java)
- Duplicated block (6 lines × 2) (ddd-live-infrastructure-gateway/src/main/java/com/feiniaojin/ddd/live/infrastructure/gateway/stream/LiveUrlGenerator.java)
- Duplicated block (6 lines × 3) (ddd-live-application-service/src/main/java/com/feiniaojin/ddd/live/application/service/live/LiveQueryService.java)
- Duplicated block (7–8 lines × 2) (ddd-live-infrastructure-persistence/src/main/java/com/feiniaojin/ddd/live/infrastructure/persistence/LiveEntityRepositoryImpl.java)
- Duplicated block (8 lines × 3) (ddd-live-infrastructure-persistence/src/main/java/com/feiniaojin/ddd/live/infrastructure/persistence/LiveEntityRepositoryImpl.java)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- …and 16 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
feiniaojin/ddd-live was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 8fac46ba98a272ff08a86e0ed700d3ee26fb6831 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-fa71c66cabd8.