Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
17e90ab
chore: bump to angular v20
Nicoss54 Jul 4, 2025
dd4e969
docs: migrate all the slides in english
Nicoss54 Jul 9, 2025
453a359
refactor(docs:presentation): naming and format
Nicoss54 Jul 9, 2025
77fef2e
refactor(docs:basics): rework basics chapter
Nicoss54 Jul 9, 2025
2ca7e82
refactor(docs:architecture): rework architecture chapter
Nicoss54 Jul 15, 2025
acf4f23
refactor(docs:*): rework cli components and data binding chapter
Nicoss54 Jul 15, 2025
9618414
refactor(app:01-hands-on): bootstrap now on the component and not on …
Nicoss54 Jul 15, 2025
8d97443
refactor(docs:*): rework event lifecycle and server-communication cha…
Nicoss54 Jul 16, 2025
aeeef8b
refactor(apps:*): rework event lifecycle and server-communication cha…
Nicoss54 Jul 16, 2025
a1ddb0a
refactor(apps:04-binding): rework 04-binding exercise
Nicoss54 Jul 16, 2025
d0fa6a2
refactor(apps:05-events): rework 05-events exercice
Nicoss54 Jul 16, 2025
7b3b615
refactor(apps:06-http): rework 06-http exercise
Nicoss54 Jul 16, 2025
e9c007e
refactor(apps, docs): rework basic routing concepts
Nicoss54 Jul 16, 2025
4296110
refactor(apps, docs): rework loop concepts
Nicoss54 Jul 16, 2025
d468dad
refactor(apps, docs): rework input and output concepts and workshop
Nicoss54 Jul 17, 2025
3e0c255
feat(apps:*): implement zoneless
Nicoss54 Jul 17, 2025
166432d
feat(apps:04-binding, 05-events): implement zoneless
Nicoss54 Jul 17, 2025
7e560f3
feat(apps:06-http, 07-router): implement zoneless
Nicoss54 Jul 17, 2025
73d417b
feat(apps:08-ng-for): implement zoneless
Nicoss54 Jul 17, 2025
5447b4e
feat(apps:09-input): implement zoneless
Nicoss54 Jul 17, 2025
f9a3a2a
feat(apps:10-output): implement zoneless
Nicoss54 Jul 17, 2025
28a2431
refactor(apps,docs): rework service creation concepts
Nicoss54 Jul 17, 2025
1442c1a
refactor(docs:dependency-injection): rework dependency injection chapter
Nicoss54 Jul 18, 2025
e25cd03
refactor(pipes): rework pipe chapter
Nicoss54 Jul 18, 2025
23a48ca
refactor(apps,docs): rewrite exercise 12-pipe-using documentation wit…
Nicoss54 Jul 18, 2025
4eec2db
refactor(apps,docs): rework custom pipe exercise with improved implem…
Nicoss54 Jul 18, 2025
b77be16
refactor(apps,docs): rework directive exercise and rename to control-…
Nicoss54 Jul 18, 2025
be5919b
refactor(apps,docs): rework directive custom exercise and support
Nicoss54 Jul 25, 2025
e05660c
refactor(docs, apps): rework template driven form concepts
Nicoss54 Jul 25, 2025
b3b32b5
refactor(docs, app): rework reactive form chapter
Nicoss54 Jul 26, 2025
0790ad3
refactor(doc, apps): rework lazyloading, guard and resolver chapter
Nicoss54 Jul 30, 2025
7df6d23
refactor(docs, apps): rework interceptors chapter
Nicoss54 Jul 30, 2025
a512059
refactor(docs, apps): rework teleportation chapter
Nicoss54 Jul 30, 2025
39d0b65
refactor: remove useless workshop
Nicoss54 Jul 30, 2025
b718f95
fix(ci): remove token nx cloud
Nicoss54 Jul 30, 2025
f34e5a8
refactor(docs, apps): rework hostbinding and hostlistener workshop
Nicoss54 Jul 30, 2025
805f1cc
refactor(docs, app): rework structural directive chapter
Nicoss54 Jul 31, 2025
8565a72
fix(apps): useless attribute validation for reactive forms
Nicoss54 Jul 31, 2025
5925961
refactor(docs, apps): rework custom form control concepts
Nicoss54 Jul 31, 2025
1f1041c
refactor(docs): rework change detection concepts
Nicoss54 Jul 31, 2025
8241d08
refactor(docs, apps): rework elf state management concept
Nicoss54 Jul 31, 2025
1ceddb3
fix(apps): undefined name when creating person
Nicoss54 Aug 1, 2025
e7504a5
fix(server-express): random id is not correctly created
Nicoss54 Aug 1, 2025
0fab948
refactor(docs, apps): rework ngxs chapter
Nicoss54 Aug 1, 2025
c529e99
refactor(docs, apps): rework ngrx chapter
Nicoss54 Aug 1, 2025
7982365
refactor(docs,apps): rework unit test chapter
Nicoss54 Aug 1, 2025
be43ca9
refactor(docs): rework PWA chapter
Nicoss54 Aug 1, 2025
ba61e13
refactor(docs): rework server side rendering chapter
Nicoss54 Aug 2, 2025
6044752
chore: replace npm by bun
Nicoss54 Aug 2, 2025
1d56be8
fix(apps): regression build and test after rework
Nicoss54 Aug 7, 2025
c2ad3d2
docs(docs): rework library chapter
Nicoss54 Aug 7, 2025
d1a36ee
docs(docs):rework native federation chapter
Nicoss54 Aug 7, 2025
b0ab9d1
docs(docs):rework flow school
Nicoss54 Aug 7, 2025
bc3b741
refactor(docs,apps): rework performance chapter
Nicoss54 Aug 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
20 changes: 20 additions & 0 deletions .github/actions/install-dependencies/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: 'Install dependencies'
description: Install node and bun, and finally install all dependencies of the project

