Skip to content

Contributing to Good Deeds

Vielen Dank für dein Interesse, zu Good Deeds beizutragen! 🎉

Code of Conduct

Wir erwarten von allen Mitwirkenden respektvolles und professionelles Verhalten.

Wie kann ich beitragen?

Bugs melden

  • Überprüfe, ob der Bug bereits als Issue gemeldet wurde
  • Erstelle ein neues Issue mit:
    • Klarer Beschreibung des Problems
    • Schritten zur Reproduktion
    • Erwartetes vs. tatsächliches Verhalten
    • Screenshots (falls relevant)
    • Environment-Details (OS, Node-Version, Browser)

Features vorschlagen

  • Erstelle ein Issue mit dem Label enhancement
  • Beschreibe:
    • Das Problem, das gelöst werden soll
    • Deine vorgeschlagene Lösung
    • Alternativen, die du erwogen hast

Code beitragen

  1. Fork das Repository

    bash
    gh repo fork GiacomoVoss/good-deeds
  2. Clone dein Fork

    bash
    git clone https://github.com/DEIN-USERNAME/good-deeds.git
    cd good-deeds
  3. Branch erstellen

    bash
    git checkout -b feature/mein-feature
    # oder
    git checkout -b fix/mein-bugfix
  4. Environment aufsetzen

    bash
    npm install
    cp .env.example .env
    docker-compose up -d
  5. Änderungen machen

    • Schreibe klaren, gut dokumentierten Code
    • Folge den Code-Standards (ESLint + Prettier)
    • Schreibe Tests für neue Features
    • Aktualisiere Dokumentation bei Bedarf
  6. Tests ausführen

    bash
    npm run lint
    npm run test
    npm run test:e2e
  7. Commit mit Conventional Commits

    bash
    git add .
    git commit -m "feat: add user profile validation"

    Commit-Types:

    • feat: Neues Feature
    • fix: Bug Fix
    • docs: Dokumentation
    • style: Code-Formatting
    • refactor: Code-Refactoring
    • test: Tests
    • chore: Build-Process, Dependencies
  8. Push zu deinem Fork

    bash
    git push origin feature/mein-feature
  9. Pull Request erstellen

    • Gehe zu GitHub und erstelle einen PR
    • Beschreibe deine Änderungen klar
    • Referenziere relevante Issues (#123)
    • Warte auf Code-Review

Development Guidelines

Code-Style

  • TypeScript: Nutze Type-Safety, vermeide any
  • Funktionen: Kurz und fokussiert (< 50 Zeilen)
  • Naming: Selbsterklärende Namen (getUserById statt get)
  • Comments: Nur wenn nicht offensichtlich (WHY, nicht WHAT)

Testing

  • Unit Tests: Für Business-Logic (80% Coverage Ziel)
  • Integration Tests: Für API-Endpoints
  • E2E Tests: Für kritische User-Flows

Commit-Messages

Folge Conventional Commits:

<type>(<scope>): <subject>

<body>

<footer>

Beispiele:

feat(auth): add Google OAuth login
fix(tasks): correct points calculation
docs: update API documentation
test(users): add profile validation tests

Branch-Strategie

  • main: Production (geschützt, nur via PR)
  • staging: Staging-Environment
  • develop: Development-Branch
  • feature/*: Feature-Branches
  • fix/*: Bugfix-Branches
  • hotfix/*: Dringende Production-Fixes

Pull Request Guidelines

Guter PR:

  • Fokussiert auf ein Thema
  • Kleine, nachvollziehbare Commits
  • Tests enthalten
  • Dokumentation aktualisiert
  • Beschreibung erklärt WARUM

Schlechter PR:

  • Multiple unrelated Changes
  • "WIP" ohne Context
  • Failing Tests
  • Fehlende Dokumentation

Review-Prozess

  1. Automated Checks: CI muss grün sein
  2. Code Review: Mind. 1 Approval
  3. Testing: Lokale Tests + Staging-Deployment
  4. Merge: Squash & Merge nach main

Projekt-Struktur

good-deeds/
├── apps/
│   ├── mobile/         # React Native App
│   └── backend/        # NestJS API
├── packages/
│   └── shared/         # Shared Types & Utils
├── infrastructure/     # AWS CDK
├── docs/              # Dokumentation
└── scripts/           # Helper Scripts

Backend-Struktur (NestJS)

apps/backend/src/
├── modules/
│   ├── auth/          # Authentication
│   ├── users/         # User Management
│   ├── tasks/         # Task CRUD
│   └── points/        # Point System
├── common/
│   ├── guards/        # Auth Guards
│   ├── interceptors/  # Logging, Transform
│   └── pipes/         # Validation Pipes
└── config/            # Configuration

Environment Setup

Prerequisites

  • Node.js 20 LTS
  • Docker & Docker Compose
  • PostgreSQL 16 (via Docker)
  • Redis 7 (via Docker)

First-Time Setup

bash
# Install dependencies
npm install

# Setup environment
cp .env.example .env
# Edit .env with your values

# Start services
docker-compose up -d

# Run migrations
npm run migration:run

# Seed database (optional)
npm run seed:run

# Start development server
npm run dev

Häufige Fragen

Wie erstelle ich eine neue Migration?

bash
npm run migration:create -- -n AddUserProfileTable
# Edit the migration file
npm run migration:run

Wie teste ich meine Änderungen?

bash
# Unit Tests
npm run test

# Specific test file
npm run test -- path/to/test.spec.ts

# Watch mode
npm run test -- --watch

# E2E Tests
npm run test:e2e

Wie debugge ich die API?

bash
# Start with debugging
npm run start:debug

# Attach Debugger (VS Code)
# Use "Attach to Process" launch config

Ressourcen

Fragen?

Bei Fragen kannst du:

  • Ein Issue erstellen
  • Im Team-Chat nachfragen
  • Die Dokumentation durchsuchen

Danke für deinen Beitrag! 🚀

Good Deeds - Nachbarschaftshilfe-App