Skip to content
CAI
Software that uses CAICheck a score

hnjaman/complete-microservice-application

39.9

Weak · 21 September 2026

1.3k

lines of production code

Java

with TypeScript, JavaScript

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a microservices-based e-commerce platform that manages product catalogs, pricing, and discount offers. It comprises an Angular frontend, an API gateway for routing and security, and separate backend services for products and offers, all registered with a service discovery registry. The architecture leverages Spring Cloud components like Zuul and Eureka to handle cross-cutting concerns such as authentication, CORS, and circuit breaking.

Features

Added MIT license, macOS RabbitMQ installer, and comprehensive project documentation

The repository now includes a MIT License file, a shell script for installing RabbitMQ on macOS, and a detailed README explaining the microservice architecture, including service registry, API gateway, and frontend setup. The .gitignore file was also updated to exclude build artifacts and IDE-specific files for the Angular frontend and Spring Boot services.

(repo-wide) · high confidence

Initial API Gateway setup with Zuul proxy and Hystrix fallbacks

The api-gateway module is introduced, configuring a Spring Boot application that acts as a reverse proxy using Spring Cloud Netflix Zuul. The gateway routes requests for /product-service/\\ and /offer-service/\\ to their respective microservices. It includes Hystrix circuit breaker support with custom fallback responses for the product service, enabling graceful degradation. Additionally, the configuration enables CORS headers for all paths and registers with the Eureka service registry.

api-gateway · high confidence

Initial release of the microservice-ui frontend application

The microservice-ui Angular application has been introduced, providing a web interface for managing products, prices, and discounts. The UI integrates with backend services via a REST service layer, featuring components for adding new products, setting prices, and applying discounts. The application includes a store view displaying product details, prices, and discount offers, along with dialog forms for data entry. Authentication is handled via a middleware that validates JWT tokens for protected routes. The project is configured with Angular Material, Bootstrap, and Font Awesome for styling, and includes end-to-end tests using Protractor.

microservice-ui · high confidence

Behavioural changes

Add offer retrieval and update logic

The offer service now supports fetching all offers via a new GET /offer endpoint, and the existing POST /offer endpoint has been updated to update an existing offer if the product ID is already present, rather than always creating a new one. Additionally, the service is now registered with the service discovery client, and the event dispatcher has been updated to use the 'offer.pushed.key' configuration property.

offer-service/src/main/java · medium confidence

Product service adds pricing and discount calculation logic

The product service now tracks and calculates product pricing. A new method allows setting a product's price and automatically computes the current price after applying any configured discount. Additionally, the list of all products is now sorted by price in ascending order.

service-registry · high confidence

Product service updates: new endpoints, H2 database, and service discovery

The product-service now exposes new REST endpoints to add and retrieve product prices, and to fetch individual products by ID. It also adds a discount offer handler that only processes offers greater than zero. Internally, the service switched from MySQL to an embedded H2 database for local development, enabled Eureka service discovery, and removed the unused MultiplicationResultAttempt client and related DTOs. The application is now registered with the service registry and supports CORS for the frontend at localhost:3000.

product-service · medium confidence

Switched database to H2 and enabled service discovery

The offer-service configuration has been updated to use the in-memory H2 database instead of MySQL, with the H2 console enabled at /h2. Additionally, Eureka service discovery has been configured, allowing the service to register with the service registry at localhost:8761. The RabbitMQ exchange key was also updated from 'offer.solved' to 'offer.pushed'.

offer-service/src/main/resources · high confidence

Test coverage

Disabled OfferServiceApplicationTests

The integration test for the offer service has been commented out, effectively disabling the context load test for the application.

offer-service/src/test · high confidence

Dependencies

Upgrade to Spring Boot 2.1.0 and Spring Cloud Greenwich.M3

The project dependencies have been updated to use Spring Boot 2.1.0.RELEASE and Spring Cloud Greenwich.M3 across the api-gateway, service-registry, offer-service, and product-service modules. This includes adding Spring Cloud Netflix dependencies (Eureka client, Ribbon, Zuul) and upgrading the Lombok library to version 1.18.2. Additionally, the database configuration for offer-service and product-service has been switched from MySQL to H2, and the service-registry module has been updated to include JAXB dependencies required for Java 9+ compatibility.

(dependencies) · high 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

Score

  • CAI 43 → 40 (-3.2)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 86 → 91 (+4.5)
  • Architecture 100 → 76 (-24.2)
  • Maturity 64 → 64 (+0.0)
  • Readiness 37 → 28 (-8.9)
  • Security 66 → 66 (+0.0)
  • Accessibility 30 → 30 (+0.0)

Resolved (58)

  • Coverage not included — suite not readable by the collector
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical vulnerability: [GHSA redacted] (microservice-ui/package-lock.json)
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • …and 38 more

New (126)

  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical CVE: [GHSA redacted] (microservice-ui/package-lock.json)
  • Critical vulnerability: [GHSA redacted] (microservice-ui/package-lock.json)
  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no installation or build instructions (README.md)
  • …and 106 more

Architecture

  • Containers 0 added · 0 removed · contexts 2 added · 1 removed · edges 0 added · 0 removed

Added bounded contexts (2)

  • offer-service
  • product-service

Removed bounded contexts (1)

  • service-registry

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

hnjaman/complete-microservice-application 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 9c3996dcccbc637a471ff46ce1a37d272919b3b8 — 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.