runs:
using: 'composite'
steps:
- name: Use Bun version 1.x
uses: oven-sh/setup-bun@v2

- name: Cache node_modules
id: cache-modules
uses: actions/cache@v4
with:
lookup-only: true
path: '**/node_modules'
key: bun-${{ hashFiles('bun.lockb', 'bun.lock') }}

- name: Install dependencies
run: bun install --frozen-lockfile
shell: bash
44 changes: 21 additions & 23 deletions .github/workflows/tp.yml
Original file line number Diff line number Diff line change
@@ -1,35 +1,33 @@
name: TP CI Action

on: [ push ]
name: CI
on:
push:
branches:
- main
pull_request:
types: [ opened, reopened, synchronize ]

permissions:
actions: read
contents: read

jobs:
build-and-run-tests:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Use Node.js 20.x
uses: actions/setup-node@v3
with:
node-version: 20.x
cache: 'npm'
cache-dependency-path: '**/package-lock.json'

- name: Install last version of npm
run: npm install -g npm@latest

- name: Install dependencies
run: npm install ci
- name: Install bun, and dependencies
uses: ./.github/actions/install-dependencies

- name: Run lint
run: npm run lint:ci
- name: Derive appropriate SHAs for base and head for `nx affected` commands
uses: nrwl/nx-set-shas@v4
with:
main-branch-name: 'main'

- name: Run build
run: npm run build:ci
# This line is needed for nx affected to work when CI is running on a PR
- run: git branch --track main origin/main || exit 0

- name: Run tests
run: npm run test:ci
- run: bunx nx affected -t lint test build --parallel=5 --exclude=docs
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,6 @@ workshop/dist
.fleet

.nx/cache
.nx/workspace-data
.nx/workspace-data
.cursor/rules/nx-rules.mdc
.github/instructions/nx.instructions.md
1 change: 0 additions & 1 deletion .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
/package-lock.json
/yarn.lock

*.md

/workshop/dist

