Install
openclaw skills install my-frontend-starterMy Frontend — Angular 19 SPA starter with Material Design, Docker, and nginx. Use when working on the my-frontend project (KUL-2023-API/src/labs/lab10/my-frontend).
openclaw skills install my-frontend-starterAngular 19 LTS SPA with Angular Material, served via nginx in Docker.
Location: src/labs/lab10/my-frontend/
cd src/labs/lab10/my-frontend
# Docker (recommended)
docker compose up --build
# → http://localhost:4200
# Without Docker
npm install
npm start
# → http://localhost:4200
src/
├── app/
│ ├── app.component # Root: toolbar + router-outlet
│ ├── app.module.ts # Root NgModule (all components declared here)
│ ├── app-routing.module.ts # All routes defined here
│ ├── users/ # /users — user list from API
│ ├── comments/ # /comments — comments from API
│ ├── rest/ # /rest — API demo page
│ └── rest.service.ts # HTTP service (providedIn: 'root')
├── gallery/
│ ├── gallery.module.ts # Feature module
│ └── gallery.component # /gallery — image gallery
└── main.ts # Bootstrap
| Path | Component | Data Source |
|---|---|---|
/users | UsersComponent | JSONPlaceholder /users |
/comments | CommentsComponent | JSONPlaceholder /comments |
/gallery | GalleryComponent | picsum.photos |
/rest | RestComponent | Static placeholder |
standalone: false (NgModule pattern)AppRoutingModule (no forChild in feature modules)AppModuleUser[], Comment[], no anyhttps://jsonplaceholder.typicode.com| Command | Description |
|---|---|
docker compose up --build | Build + run |
docker compose down | Stop |
docker compose logs -f | Logs |
Multi-stage: Node 22 (build) → nginx Alpine (~50MB).
| Issue | Fix |
|---|---|
NG6008: Component is standalone | Add standalone: false to @Component |
TS2792: Cannot find module '@angular/core' | Set moduleResolution: "bundler" in tsconfig |
TS2307: Cannot find module 'rxjs' | npm install rxjs@7.8.1 |
NG2003: No suitable injection token | Add @Injectable({ providedIn: 'root' }) |
Gallery route redirects to /users | Move route from GalleryModule.forChild to AppRoutingModule |
Dependabot alerts for tar, picomatch, tmp | Dev dependencies only — not in Docker image |
Safe path: 16 → 17 → 19 LTS. Don't jump to 22 (requires TS 6.x, new build system).
After updating:
node_modules + package-lock.jsonnpm installstandalone: false to all componentsmoduleResolution: "bundler" in tsconfigng build --configuration developmentng build --configuration development — 0 errors