Architecture
Overview
Jet is an Angular CLI-generated project that includes useful components, constants, directives, enums, guards, interfaces, services, tokens and types. The components leverage Angular Material for consistency, scalability and extensibility.
Composition
Jet comprises the following features layered in succession, saving several hours of development, decision-making, documentation reading and trial and error.
No. | Feature | DIY | Jet Lite | Jet |
---|---|---|---|---|
1 | Angular CLI project with routing, SCSS styles, without SSR/SSG | ✔️ | ✔️ | |
2 | Angular Material with custom theme, global typography styles and animations enabled | ✔️ | ✔️ | |
3 | Additional styles and theme optimisations | ✔️ | ||
4 | ✔️ | ✔️ | ||
5 | Additional | ✔️ | ||
6 | ✔️ | ✔️ | ||
7 | Additional lint rules with recommended configuration | ✔️ | ||
8 | ✔️ | ✔️ | ||
9 | ✔️ | |||
10 | ✔️ | ✔️ | ||
11 | ✔️ | |||
12 | Husky with | ✔️ | ✔️ | |
13 | Commitlint and related packages | ✔️ | ✔️ | |
14 | Commitlint configuration and | ✔️ | ||
15 | Transloco with | ✔️ | ✔️ | |
16 | ✔️ | |||
17 | Transloco Keys Manager with CLI strategy to manage translation keys | ✔️ | ✔️ | |
18 | ✔️ | |||
19 | @ngx-env/builder to manage environment variables | ✔️ | ||
20 | App Component rewrite with progress bar, side navigation, bottom navigation, notch handling, toolbar title handling and optimisations | ✔️ | ||
21 | Page Component to manage SEO meta tags of page-level components | ✔️ | ||
22 | Home Page Component for default route | ✔️ | ||
23 | Settings Page Component to manage settings | ✔️ | ||
24 | Analytics Directive to capture events | ✔️ | ||
25 | Alert Service to manage alerts | ✔️ | ||
26 | Analytics Service to manage events | ✔️ | ||
27 | Logger Service to manage logger | ✔️ | ||
28 | Progress Bar Service to manage progress bar | ✔️ | ||
29 | Settings Service to manage settings | ✔️ | ||
30 | Storage Service to manage storages | ✔️ | ||
31 | Toolbar Title Service to manage toolbar title | ✔️ | ||
32 | Update Service to manage service worker updates | ✔️ | ||
33 | ✔️ | |||
34 | ✔️ | |||
35 | ✔️ | |||
36 | GitHub issue templates for Bug Report, Documentation Request, Feature Request and Question | ✔️ | ||
37 | Release Please Action with configuration to automate versioning | ✔️ | ||
38 | Helpful project-level VSCode settings in | ✔️ | ||
39 |
| ✔️ | ||
40 | ✔️ | |||
41 | Helpful | ✔️ | ||
42 | Helpful | ✔️ | ||
43 | TSConfig Paths and Type Checking rules | ✔️ | ||
44 | New features | ✔️ | ||
45 | Regular updates | ✔️ | ✔️ |
Conventions
Page-level component names are suffixed with
Page
(e.g.HomePageComponent
,SettingsPageComponent
) and use the Page Component to update their SEO meta tags.All file names are suffixed with
.<type>
(e.g.default-font.constant.ts
,settings.interface.ts
) for easy navigation.All classes log their initialisation using the Logger Service to help during debugging.
Translations are scoped by components, with their selector as the key.
Folder Structure
Jet retains the original structure of an Angular CLI-generated project but organizes elements by type within the app
folder. This folder structure works well for small to medium complexity apps. However, as the number of features grows, it is advisable to group elements by feature.
Dependencies
Production
Development
Last updated