
Design and build a complete full-stack web app using Spring Boot and Angular, dockerized PostgreSQL with DBeaver, implement JPA entities with DAO and REST layers, and secure with JWT.
Design the domain model for the Optimer application using Diagram IO to define tables, relationships, and composite keys, including operations, operation types, providers, assets, inventory, patients, and assessments.
Install and configure Docker on your local machine, then download and run the Postgres image to start a Postgres database container and learn to pull and list images.
Learn to run a postgres container with docker, create database optimizer via sql, connect with DBeaver, test the connection, and create an example table.
Create a Spring Boot project with Spring Initializr, selecting project type, Spring Boot version, packaging, Java version, and dependencies; generate and import the downloaded project into IntelliJ by copying pom.xml.
Configure Spring Boot data source by editing main properties and a local yml profile to connect to the database, setting url, username, password, driver, database platform, and show sql.
Explore the JPA assessment entity, with one team member, one patient, and preoperative assessments, using a composite key and mapsId to define relationships and a start date field.
Create the asset entity with an id, a type annotated with the enumerated annotation, and a name, using spring data entity and table, plus lombok for getters and no-arg constructor.
Configure the inventory entity as a one-to-one with the asset, using asset ID as the primary key and a count field.
Define a JPA entity for pre-operative assessment with a single field, a string primary key named name, using the usual annotations.
Define the patient JPA entity with a long id as the primary key, convert the national insurance number to a string, and add two fields: the name and the name.
Implement a JPA operation room entity with a long primary key, room number, building block, and floor, plus two enum fields for room type and room state.
Model the operation provider entity as the team member type in an operation, using the type field as the primary key from an enum and omitting the name field.
Define the team member as a JPA entity with three fields: id as primary key, name, and a many-to-one relationship to the operation provider table to denote the member type.
Learn to model a room inventory in JPA with a composite primary key (asset ID and room ID), using an embedded ID class and maps-to annotations for many-to-one relationships.
Define the operation type entity with a name, the primary key, room type, feel, and duration, and map many-to-many relationships to assets, providers, and pre-operative assessments, with enum annotations.
Create a JPA operation entity with annotations, featuring long id, operation type, enum state, a start date, and many-to-one relations to room and patient, plus a many-to-many with team members.
Explore the JPA operation report entity with a composite key from operation and team member, using an embedded ID class and the map's id annotation for the key field.
Review all entities carefully, pause after each class, set hibernate ddl auto to create, run the application, then reset to none and refresh DBeaver to verify the Optima database tables.
Implement a full crud rest api for the assessment entity by building the repository, service layer, and rest controller, with dto mapping and Postman testing.
Build an asset CRUD REST API by mapping between entity and dto, implementing repository and service layers, and exposing endpoints via a Spring Boot REST controller with security configuration.
Create, read, update, and delete inventory using a repository and service layer with rest endpoints, dto mapping, and Postman testing in a Spring Boot app.
Develop and test a repository, service layer, and rest api for pre-operative assessments, implementing create, read, update, delete operations with dto to entity mapping and postman validation.
Implement the patient repository and service layer with CRUD operations, expose rest endpoints via a rest controller, map dtos, and test using postman, while permitting unauthenticated access.
Develop a repository-backed service layer and rest endpoints for the operation provider, implementing create, read, update, delete operations with DTO mapping and postman testing.
Implement the operation room module with repository and service layers, expose rest endpoints using path variables and json bodies, test with postman, and configure Spring Security to bypass authentication.
Implement repository, service, and rest endpoints for the team member entity, map dto to entity, and test CRUD operations with Postman via the rest controller.
Implement the room inventory feature by building the repository, service layer, and rest endpoints, wiring composite ids and dto mappings, and testing CRUD operations with Postman.
Implement repository, service, and rest endpoints for operation type, map DTOs with MapStruct, enable CRUD operations and Postman testing, while wiring Maven dependencies and configuring security to allow unauthenticated access.
Implement repository, service layer, and rest endpoints for the operation entity, map dtos to and from entity, and test crud operations with postman.
Implement the operation report entity with a repository, service layer, and rest endpoints to perform create, read, update, and delete operations, using a DTO mapper and postman testing.
Implement authentication with spring security and jwt, defining user, role, and privilege entities with many-to-many relationships and enum-based names, plus unique constraints and a sql script.
Implement authentication in Spring by building UserDetailsService and UserDetails, loading users by username from the user repository, and mapping privileges to granted authorities.
Learn to implement JWT authentication in a Spring Boot app by building a JWT util and filter, wiring user details, token validation, and a user registration endpoint.
Implement jwt based authentication by defining dtos including abstract response dto and authentication request and response dtos, configuring an authentication controller with a manager, user details service, and jwt util.
Install node.js and angular cli, generate a new angular app, and run ng serve on port 4200; choose Visual Studio Code and add bootstrap to styles.
Create an angular header component using the angular CLI. Learn how the template, css, and ts files integrate, register the component in app.module.ts, and run the app with npm start.
Explore angular routing by building login and sign up components, configuring app routes, and using router outlet and routerLink to navigate between views.
Initialize a login form as a form group with email and pwd controls via ngOnInit, wire it to ngSubmit, and apply the main CSS while integrating a login image asset.
Create an Angular authentication service as an injectable class that stores the JSON token in local storage and uses a subject for real-time component updates, wired to the login component.
In this lecture, implement an auth response interface in an Angular app, manage token storage with localStorage, and expose isLoggedIn as an observable via the async pipe to update header.
Implement an Angular authentication path guard using canActivate to protect inside pages, by subscribing to the authentication service isLoggedIn and updating routing to block access after logout.
Learn how to implement a jwt http interceptor in Angular, automatically attach the token to requests, fetch operations via the http client, and secure calls against Spring security 403.
Build an Angular patient component with routing, a service, HTTP client calls, and observable-driven UI for create, update, and delete via a Bootstrap modal form.
Create a team member component mirroring the patient component, connect the child with a select, and load the child list via a dedicated service and observable.
Create the operation type component with three multi-select fields to link multiple child entities, load child lists via services, and build HTTP request body by mapping selected IDs for submission.
Create Angular component with create, edit, delete flows, using a shared service and modal form; manage child entities via single and multiple selects and wire router path to HTTP body.
Create the RoomInventory component by mirroring the patient component’s TypeScript, template, and service logic, and implement routing, header links, a modal form, and a multi-select UI for many-to-many relationships.
Create operation room component by mirroring patient component's TypeScript and template, align form controls with TypeScript names, include a modal with multi-select for many-to-many relationships, update router and header.
Build the operation component by mirroring the patient component's TypeScript, template, and service logic; implement modal forms, multi-select for child entities, and ng-class styling to shape the HTTP request body.
Create operation report component by mirroring patient component, wire router path and link, use multi-select for child entities, and ensure form controls align while regenerating table to fix composite key.
Implement server side validation for the operation entity, returning an error response dto when validation fails and handling exceptions in the create operation method to inform the client.
Are you ready to take your web development skills to the next level? This course is designed to help you master full-stack development by building a complete web application from scratch using Angular, Spring Boot, and Docker.
Throughout this hands-on course, you'll learn how to create a dynamic and responsive Angular frontend that seamlessly interacts with a powerful Spring Boot backend. We’ll start with the fundamentals, guiding you through planning and designing your database tables, setting up a PostgreSQL database in Docker, and creating a robust backend using Spring Boot. You’ll then dive into the frontend, where you'll generate an Angular application, implement routing, build a custom login form, and integrate JWT authentication to secure your app.
By the end of this course, you’ll have built a fully functional, professional-grade web application. You'll not only gain a deep understanding of how to integrate and manage a full-stack project but also acquire the confidence to apply these skills in real-world scenarios.
Whether you're an aspiring full-stack developer, a Java or frontend developer looking to expand your skill set, or an IT professional seeking to stay ahead in the industry, this course is for you. Join me on this exciting journey, and let's build something amazing together!