Expand Down
3 changes: 2 additions & 1 deletion apps/01-hands-on-solution/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,8 @@
"buildTarget": "01-hands-on-solution:build:development"
}
},
"defaultConfiguration": "development"
"defaultConfiguration": "development",
"continuous": true
},
"extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n",
Expand Down
7 changes: 5 additions & 2 deletions apps/01-hands-on-solution/src/app/app.component.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
import { Component } from '@angular/core';
import { ChangeDetectionStrategy, Component } from '@angular/core';
import { MatCardModule } from '@angular/material/card';
import { MatToolbarModule } from '@angular/material/toolbar';

@Component({
selector: 'sfeir-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
standalone: false,
imports: [MatCardModule, MatToolbarModule],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class AppComponent {
name = 'SFEIR - LUXEMBOURG';
Expand Down
13 changes: 0 additions & 13 deletions apps/01-hands-on-solution/src/app/app.module.ts

This file was deleted.

8 changes: 0 additions & 8 deletions apps/01-hands-on-solution/src/app/material-design.module.ts

This file was deleted.

10 changes: 4 additions & 6 deletions apps/01-hands-on-solution/src/main.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode, provideZonelessChangeDetection } from '@angular/core';

import { AppModule } from './app/app.module';
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app/app.component';
import { environment } from './environments/environment';

if (environment.production) {
enableProdMode();
}

platformBrowserDynamic()
.bootstrapModule(AppModule)
.catch(err => console.error(err));
bootstrapApplication(AppComponent, { providers: [provideZonelessChangeDetection()] }).catch(console.error);
5 changes: 0 additions & 5 deletions apps/01-hands-on-solution/src/polyfills.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,6 @@
*
*/

/***************************************************************************************************
* Zone JS is required by default for Angular itself.
*/
import 'zone.js'; // Included with Angular CLI.

/***************************************************************************************************
* APPLICATION IMPORTS
*/
4 changes: 3 additions & 1 deletion apps/01-hands-on-solution/src/test-setup.ts
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
import 'jest-preset-angular/setup-jest';
import { setupZonelessTestEnv } from 'jest-preset-angular/setup-env/zoneless';

setupZonelessTestEnv();
3 changes: 2 additions & 1 deletion apps/01-hands-on-solution/tsconfig.app.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
"outDir": "../../dist/out-tsc",
"types": [],
"target": "ES2022",
"useDefineForClassFields": false
"useDefineForClassFields": false,
"moduleResolution": "bundler"
},
"files": ["src/main.ts", "src/polyfills.ts"],
"include": ["src/**/*.d.ts"],
Expand Down
3 changes: 2 additions & 1 deletion apps/01-hands-on/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,8 @@
"buildTarget": "01-hands-on:build:development"
}
},
"defaultConfiguration": "development"
"defaultConfiguration": "development",
"continuous": true
},
"extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n",
Expand Down
27 changes: 13 additions & 14 deletions apps/01-hands-on/readme.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,31 @@
# Exercice: 01:hands-on (dossier apps/01-hands-on)
# Exercise: 01-hands-on (apps/01-hands-on directory)

Le but de cet exercice est de comprendre comment fonctionne le bootstrapping d'une application angular
The goal of this exercise is to understand how Angular application bootstrapping works.

Actuellement si vous lancez, l'application une erreur va s'afficher dans l'inspecteur de votre navigateur.
Currently, if you run the application, an error will appear in your browser's developer tools console.

Cet exercice a pour but de corriger cette erreur :)
This exercise aims to fix this error :)

<br>

## Etape 1
## Step 1

Dans le dossier src/app, créez le composant AppComponent, ce composant doit posséder une properties name avec pour valeur votre prénom
In the src/app directory, create the AppComponent component. This component should have a property called name with your first name as its value.
<br><br>

## Etape 2
## Step 2

Dans le fichier **app.module.ts** et particulièrement dans le tableau de la propriété **declarations** et **bootstrap** ajoutez le composant AppComponent
In the **app.component.html** file, display the value of the **name** variable using the {{ name }} syntax, which is Angular's interpolation syntax.
<br><br>

## Etape 3
## Step 3

