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
Fork das Repository
bashgh repo fork GiacomoVoss/good-deedsClone dein Fork
bashgit clone https://github.com/DEIN-USERNAME/good-deeds.git cd good-deedsBranch erstellen
bashgit checkout -b feature/mein-feature # oder git checkout -b fix/mein-bugfixEnvironment aufsetzen
bashnpm install cp .env.example .env docker-compose up -dÄnderungen machen
- Schreibe klaren, gut dokumentierten Code
- Folge den Code-Standards (ESLint + Prettier)
- Schreibe Tests für neue Features
- Aktualisiere Dokumentation bei Bedarf
Tests ausführen
bashnpm run lint npm run test npm run test:e2eCommit mit Conventional Commits
bashgit add . git commit -m "feat: add user profile validation"Commit-Types:
feat:Neues Featurefix:Bug Fixdocs:Dokumentationstyle:Code-Formattingrefactor:Code-Refactoringtest:Testschore:Build-Process, Dependencies
Push zu deinem Fork
bashgit push origin feature/mein-featurePull 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 (
getUserByIdstattget) - 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 testsBranch-Strategie
main: Production (geschützt, nur via PR)staging: Staging-Environmentdevelop: Development-Branchfeature/*: Feature-Branchesfix/*: Bugfix-Brancheshotfix/*: 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
- Automated Checks: CI muss grün sein
- Code Review: Mind. 1 Approval
- Testing: Lokale Tests + Staging-Deployment
- 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 ScriptsBackend-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/ # ConfigurationEnvironment 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 devHäufige Fragen
Wie erstelle ich eine neue Migration?
bash
npm run migration:create -- -n AddUserProfileTable
# Edit the migration file
npm run migration:runWie 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:e2eWie debugge ich die API?
bash
# Start with debugging
npm run start:debug
# Attach Debugger (VS Code)
# Use "Attach to Process" launch configRessourcen
Fragen?
Bei Fragen kannst du:
- Ein Issue erstellen
- Im Team-Chat nachfragen
- Die Dokumentation durchsuchen
Danke für deinen Beitrag! 🚀
