Ein NestJS TypeScript Backend für ein Issue Tracking System mit PostgreSQL Datenbank.
- Node.js (Version 18 oder höher)
- npm (normalerweise mit Node.js installiert)
- Docker (für die PostgreSQL Datenbank)
Option 1: Docker Desktop (empfohlen)
- Besuchen Sie https://www.docker.com/products/docker-desktop/
- Laden Sie Docker Desktop für Mac herunter
- Öffnen Sie die
.dmgDatei und ziehen Sie Docker in den Applications Ordner - Starten Sie Docker Desktop aus dem Applications Ordner
- Folgen Sie den Setup-Anweisungen
Option 2: Homebrew
# Docker Desktop über Homebrew installieren
brew install --cask docker
# Oder nur Docker Engine (ohne GUI)
brew install docker
brew install docker-composeOption 1: Docker Desktop (empfohlen)
- Besuchen Sie https://www.docker.com/products/docker-desktop/
- Laden Sie Docker Desktop für Windows herunter
- Führen Sie die
.exeDatei aus und folgen Sie dem Installer - Starten Sie nach der Installation Docker Desktop
- WSL 2 wird automatisch konfiguriert (falls nicht bereits installiert)
Systemanforderungen:
- Windows 10 64-bit (Version 1909 oder höher) oder Windows 11
- WSL 2 Feature aktiviert
- Hyper-V aktiviert (für Windows 10 Home: WSL 2 Backend)
Option 1: Über APT Repository (empfohlen)
# Alte Docker Versionen entfernen
sudo apt-get remove docker docker-engine docker.io containerd runc
# System aktualisieren
sudo apt-get update
# Abhängigkeiten installieren
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
# Docker's GPG Key hinzufügen
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Repository hinzufügen
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Docker Engine installieren
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Docker ohne sudo verwenden (optional)
sudo usermod -aG docker $USER
# Logout und Login erforderlich oder:
newgrp docker
# Installation testen
docker run hello-worldOption 2: Convenience Script
# Docker's convenience script herunterladen und ausführen
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# Docker Compose installieren
sudo apt-get install docker-compose-plugin
# Benutzer zur Docker-Gruppe hinzufügen
sudo usermod -aG docker $USERCentOS/RHEL:
# Alte Docker Versionen entfernen
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
# Repository hinzufügen
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# Docker installieren
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Docker starten und aktivieren
sudo systemctl start docker
sudo systemctl enable docker
# Benutzer zur Docker-Gruppe hinzufügen
sudo usermod -aG docker $USERFedora:
# Repository hinzufügen
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
# Docker installieren
sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Docker starten und aktivieren
sudo systemctl start docker
sudo systemctl enable docker
# Benutzer zur Docker-Gruppe hinzufügen
sudo usermod -aG docker $USERNach der Installation können Sie Docker testen:
# Docker Version anzeigen
docker --version
# Docker Compose Version anzeigen
docker compose version
# Test-Container ausführen
docker run hello-worldnpm installDas Projekt enthält ein Installationsskript für die Datenbank:
./install-postgres.shDieses Skript startet einen PostgreSQL Docker Container mit folgenden Einstellungen:
- Container Name:
nodejs-server-db - Datenbank:
issuetracker - Port:
5432 - Passwort:
foobert99 - Persistente Daten:
pgdataVolume
Wenn das Skript nicht funktioniert, können Sie den Container manuell starten:
docker run --name nodejs-server-db \
-e POSTGRES_DB=issuetracker \
-e POSTGRES_PASSWORD=foobert99 \
-p 5432:5432 \
-v pgdata:/var/lib/postgresql/data \
-d postgresDas System verwendet standardmäßig die folgenden Datenbankeinstellungen:
- Host:
localhost - Port:
5432 - Datenbank:
issuetracker - Benutzer:
postgres - Passwort:
foobert99
Falls Sie andere Einstellungen verwenden möchten, können Sie eine .env Datei erstellen:
# .env
DB_HOST=localhost
DB_PORT=5432
DB_NAME=issuetracker
DB_USER=postgres
DB_PASSWORD=foobert99
PORT=3000npm run start:devDie Anwendung startet auf http://localhost:3000 mit automatischem Neuladen bei Dateiänderungen.
npm run start:debug# Build erstellen
npm run build
# Anwendung starten
npm start# Datenbank erstellen
npm run db:create
# Datenbank löschen
npm run db:drop# Beispieldaten hinzufügen
npm run seed
# Datenbank zurücksetzen und neu seeden
npm run seed:resetnpm run reset:backendDieser Befehl:
- Löscht die Datenbank
- Erstellt sie neu
- Fügt Beispieldaten hinzu
- Erstellt einen neuen Build
Die Anwendung stellt folgende Hauptendpunkte bereit:
- Health Check:
GET /health - Projekte:
GET /projects- Alle Projekte auflistenPOST /projects- Neues Projekt erstellenPUT /projects/:id- Projekt aktualisierenDELETE /projects/:id- Projekt löschen
- Issues:
GET /issues- Alle Issues auflistenPOST /issues- Neues Issue erstellenPUT /issues/:id- Issue aktualisierenDELETE /issues/:id- Issue löschen
# Unit Tests
npm test
# Tests mit Watch-Modus
npm run test:watch
# Test Coverage
npm run test:cov
# End-to-End Tests
npm run test:e2e# Linting
npm run lint
# Code-Formatierung
npm run formatdocker psdocker stop nodejs-server-dbdocker start nodejs-server-dbdocker stop nodejs-server-db
docker rm nodejs-server-db
docker volume rm pgdataDas Projekt enthält eine Postman Collection unter postman/ für API-Tests:
IssueTracker.postman_collection.jsonLocal_Environment.postman_environment.json
-
Port 5432 bereits belegt
# Anderen PostgreSQL Service stoppen brew services stop postgresql # oder anderen Port verwenden
-
Docker Container läuft nicht
docker logs nodejs-server-db
-
Datenbank-Verbindungsfehler
- Prüfen Sie, ob der Docker Container läuft
- Überprüfen Sie die Umgebungsvariablen
- Stellen Sie sicher, dass PostgreSQL erreichbar ist
-
Node.js Version
node --version # sollte >= 18 sein
Das Backend verwendet:
- NestJS: TypeScript Framework
- TypeORM: ORM für Datenbankoperationen
- PostgreSQL: Relationale Datenbank
- Class Validator: Input-Validierung
- Jest: Testing Framework
- Project: Projekte mit Namen und Status
- Issue: Issues mit Titel, Priorität, Fälligkeitsdatum und Projektzuordnung