Skip to content

Commit 8fee2da

Browse files
committed
docs: revise README for clarity and update license copyright years
1 parent 4369c3b commit 8fee2da

2 files changed

Lines changed: 45 additions & 64 deletions

File tree

LICENSE.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
The MIT License
22

3-
Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
3+
Copyright (c) 2010-2026 Google LLC. https://angular.dev/license
44

5-
Copyright (c) 2024-2025 Joe Matthews, et al. https://github.com/joematthews/extreme-angular
5+
Copyright (c) 2024-2026 Joe Matthews, et al. https://github.com/joematthews/extreme-angular
66

77
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
88

README.md

Lines changed: 43 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
# Extreme Angular 21: A Stricter Starter Template
1+
# Extreme Angular: A Stricter Starter Template
22

33
![Meme showing Iron Man wearing the Nano Gauntlet before saving Earth. The caption reads, 'WHEN YOU FINALLY GET ALL THE DEV TOOLS TO WORK TOGETHER'](https://github.com/user-attachments/assets/b7e3a75f-a082-465b-a9cd-7557732b0589)
44

5-
Extreme Angular is a pre-configured Angular starter template with strict development tools that enforce best practices, ensure consistent code quality, and promote accessibility. It remains fully compatible with the [official Angular documentation](https://angular.dev/overview).
5+
Extreme Angular adds strict development tooling to a standard Angular project. Use it as a starter template or as a reference for configuring these tools in an existing project.
66

77
The underlying Angular project was generated with:
88

@@ -12,12 +12,18 @@ ng new --strict --zoneless --style=scss --ssr=false
1212

1313
## Why Use Extreme Angular
1414

15-
- **Skip weeks of setup** — ESLint, Prettier, Stylelint, CSpell, Git hooks, and CI work out of the box
16-
- **Zero configuration conflicts** — all tools are tested to work together seamlessly
17-
- **Focus on what matters** — discuss logic and architecture instead of arguing about formatting
18-
- **Consistent quality** — automatic code standards and accessibility checks across your team
19-
- **Clean foundation** — no custom code or complex workarounds needed
20-
- **Zoneless by default** — smaller bundle size and better performance with Angular 21's zoneless change detection
15+
Starting a new Angular project with `ng new` gives you a working app, but not the tooling layer that teams typically add over time. Extreme Angular bridges that gap:
16+
17+
- **ESLint** with angular-eslint, typescript-eslint (strict + stylistic), accessibility rules, and JSON linting
18+
- **Prettier** with plugins for import sorting, CSS property ordering, and shell script formatting
19+
- **Stylelint** for CSS and SCSS
20+
- **CSpell** for spell checking
21+
- **Husky + lint-staged** for pre-commit linting and pre-push validation
22+
- **Commitlint** for conventional commit messages
23+
- **GitHub Actions CI** for pull request validation
24+
- **Strict TypeScript and Angular compiler settings** beyond Angular's default strict mode
25+
26+
These tools are configured to work together without conflicts. Nothing here deviates from standard Angular — the [official Angular documentation](https://angular.dev/overview) applies without modification.
2127

2228
## Contributing
2329

@@ -51,39 +57,33 @@ Found an issue? Check the [existing issues](https://github.com/joematthews/extre
5157
- [Shell Configuration Frameworks](#shell-configuration-frameworks)
5258
- [JetBrains IDEs](#jetbrains-ides)
5359
- [Updating](#updating)
54-
- [License Considerations](#license-considerations)
5560

5661
## Getting Started
5762

58-
If you have a GitHub account, an easy way to get started is to select "Use this template" in the top right corner of the [GitHub page for Extreme Angular](https://github.com/joematthews/extreme-angular) and then select "Create a new repository". This will allow you to rename your repository and set it to private.
59-
60-
Alternatively, if you do not have a GitHub account, I recommend cloning only the most recent commit and renaming the remote branch to 'upstream'. (Replace `new_project_name` with the name of _your_ project):
61-
62-
```sh
63-
git clone --depth=1 --origin=upstream https://github.com/joematthews/extreme-angular.git new_project_name
64-
```
65-
66-
Change to the new project directory and install the dependencies:
63+
Clone the repository and install dependencies (replace `my-project` with your project name):
6764

6865
```sh
69-
cd new_project_name
66+
git clone --depth=1 --origin=upstream https://github.com/joematthews/extreme-angular.git my-project
67+
cd my-project
7068
npm install
7169
```
7270

73-
**Customize your project:**
74-
Use `CTRL+SHIFT+H` in VS Code to search and replace `extreme-angular` with your chosen project name.
71+
Using `--origin=upstream` names the remote `upstream` instead of `origin`, making it possible to [pull in updates](#updating) later.
7572

76-
**Start developing:**
73+
> [!TIP]
74+
> You can also select "Use this template" on the [GitHub page](https://github.com/joematthews/extreme-angular) to create a new repository. Note that template repositories don't maintain a connection to the original, so pulling in updates requires [additional setup](#updating).
75+
76+
Search and replace `extreme-angular` with your project name across the codebase, then start developing:
7777

7878
```sh
7979
npm start
8080
```
8181

8282
> [!TIP]
83-
> If you're using [VS Code](https://code.visualstudio.com/) and [Chrome](https://www.google.com/chrome/), then press `F5` on the keyboard to start the app in debug mode. For more information check out: [TypeScript in Visual Studio Code](https://code.visualstudio.com/docs/languages/typescript).
83+
> If you're using [VS Code](https://code.visualstudio.com/) and [Chrome](https://www.google.com/chrome/), press `F5` to start the app in debug mode. For more information check out: [TypeScript in Visual Studio Code](https://code.visualstudio.com/docs/languages/typescript).
8484
8585
> [!TIP]
86-
> The "Dev Tools Implemented" section below is project-agnostic -- consider adding it to your project's README.md or CONTRIBUTING.md!
86+
> The "Dev Tools Implemented" section below is project-agnostic consider adding it to your project's README.md or CONTRIBUTING.md!
8787
8888
## Dev Tools Implemented
8989

@@ -156,11 +156,7 @@ To lint all relevant files in the project (not just those in src/):
156156
npm run lint
157157
```
158158

159-
ESLint output is formatted using [eslint-formatter-mo](https://github.com/fengzilong/eslint-formatter-mo). To use normal formatting, remove the `-f mo` option from the `lint` script in [package.json](package.json):
160-
161-
```json
162-
"lint": "eslint -f mo \"**/*.{js,ts,html,json}\"",
163-
```
159+
ESLint output is formatted using [eslint-formatter-mo](https://github.com/fengzilong/eslint-formatter-mo). To use default formatting, remove `-f mo` from the `lint` script in [package.json](package.json).
164160

165161
> [!TIP]
166162
> Suppress the urge to immediately set rules to "off" or "warn". First, look up the rule and the problem it is correcting for and discuss the rule with other developers on the project.
@@ -191,7 +187,7 @@ npm run lint:style
191187

192188
[Prettier](https://prettier.io/) is used to enforce consistent code formatting, reducing diffs by minimizing formatting changes.
193189

194-
The base settings in [.prettierrc.json](./.prettierrc.json) (`printWidth: 100`, `singleQuote: true`) match Angular 21 defaults. This template adds the following enhancements:
190+
The base settings in [.prettierrc.json](./.prettierrc.json) (`printWidth: 100`, `singleQuote: true`) match Angular defaults. This template adds the following enhancements:
195191

196192
**htmlWhitespaceSensitivity: "ignore"** — Trims unnecessary whitespace around and inside HTML elements for cleaner templates. Use ` ` (non-breaking space) when you need to explicitly maintain spacing between inline elements.
197193

@@ -234,7 +230,7 @@ npm run lint:spelling
234230

235231
### Testing
236232

237-
[Vitest](https://vitest.dev/) is the default unit test runner for Angular 21, replacing Karma. Tests run in Node.js using [jsdom](https://github.com/jsdom/jsdom) to simulate the DOM, providing fast test execution without browser overhead.
233+
[Vitest](https://vitest.dev/) is the default unit test runner for Angular, replacing Karma. Tests run in Node.js using [jsdom](https://github.com/jsdom/jsdom) to simulate the DOM, providing fast test execution without browser overhead.
238234

239235
To run tests in watch mode:
240236

@@ -305,7 +301,7 @@ The shove script will stage all files, commit with the commit message `wip: shov
305301

306302
The [on-pull-request.yml](.github/workflows/on-pull-request.yml) workflow triggers [validate-code.yml](.github/workflows/validate-code.yml) to check all files and run tests when a pull request is opened or updated.
307303

308-
Pull requests on GitHub cannot be merged until all checks and tests pass. The output of these workflows can found in the 'Actions' tab on the GitHub repository.
304+
Pull requests on GitHub cannot be merged until all checks and tests pass. The output of these workflows can be found in the 'Actions' tab on the GitHub repository.
309305

310306
To execute these checks and tests locally:
311307

@@ -321,7 +317,7 @@ Angular has powerful [Internationalization](https://angular.dev/guide/i18n) capa
321317

322318
If you plan to implement internationalization in the future, adding i18n attributes early on can make the process easier to scale naturally.
323319

324-
To enable the i18n ESLint rule, simply add the following rule to the \*.html section of [eslint.config.js](./eslint.config.js):
320+
To enable the i18n ESLint rule, add the following rule to the \*.html section of [eslint.config.js](./eslint.config.js):
325321

326322
```js
327323
"@angular-eslint/template/i18n": "error",
@@ -333,7 +329,7 @@ To enable the i18n ESLint rule, simply add the following rule to the \*.html sec
333329
> [!TIP]
334330
> Using `eslint --fix` can automatically add i18n tags in many cases.
335331
336-
## End to End Testing (e2e)
332+
### End to End Testing (e2e)
337333

338334
Angular has schematics available for several end to end testing frameworks. The [Angular End to End Testing guide](https://angular.dev/tools/cli/end-to-end) will walk you through the steps to set one up.
339335

@@ -357,7 +353,7 @@ These are tips and tricks that are too opinionated or situational to include in
357353

358354
### Custom Formatting
359355

360-
This project uses Angular 21's formatting defaults: 2 space indentation, 100 character line width, and single quotes. Here's how to customize if needed:
356+
This project uses Angular's formatting defaults: 2 space indentation, 100 character line width, and single quotes. Here's how to customize if needed:
361357

362358
**Indentation** — set indent_size in [.editorconfig](.editorconfig):
363359

@@ -421,7 +417,7 @@ git config user.email "14097616+joematthews@users.noreply.github.com"
421417
422418
### Inlay Hints in VS Code
423419

424-
I _highly_ recommend enabling [inlay hints in VS Code](https://code.visualstudio.com/Docs/editor/editingevolved#_inlay-hints). They give me the confidence to use TypeScript's [type inference](https://www.typescriptlang.org/docs/handbook/type-inference.html) without feeling the need specify types 'for visibility'.
420+
Consider enabling [inlay hints in VS Code](https://code.visualstudio.com/Docs/editor/editingevolved#_inlay-hints). They make it easier to rely on TypeScript's [type inference](https://www.typescriptlang.org/docs/handbook/type-inference.html) without feeling the need to specify types 'for visibility'.
425421

426422
Add the following to the VS Code user settings to enable all inlay hints for JavaScript & TypeScript:
427423

@@ -452,9 +448,9 @@ To temporarily disable inlay hints use `CTRL + ALT` (or `CTRL + OPTION` on Mac)
452448

453449
### Font Ligatures
454450

455-
VS Code is capable of using 'font ligatures' -- not everyone likes font ligatures, but I really enjoy them.
451+
VS Code is capable of using 'font ligatures' -- they are worth trying if you haven't already.
456452

457-
The two most popular fonts that support font ligatures are [Fira Code](https://github.com/tonsky/FiraCode) and [Jet Brains Mono](https://www.jetbrains.com/lp/mono/). I typically use the 'Regular' `*.ttf` variant of each font.
453+
The two most popular fonts that support font ligatures are [Fira Code](https://github.com/tonsky/FiraCode) and [Jet Brains Mono](https://www.jetbrains.com/lp/mono/). The 'Regular' `*.ttf` variant of each font is a good starting point.
458454

459455
After downloading and installing the font of choice, add the font to the `fontFamily` and enable `fontLigatures` in the VS Code user settings:
460456

@@ -496,40 +492,25 @@ Here are some tips for configuring the dev tools for this project in JetBrains I
496492
## Updating
497493

498494
> [!WARNING]
499-
> Depending on the maturity of the project, it may be better to look at the current configuration files for extreme-angular & [release notes](https://github.com/joematthews/extreme-angular/releases) and then manually make changes instead of merging. If the Angular version has changed, then follow the [guide to update Angular](https://angular.dev/update) first before attempting to merge or make changes.
495+
> If the Angular version has changed, follow the [Angular update guide](https://angular.dev/update) before merging. For mature projects with heavy customization, reviewing the [release notes](https://github.com/joematthews/extreme-angular/releases) and applying changes manually may be safer than merging.
500496
501-
To pull in the latest changes, check out an 'update' branch and merging the latest changes from `upstream/main`:
497+
If you don't have an `upstream` remote (e.g., you used "Use this template"), add one:
498+
499+
```sh
500+
git remote add upstream https://github.com/joematthews/extreme-angular.git
501+
```
502+
503+
Create a branch and merge the latest changes:
502504

503505
```sh
504506
git checkout main && git pull
505507
git checkout -b update
506508
git merge upstream/main
507509
```
508510

509-
> [!NOTE]
510-
> The name of the remote may not be `upstream` depending on how this project was cloned.
511-
512-
There may be [merge conflicts](https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts) that need to be resolved. After a successful merge, install dependencies and then format, lint, test, and fix any new errors for all files:
511+
Resolve any [merge conflicts](https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts), then install dependencies and validate:
513512

514513
```sh
515514
npm install
516515
npm run ci:all
517516
```
518-
519-
## License Considerations
520-
521-
The documentation and configuration files in this project are licensed under the [MIT license](https://tlo.mit.edu/understand-ip/exploring-mit-open-source-license-comprehensive-guide).
522-
523-
I keep the copyright from [Angular's license](https://angular.dev/license) and add my own copyright.
524-
525-
If your project also uses the MIT license, then please consider adding a new copyright line to [LICENSE.txt](LICENSE.txt):
526-
527-
```txt
528-
Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
529-
530-
Copyright (c) 2024-2025 Joe Matthews, et al. https://github.com/joematthews/extreme-angular
531-
532-
Copyright (c) 2025 Your Name or Company
533-
```
534-
535-
If your project is [closed source](https://simple.wikipedia.org/wiki/Closed_source) or uses a [different license](https://opensource.org/licenses), then please consider renaming the file to `LICENSE-Angular.txt`.

0 commit comments

Comments
 (0)