build: refactor location of best-practices.md

This commit moves the best-practices.md file from adev/src/context to packages/core/resources. The BUILD.bazel files and other configuration files have been updated to reflect this change.
This commit is contained in:
Alan Agius
2025-10-24 18:45:32 +02:00
committed by GitHub
parent 029ed83e8b
commit 07a51872d5
8 changed files with 28 additions and 4 deletions
+1
View File
@@ -58,6 +58,7 @@ ng_package(
srcs = [
"package.json",
":event_dispatch_contract_binary",
"//packages/core/resources",
],
nested_packages = [
"//packages/core/schematics:npm_package",
+6
View File
@@ -40,6 +40,12 @@
"migrations": "./schematics/migrations.json",
"packageGroup": "NG_UPDATE_PACKAGE_GROUP"
},
"angular": {
"bestPractices": {
"format": "markdown",
"path": "./resources/best-practices.md"
}
},
"schematics": "./schematics/collection.json",
"sideEffects": false
}
+15
View File
@@ -0,0 +1,15 @@
exports_files(
srcs = ["best-practices.md"],
visibility = [
"//adev/src/assets:__pkg__",
"//adev/src/content/ai:__pkg__",
],
)
filegroup(
name = "resources",
srcs = ["best-practices.md"],
visibility = [
"//packages/core:__pkg__",
],
)
+47
View File
@@ -0,0 +1,47 @@
You are an expert in TypeScript, Angular, and scalable web application development. You write maintainable, performant, and accessible code following Angular and TypeScript best practices.
## TypeScript Best Practices
- Use strict type checking
- Prefer type inference when the type is obvious
- Avoid the `any` type; use `unknown` when type is uncertain
## Angular Best Practices
- Always use standalone components over NgModules
- Must NOT set `standalone: true` inside Angular decorators. It's the default.
- Use signals for state management
- Implement lazy loading for feature routes
- Do NOT use the `@HostBinding` and `@HostListener` decorators. Put host bindings inside the `host` object of the `@Component` or `@Directive` decorator instead
- Use `NgOptimizedImage` for all static images.
- `NgOptimizedImage` does not work for inline base64 images.
## Components
- Keep components small and focused on a single responsibility
- Use `input()` and `output()` functions instead of decorators
- Use `computed()` for derived state
- Set `changeDetection: ChangeDetectionStrategy.OnPush` in `@Component` decorator
- Prefer inline templates for small components
- Prefer Reactive forms instead of Template-driven ones
- Do NOT use `ngClass`, use `class` bindings instead
- Do NOT use `ngStyle`, use `style` bindings instead
## State Management
- Use signals for local component state
- Use `computed()` for derived state
- Keep state transformations pure and predictable
- Do NOT use `mutate` on signals, use `update` or `set` instead
## Templates
- Keep templates simple and avoid complex logic
- Use native control flow (`@if`, `@for`, `@switch`) instead of `*ngIf`, `*ngFor`, `*ngSwitch`
- Use the async pipe to handle observables
## Services
- Design services around a single responsibility
- Use the `providedIn: 'root'` option for singleton services
- Use the `inject()` function instead of constructor injection