Dans le fichier, **app.component.html** affichez la valeur de la variable **name**, grâce à la syntax {{ name }} qui est la syntax de l'interpolation en Angular
<br><br>
In the **main.ts** file, bootstrap the AppComponent.

## Etape 4
## Step 4

Vérifiez votre travail en vous plaçant à la racine du dossier workshop et en lançant la commande:
Check your work by navigating to the workshop root directory and running the following command:

```bash
```shell
npm run client -- 01-hands-on
```
12 changes: 0 additions & 12 deletions apps/01-hands-on/src/app/app.module.ts

This file was deleted.

8 changes: 0 additions & 8 deletions apps/01-hands-on/src/app/material-design.module.ts

This file was deleted.

7 changes: 1 addition & 6 deletions apps/01-hands-on/src/main.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,8 @@
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { AppModule } from './app/app.module';
import { environment } from './environments/environment';

if (environment.production) {
enableProdMode();
}

platformBrowserDynamic()
.bootstrapModule(AppModule)
.catch(err => console.error(err));
enableProdMode();
5 changes: 0 additions & 5 deletions apps/01-hands-on/src/polyfills.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,6 @@
*
*/

/***************************************************************************************************
* Zone JS is required by default for Angular itself.
*/
import 'zone.js'; // Included with Angular CLI.

/***************************************************************************************************
* APPLICATION IMPORTS
*/
4 changes: 3 additions & 1 deletion apps/01-hands-on/src/test-setup.ts
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
import 'jest-preset-angular/setup-jest';
import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone';

setupZoneTestEnv();
3 changes: 2 additions & 1 deletion apps/01-hands-on/tsconfig.app.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
"outDir": "../../dist/out-tsc",
"types": [],
"target": "ES2022",
"useDefineForClassFields": false
"useDefineForClassFields": false,
"moduleResolution": "bundler"
},
"files": ["src/main.ts", "src/polyfills.ts"],
"include": ["src/**/*.d.ts"],
Expand Down
3 changes: 2 additions & 1 deletion apps/02-ngg-solution/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,8 @@
"buildTarget": "02-ngg-solution:build:development"
}
},
"defaultConfiguration": "development"
"defaultConfiguration": "development",
"continuous": true
},
"extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n",
Expand Down
7 changes: 5 additions & 2 deletions apps/02-ngg-solution/src/app/app.component.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
import { Component } from '@angular/core';
import { ChangeDetectionStrategy, Component } from '@angular/core';
import { MatCardModule } from '@angular/material/card';
import { MatToolbarModule } from '@angular/material/toolbar';

@Component({
selector: 'sfeir-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
standalone: false,
imports: [MatToolbarModule, MatCardModule],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class AppComponent {
name = 'SFEIR - LUXEMBOURG';
Expand Down
14 changes: 0 additions & 14 deletions apps/02-ngg-solution/src/app/app.module.ts

This file was deleted.

6 changes: 4 additions & 2 deletions apps/02-ngg-solution/src/app/feature/home/home.component.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import { Component } from '@angular/core';
import { ChangeDetectionStrategy, Component } from '@angular/core';
import { MatCardModule } from '@angular/material/card';

@Component({
selector: 'sfeir-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.scss'],
standalone: false,
imports: [MatCardModule],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class HomeComponent {
name = 'Sfeir Luxembourg';
Expand Down
8 changes: 0 additions & 8 deletions apps/02-ngg-solution/src/app/material-design.module.ts

This file was deleted.

11 changes: 4 additions & 7 deletions apps/02-ngg-solution/src/main.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { AppModule } from './app/app.module';
import { enableProdMode, provideZonelessChangeDetection } from '@angular/core';
import { environment } from './environments/environment';
import { bootstrapApplication } from '@angular/platform-browser';
import { HomeComponent } from './app/feature/home/home.component';

if (environment.production) {
enableProdMode();
}

platformBrowserDynamic()
.bootstrapModule(AppModule)
.catch(err => console.error(err));
bootstrapApplication(HomeComponent, { providers: [provideZonelessChangeDetection()] }).catch(console.error);
Loading