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
Repository klonen
bashgit clone https://github.com/GiacomoVoss/good-deeds.git cd good-deedsDependencies installieren
bashnpm installEnvironment-Variablen konfigurieren
bashcp .env.example .env # .env anpassen mit eigenen WertenLokale Development-Environment starten
bashdocker-compose up -dDies startet:
- PostgreSQL mit PostGIS (Port 5432)
- Redis (Port 6379)
- Backend API (Port 3000)
Database Migrations ausführen
bashnpm run migration:runBackend starten (wenn nicht über Docker)
bashcd apps/backend npm run start:devMobile App starten
bashcd apps/mobile npm startDann:
- iOS: Drücke
ifür iOS Simulator - Android: Drücke
afür Android Emulator
- iOS: Drücke
🧪 Testing
# Unit Tests
npm run test
# E2E Tests
npm run test:e2e
# Test Coverage
npm run test:cov🔧 Development
Backend Development
cd apps/backend
# Development Mode (mit Hot-Reload)
npm run start:dev
# Build
npm run build
# Linting
npm run lint
# Format Code
npm run formatFrontend Development
cd apps/mobile
# Start Expo Dev Server
npm start
# iOS Simulator
npm run ios
# Android Emulator
npm run android
# Lint
npm run lintDatabase
# 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:
# Setup Husky
npm run prepare🐳 Docker
Lokale Development mit Docker Compose
# Alle Services starten
docker-compose up -d
# Logs anschauen
docker-compose logs -f
# Services stoppen
docker-compose down
# Mit Volume-Cleanup
docker-compose down -vServices
- 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:
- Swagger UI: http://localhost:3000/api/docs
- OpenAPI JSON: http://localhost:3000/api/docs-json
📚 Weitere Dokumentation
🔐 Environment-Variablen
Wichtige Environment-Variablen für lokale Entwicklung:
Backend (.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
npm run deploy:stagingProduction
npm run deploy:productionDeployments erfolgen über GitHub Actions CI/CD Pipeline bei Push auf:
mainBranch → ProductionstagingBranch → Staging
🤝 Contributing
- Branch erstellen:
git checkout -b feature/my-feature - Changes commiten:
git commit -m 'feat: add some feature' - Branch pushen:
git push origin feature/my-feature - Pull Request erstellen
Siehe CONTRIBUTING.md für Details.
Commit-Message-Convention
Wir nutzen Conventional Commits:
feat:Neue Featuresfix:Bug Fixesdocs:Dokumentationstyle:Code-Formatting (keine funktionalen Änderungen)refactor:Code-Refactoringtest:Tests hinzufügen/ändernchore: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
