update README.md
This commit is contained in:
48
.idea/.idea.DotNetAngular/.idea/workspace.xml
generated
48
.idea/.idea.DotNetAngular/.idea/workspace.xml
generated
@@ -11,12 +11,8 @@
|
|||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="1ac72a4a-52ad-4e70-9b15-c330b1ed3e7a" name="Changes" comment="">
|
<list default="true" id="1ac72a4a-52ad-4e70-9b15-c330b1ed3e7a" name="Changes" comment="">
|
||||||
<change afterPath="$PROJECT_DIR$/DotNetAngular.sln.DotSettings.user" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/.idea.DotNetAngular/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.DotNetAngular/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/.idea.DotNetAngular/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.DotNetAngular/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/ClientApp/package-lock.json" beforeDir="false" afterPath="$PROJECT_DIR$/src/ClientApp/package-lock.json" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/ClientApp/package.json" beforeDir="false" afterPath="$PROJECT_DIR$/src/ClientApp/package.json" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/ClientApp/tsconfig.json" beforeDir="false" afterPath="$PROJECT_DIR$/src/ClientApp/tsconfig.json" afterDir="false" />
|
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
@@ -55,27 +51,27 @@
|
|||||||
<option name="hideEmptyMiddlePackages" value="true" />
|
<option name="hideEmptyMiddlePackages" value="true" />
|
||||||
<option name="showLibraryContents" value="true" />
|
<option name="showLibraryContents" value="true" />
|
||||||
</component>
|
</component>
|
||||||
<component name="PropertiesComponent"><![CDATA[{
|
<component name="PropertiesComponent">{
|
||||||
"keyToString": {
|
"keyToString": {
|
||||||
".NET Launch Settings Profile.API: Angular_dev.executor": "Run",
|
".NET Launch Settings Profile.API: Angular_dev.executor": "Run",
|
||||||
"RunOnceActivity.MCP Project settings loaded": "true",
|
"RunOnceActivity.MCP Project settings loaded": "true",
|
||||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||||
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
|
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
|
||||||
"RunOnceActivity.git.unshallow": "true",
|
"RunOnceActivity.git.unshallow": "true",
|
||||||
"RunOnceActivity.typescript.service.memoryLimit.init": "true",
|
"RunOnceActivity.typescript.service.memoryLimit.init": "true",
|
||||||
"com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true",
|
"com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true",
|
||||||
"git-widget-placeholder": "feature/setup-infrastructure",
|
"git-widget-placeholder": "feature/setup-infrastructure",
|
||||||
"junie.onboarding.icon.badge.shown": "true",
|
"junie.onboarding.icon.badge.shown": "true",
|
||||||
"node.js.detected.package.eslint": "true",
|
"node.js.detected.package.eslint": "true",
|
||||||
"node.js.detected.package.tslint": "true",
|
"node.js.detected.package.tslint": "true",
|
||||||
"node.js.selected.package.eslint": "(autodetect)",
|
"node.js.selected.package.eslint": "(autodetect)",
|
||||||
"node.js.selected.package.tslint": "(autodetect)",
|
"node.js.selected.package.tslint": "(autodetect)",
|
||||||
"nodejs_package_manager_path": "npm",
|
"nodejs_package_manager_path": "npm",
|
||||||
"settings.editor.selected.configurable": "vcs.Git",
|
"settings.editor.selected.configurable": "vcs.Git",
|
||||||
"to.speed.mode.migration.done": "true",
|
"to.speed.mode.migration.done": "true",
|
||||||
"vue.rearranger.settings.migration": "true"
|
"vue.rearranger.settings.migration": "true"
|
||||||
}
|
}
|
||||||
}]]></component>
|
}</component>
|
||||||
<component name="RecapUselessUpdatesCounter">
|
<component name="RecapUselessUpdatesCounter">
|
||||||
<option name="suspendCountdown" value="9" />
|
<option name="suspendCountdown" value="9" />
|
||||||
</component>
|
</component>
|
||||||
@@ -218,4 +214,8 @@
|
|||||||
</breakpoints>
|
</breakpoints>
|
||||||
</breakpoint-manager>
|
</breakpoint-manager>
|
||||||
</component>
|
</component>
|
||||||
|
<component name="XSLT-Support.FileAssociations.UIState">
|
||||||
|
<expand />
|
||||||
|
<select />
|
||||||
|
</component>
|
||||||
</project>
|
</project>
|
||||||
39
README.md
39
README.md
@@ -4,18 +4,32 @@ This project is a full-stack web application Template combining **ASP.NET Core**
|
|||||||
|
|
||||||
## 🛠️ Technologies Used
|
## 🛠️ Technologies Used
|
||||||
|
|
||||||
- **Backend:** ASP.NET Core (.NET 9)
|
- **Backend:** ASP.NET Core (.NET 10)
|
||||||
|
|
||||||
- **Frontend:** Angular
|
- **Frontend:** Angular
|
||||||
|
|
||||||
- **API Documentation:** Swagger (Swashbuckle)
|
- **API Documentation:** Swagger (Swashbuckle)
|
||||||
|
|
||||||
|
## 🔐 Authentication (Register & Login)
|
||||||
|
|
||||||
|
The template includes a preconfigured user registration and authentication flow, designed as a solid baseline for production-ready applications.
|
||||||
|
|
||||||
|
- **Register:**
|
||||||
|
Creation of new user accounts via a dedicated API endpoint with server-side validation and secure password hashing.
|
||||||
|
|
||||||
|
- **Login:**
|
||||||
|
Token-based authentication using JWT (JSON Web Token). Upon successful authentication, a token is issued for authorized API access.
|
||||||
|
|
||||||
|
- **Authorization:**
|
||||||
|
Protected backend endpoints and frontend routes are secured using role- or policy-based access control.
|
||||||
|
|
||||||
|
The authentication architecture is secure, extensible, and aligned with enterprise best practices.
|
||||||
|
|
||||||
## 🚀 Getting Started
|
## 🚀 Getting Started
|
||||||
|
|
||||||
### Prerequisites
|
### Prerequisites
|
||||||
|
|
||||||
- [.NET 9 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/9.0)
|
- [.NET 10 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/10.0)
|
||||||
|
|
||||||
- [Node.js (LTS)](https://nodejs.org/)
|
- [Node.js (LTS)](https://nodejs.org/)
|
||||||
|
|
||||||
@@ -48,34 +62,27 @@ This project is a full-stack web application Template combining **ASP.NET Core**
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🧪 Angular-Tests ausführen (Wie mache ich Tests in Angular?)
|
## 🧪 Running Angular Tests
|
||||||
|
|
||||||
Die Angular-Frontend-Tests sind mit Karma + Jasmine eingerichtet. Alle Testdateien enden auf `.spec.ts` und liegen neben den jeweiligen Komponenten/Services im Ordner `src/ClientApp/src/`.
|
Angular frontend tests are set up using Karma + Jasmine. All test files follow the `.spec.ts` naming convention and are located alongside their respective components and services in `src/ClientApp/src/`.
|
||||||
|
|
||||||
### Schnellstart
|
### Quick Start
|
||||||
|
|
||||||
1. Abhängigkeiten installieren (falls noch nicht erledigt):
|
|
||||||
```bash
|
```bash
|
||||||
cd src/ClientApp
|
cd src/ClientApp
|
||||||
npm install
|
npm test
|
||||||
```
|
|
||||||
2. Tests im Watch-Modus starten (öffnet den Browser, ideal für Entwicklung):
|
|
||||||
```bash
|
|
||||||
npm test
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Headless/CI und Coverage
|
### Headless/CI und Coverage
|
||||||
|
|
||||||
- Einmalige Testausführung mit Coverage-Bericht (headless):
|
|
||||||
```bash
|
```bash
|
||||||
cd src/ClientApp
|
cd src/ClientApp
|
||||||
npm run test:coverage
|
npm run test:coverage
|
||||||
```
|
```
|
||||||
Der Coverage-Report wird unter `src/ClientApp/coverage/` erzeugt (HTML-Report in `index.html`).
|
The coverage report is generated under `src/ClientApp/coverage/` (HTML-Report in `index.html`).
|
||||||
|
|
||||||
- CI-freundliche Ausführung in Chrome Headless inklusive Coverage:
|
|
||||||
```bash
|
```bash
|
||||||
cd src/ClientApp
|
cd src/ClientApp
|
||||||
npm run test:ci
|
npm run test:ci
|
||||||
```
|
```
|
||||||
Hinweis: Für Headless-Tests muss eine Chrome/Chromium-Laufzeit auf der Maschine vorhanden sein.
|
Note: For headless tests, a Chrome/Chromium runtime must be present on the machine.
|
||||||
|
|||||||
Reference in New Issue
Block a user