finds.dev← search

// the find

loiane/crud-angular-spring

★ 265 · Java · MIT · updated Sep 2026

🖥 CRUD Angular + Spring demonstrating Has-Many relationship, including tests for the back-end and front-end

A two-repo teaching project pairing a Spring Boot 4 / Java 25 REST API with an Angular v22 front end, built around a single Course-has-many-Lessons relationship. It's aimed at developers who already know the basics of both stacks and want to see a fuller-than-usual example — proper DTOs, validation, error handling, and tests on both sides — rather than a bare hello-world CRUD.

The test setup goes further than most demo repos: JUnit5/Mockito unit tests per layer, Testcontainers-backed integration tests against real MySQL, JaCoCo coverage, an architecture test (likely ArchUnit) enforcing layering, and even Pact contract tests between the Angular and Spring sides. API details are handled correctly rather than hand-waved — RFC 7807 problem details for errors, records as DTOs, a custom validator for course names enforced at both service and DB-constraint level, and soft delete instead of hard delete. The Angular side isn't stuck in 2020 either: standalone components, signals/computed/httpResource, zoneless change detection, and signal forms are all wired up, not just namedropped.

The README's own 'not implemented' list is the biggest tell: no auth/authorization, no caching, no rate limiting, no Docker build for the API — so 'close to production-ready' oversells it considerably. It's MySQL-specific in practice (docker-compose, schema.sql) despite the README claiming any DB works, and there's no deployment or CI beyond a build workflow, so you're on your own past `mvn test`. The domain model is also intentionally thin — one has-many relationship (Course→Lesson) — so it demonstrates the pattern but won't show you how the same approach holds up with more complex associations or larger schemas.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →