Eine Fullstack-Webanwendung zur Verwaltung von Prüfprotokollen. Das Projekt zeigt eine saubere Umsetzung einer kleinen Business-Anwendung mit Angular-Frontend, ASP.NET-Core-Web-API, Entity Framework Core, PostgreSQL, Docker und automatisierter CI/CD-Pipeline.
Die Anwendung wurde als kompaktes Portfolio-Projekt entwickelt und demonstriert typische Aufgaben aus der modernen Webentwicklung: Formularvalidierung, REST-Kommunikation, Datenpersistenz, serviceorientierte Backend-Struktur, Containerisierung und automatisierte Qualitätsprüfungen.
Ziel des Projekts ist eine einfache, nachvollziehbare Prüfprotokoll-Verwaltung, mit der Prüfberichte erstellt, angezeigt, bearbeitet und gelöscht werden können. Der Fokus liegt nicht auf Funktionsumfang, sondern auf einer klaren technischen Struktur, reproduzierbarem Setup und nachvollziehbarer Codequalität.
Bestanden, Mängel und Nicht bestanden


| Bereich | Technologie |
|---|---|
| Frontend | Angular 17, TypeScript, HTML, CSS |
| Backend | ASP.NET Core Web API, C#, .NET 8 |
| Datenbank | PostgreSQL, Entity Framework Core 8 |
| Tests | xUnit/.NET Tests, Angular/Karma/Jasmine |
| Webserver | Nginx für das Angular-Frontend im Docker-Container |
| Containerisierung | Docker, Docker Compose |
| CI/CD | GitHub Actions, GitHub Container Registry |
Browser
|
| HTTP
v
Angular Frontend
|
| /api/inspectionreports
v
ASP.NET Core Web API
|
| Entity Framework Core
v
PostgreSQL-Datenbank
Im lokalen Entwicklungsmodus leitet Angular API-Aufrufe über proxy.conf.json an das Backend weiter. Im Docker-Betrieb übernimmt Nginx die Weiterleitung von /api an den Backend-Container.
pruefprotokoll-app/
├── .github/
│ └── workflows/
│ └── ci-cd.yml
├── backend/
│ ├── Pruefprotokoll.Api/
│ │ ├── Controllers/
│ │ ├── Data/
│ │ ├── Migrations/
│ │ ├── Models/
│ │ ├── Repositories/
│ │ ├── Services/
│ │ └── Program.cs
│ ├── Pruefprotokoll.Tests/
│ └── Dockerfile
├── frontend/
│ ├── src/app/components/
│ ├── src/app/models/
│ ├── src/app/services/
│ ├── proxy.conf.json
│ ├── nginx.conf
│ └── Dockerfile
├── docker-compose.yml
└── README.md
Für den Start mit Docker:
Für den lokalen Start ohne Docker:
Im Hauptordner des Projekts ausführen:
docker compose up --build
Danach ist die Anwendung erreichbar unter:
http://localhost:4200
Die API ist erreichbar unter:
http://localhost:5000/api/inspectionreports
Docker Compose startet drei Services:
frontend Angular-Build mit Nginx auf Port 4200
backend ASP.NET-Core-Web-API auf Port 5000
postgres PostgreSQL-Datenbank auf Port 5432
Die Datenbankdaten werden im Docker-Volume postgres_data gespeichert.
Container stoppen:
docker compose down
Container inklusive Datenbank-Volume löschen:
docker compose down -v
Container neu bauen:
docker compose build --no-cache
docker compose up
PostgreSQL lokal starten und folgende Datenbank bereitstellen:
Host: localhost
Port: 5432
Database: inspectionreports
Username: postgres
Password: postgres
Danach Backend starten:
cd backend/Pruefprotokoll.Api
dotnet restore
dotnet run
Die API läuft danach unter:
http://localhost:5000
Beim ersten Start werden die EF-Core-Migrationen automatisch angewendet und zwei Demo-Datensätze eingespielt.
In einem zweiten Terminal:
cd frontend
npm install
npm start
Die Angular-App läuft danach unter:
http://localhost:4200
Das Frontend nutzt im lokalen Entwicklungsmodus proxy.conf.json, damit API-Aufrufe an /api automatisch an das Backend weitergeleitet werden.
Backend-Tests ausführen:
cd backend/Pruefprotokoll.Tests
dotnet test
Frontend-Tests lokal ausführen:
cd frontend
npm test
Frontend-Tests im Headless-Modus ausführen, wie in der CI-Pipeline:
cd frontend
npm test -- --watch=false --browsers=ChromeHeadless
Frontend builden:
cd frontend
npm run build
Copyright (c) 2026 Mohammad Taiba. All rights reserved.
This project is published for portfolio and review purposes only. See LICENSE.