AngularAndSpring

screenshot of AngularAndSpring
angular

This is an example application to show howto use Spring Boot 3, Angular 19, Kafka with Streams and Mongodb with the reactive features of Spring in a clean architecture and a Helm chart for the Kubernetes setup. Structurizr is used for C4 diagrams.

Overview

This product is an example application showcasing the use of Spring Boot, Angular, and MongoDB with the reactive Webflux features of Spring. It aims to be reactive from top to bottom, using Angular in the frontend, Spring Boot with Reactive Web as the server, and MongoDB as the database connected with the reactive MongoDB driver. The project focuses on clean architecture, security with Jwt Tokens, and efficient monitoring with Spring Actuator and Prometheus interface.

Features

  • Reactive Architecture: Utilizes Angular in the frontend and Spring Boot with Reactive Web as the server for a reactive chain from the browser to the database.
  • Security: Implements Jwt Tokens for user authentication and token invalidation upon logout.
  • Scheduled Tasks: Runs scheduled tasks to read exchange rates of cryptocurrencies and store them in MongoDB.
  • UI Features: Displays exchange rates on a table that updates regularly, shows out-of-date data in blue, and provides detailed views and charts for currency rates.
  • Lazy Loading: Implements lazy loading feature modules for orderbooks in the application.
  • Architectural Diagrams: Includes System Context, Container, and Component Diagrams using Structurizr.
  • Data Import: Application has scheduled jobs, including a ScheduledTask class to read crypto currencies rates every minute.
angular
Angular

Angular is a TypeScript-based open-source framework by Google for building dynamic single-page applications and cross-platform mobile apps with MVC architecture and a rich set of features.

typescript
Typescript

TypeScript is a superset of JavaScript, providing optional static typing, classes, interfaces, and other features that help developers write more maintainable and scalable code. TypeScript's static typing system can catch errors at compile-time, making it easier to build and maintain large applications.