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