Design overview

Let's look at how our final application should look like

Project Source Code

Get the project source code below, and follow along with the lesson material.

Download Project Source Code

To set up the project on your local machine, please follow the directions provided in the README.md file. If you run into any issues with running the project source code, then feel free to reach out to the author in the course's Discord channel.

This lesson preview is part of the Next-Level Angular Apps with NX course and can be unlocked immediately with a \newline Pro subscription or a single-time purchase. Already have access to this course? Log in here.

This video is available to students only
Unlock This Course

Get unlimited access to Next-Level Angular Apps with NX, plus 70+ \newline books, guides and courses with the \newline Pro subscription.

Thumbnail for the \newline course Next-Level Angular Apps with NX
  • [00:00 - 00:12] Okay, we have our backend application migrated, we have our dtos extracted, we are ready to create two front-end applications. And in this lesson I'm going to show you the design we are going to achieve.

    [00:13 - 00:18] So we're about to add two applications. First one is room application.

    [00:19 - 00:34] It's going to be application that will be displayed next to the doors in the conference center. So we have a room and in that room you can have multiple different meetings and we want to inform people in front of that room that the meeting is in progress.

    [00:35 - 00:42] We want to inform them about future meetings and so on. So the room application will contain two screens.

    [00:43 - 00:51] You will have room select. So on that screen you have a grid of available rooms and you have to pick the one you want to display.

    [00:52 - 01:03] Each room will have as you probably remember ID, name and image that we are going to use as a background. We will have a predefined number of backgrounds you can select.

    [01:04 - 01:16] The second screen is the one that will be displayed after clicking on the room on the grid. It will contain room background as a full screen cover for the whole screen.

    [01:17 - 01:33] You will have room name and details about current meeting on the lower left side and you will have a list of future meetings. We cannot forget about back button that is in upper left side.

    [01:34 - 01:41] The room application is that simpler application. So we have the second application and we are going to call it admin application .

    [01:42 - 01:49] So it's going to be an admin panel for the room application. And similar to room application we will have the screens.

    [01:50 - 01:59] First one is a grid of rooms you can click and select for edit. And you will have a special button to add a new room.

    [02:00 - 02:08] So on this screen you can click to edit room or click to add a new room. The second screen is about room edit.

    [02:09 - 02:18] So first of all you will have details like room name. You will have a list of available backgrounds you can select.

    [02:19 - 02:30] And of course you will have a form to add a new meetings to that room. So basically on that screen you can edit all the room details and add new meetings.

    [02:31 - 02:40] We will use NX to create shared component libraries. So as you probably noticed both applications share some visual components like room on the grid.

    [02:41 - 02:48] It's similar on the room application and admin application. So we will have some reusable components that we will share between applications.

    [02:49 - 03:02] First of all we will have cards component that will be used on room grid and on a room details screen. We will have the same button component on both applications because we want to unify it.

    [03:03 - 03:12] And of course we will use some list components. I want to introduce here a new term we will call it domain components.

    [03:13 - 03:22] So reusable components like card or buttons are pretty damp. They have some inputs, they have some outputs but they do not contain any business logic.

    [03:23 - 03:36] So we will have some components that contain business logic and still we share it between the applications. So for example room list component.grid is a domain component.

    [03:37 - 03:46] It will contain all necessary logic to fetch list of the rooms and displayed. The second example of domain component will be room background component.

    [03:47 - 03:56] As I previously informed you we will have a predefined list of backgrounds. So after this lesson you know the design we want to achieve.

    [03:57 - 03:59] There is nothing more to do, let's start calling.