Skip to content

Good Deeds - Nachbarschaftshilfe App ​

Eine App, bei der Menschen ihre Nachbarschaft bei kleinen Aufgaben (z.B. Lampe installieren) unterstützen können. Für jede Hilfe gibt es Punkte, die bei Werbepartnern der App für Rabatte eingelöst werden können.

🏗️ Tech-Stack ​

  • Backend: Node.js 20 + TypeScript + NestJS
  • Database: PostgreSQL 16 + PostGIS
  • Frontend: React Native + Expo
  • Infrastructure: AWS (CloudFront, ALB, ECS, RDS, S3)
  • Cache: Redis (ElastiCache)

📁 Projekt-Struktur ​

good-deeds/
├── apps/
│   ├── mobile/              # React Native App
│   └── backend/             # NestJS API
├── packages/
│   └── shared/              # Shared TypeScript Code
├── infrastructure/          # AWS CDK Code
├── docs/                    # Dokumentation
│   ├── ARCHITECTURE.md
│   ├── DATABASE_SCHEMA.md
│   └── SYSTEM_DIAGRAM.md
├── docker-compose.yml       # Lokale Dev-Environment
├── package.json             # Root package.json
├── turbo.json               # Turborepo Config
└── README.md

🚀 Quick Start ​

Prerequisites ​

  • Node.js 20 LTS
  • Docker & Docker Compose
  • Git

Setup ​

  1. Repository klonen

    bash
    git clone https://github.com/GiacomoVoss/good-deeds.git
    cd good-deeds
  2. Dependencies installieren

    bash
    npm install
  3. Environment-Variablen konfigurieren

    bash
    cp .env.example .env
    # .env anpassen mit eigenen Werten
  4. Lokale Development-Environment starten

    bash
    docker-compose up -d

    Dies startet:

    • PostgreSQL mit PostGIS (Port 5432)
    • Redis (Port 6379)
    • Backend API (Port 3000)
  5. Database Migrations ausführen

    bash
    npm run migration:run
  6. Backend starten (wenn nicht über Docker)

    bash
    cd apps/backend
    npm run start:dev
  7. Mobile App starten

    bash
    cd apps/mobile
    npm start

    Dann:

    • iOS: Drücke i für iOS Simulator
    • Android: Drücke a für Android Emulator

🧪 Testing ​

bash
# Unit Tests
npm run test

# E2E Tests
npm run test:e2e

# Test Coverage
npm run test:cov

🔧 Development ​

Backend Development ​

bash
cd apps/backend

# Development Mode (mit Hot-Reload)
npm run start:dev

# Build
npm run build

# Linting
npm run lint

# Format Code
npm run format

Frontend Development ​

bash
cd apps/mobile

# Start Expo Dev Server
npm start

# iOS Simulator
npm run ios

# Android Emulator
npm run android

# Lint
npm run lint

Database ​

bash
# Migration erstellen
npm run migration:create -- -n MigrationName

# Migration generieren (aus Entity-Changes)
npm run migration:generate -- -n MigrationName

# Migrations ausführen
npm run migration:run

# Rollback (letzte Migration)
npm run migration:revert

# Database Seed (Test-Daten)
npm run seed:run

📝 Code-Standards ​

Wir nutzen:

  • ESLint für Code-Quality
  • Prettier für Code-Formatting
  • TypeScript für Type-Safety
  • Husky für Git Hooks (Pre-Commit Linting)

Automatisches Formatting vor jedem Commit:

bash
# Setup Husky
npm run prepare

🐳 Docker ​

Lokale Development mit Docker Compose ​

bash
# Alle Services starten
docker-compose up -d

# Logs anschauen
docker-compose logs -f

# Services stoppen
docker-compose down

# Mit Volume-Cleanup
docker-compose down -v

Services ​

  • PostgreSQL: localhost:5432 (User: dev, Password: dev, DB: neighbor_dev)
  • Redis: localhost:6379
  • Backend API: localhost:3000

🌐 API-Dokumentation ​

Nach dem Start der Backend-API ist die interaktive API-Dokumentation verfügbar:

📚 Weitere Dokumentation ​

🔐 Environment-Variablen ​

Wichtige Environment-Variablen für lokale Entwicklung:

Backend (.env) ​

env
# Database
DATABASE_URL=postgresql://dev:dev@localhost:5432/neighbor_dev

# Redis
REDIS_URL=redis://localhost:6379

# JWT
JWT_SECRET=your-secret-key-change-in-production
JWT_EXPIRES_IN=15m
REFRESH_TOKEN_EXPIRES_IN=7d

# OAuth
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
APPLE_CLIENT_ID=your-apple-client-id

# AWS (für Production)
AWS_REGION=eu-central-1
AWS_ACCESS_KEY_ID=your-aws-key
AWS_SECRET_ACCESS_KEY=your-aws-secret
S3_BUCKET_NAME=good-deeds-uploads

🚢 Deployment ​

Staging ​

bash
npm run deploy:staging

Production ​

bash
npm run deploy:production

Deployments erfolgen über GitHub Actions CI/CD Pipeline bei Push auf:

  • main Branch → Production
  • staging Branch → Staging

🤝 Contributing ​

  1. Branch erstellen: git checkout -b feature/my-feature
  2. Changes commiten: git commit -m 'feat: add some feature'
  3. Branch pushen: git push origin feature/my-feature
  4. Pull Request erstellen

Siehe CONTRIBUTING.md für Details.

Commit-Message-Convention ​

Wir nutzen Conventional Commits:

  • feat: Neue Features
  • fix: Bug Fixes
  • docs: Dokumentation
  • style: Code-Formatting (keine funktionalen Änderungen)
  • refactor: Code-Refactoring
  • test: Tests hinzufügen/ändern
  • chore: Build-Process, Dependencies, etc.

📄 License ​

Private - All Rights Reserved

👥 Team ​

  • CTO: Technische Architektur & Backend-Entwicklung
  • CEO: Produkt-Vision & Strategie

Status: In Development 🚧
Version: 0.1.0-alpha

Good Deeds - Nachbarschaftshilfe-App