{"id":45964326,"url":"https://github.com/phash/musikersuche","last_synced_at":"2026-02-28T14:02:24.808Z","repository":{"id":334372273,"uuid":"1140900310","full_name":"phash/musikersuche","owner":"phash","description":"Musicians Networking Platform - Find musicians, bands, and gigs in your area","archived":false,"fork":false,"pushed_at":"2026-02-24T20:03:31.000Z","size":5894,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-02-24T23:51:26.054Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phash.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP_v2.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-23T22:44:57.000Z","updated_at":"2026-02-24T20:03:35.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/phash/musikersuche","commit_stats":null,"previous_names":["phash/musikersuche"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/phash/musikersuche","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phash%2Fmusikersuche","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phash%2Fmusikersuche/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phash%2Fmusikersuche/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phash%2Fmusikersuche/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phash","download_url":"https://codeload.github.com/phash/musikersuche/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phash%2Fmusikersuche/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29936360,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-28T13:49:17.081Z","status":"ssl_error","status_checked_at":"2026-02-28T13:48:50.396Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-28T14:01:44.584Z","updated_at":"2026-02-28T14:02:24.794Z","avatar_url":"https://github.com/phash.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Musikersuche\n\nA musician networking platform where musicians create profiles, search by genre, instrument and location, and connect with each other. Built with a microservices architecture.\n\n## Tech Stack\n\n**Backend:** Java 21, Spring Boot 3.4, Netflix DGS (GraphQL), PostgreSQL 16 + PostGIS, Redis, RabbitMQ, Flyway\n**Frontend:** Vue 3 (Composition API), TypeScript, Vite 7, Tailwind CSS, Apollo Client, Pinia\n**Mobile:** Capacitor 8 (Android hybrid app), PWA with Workbox\n**Infrastructure:** Docker, Nginx, Prometheus + Grafana, GitHub Actions CI\n\n## Architecture\n\n```\n                    ┌──────────┐\n                    │  Nginx   │\n                    │ (Reverse │\n                    │  Proxy)  │\n                    └────┬─────┘\n                         │\n            ┌────────────┼────────────┐\n            │            │            │\n       ┌────▼───┐  ┌─────▼────┐  ┌───▼────┐\n       │Frontend│  │API Gateway│  │  Chat  │\n       │ (Vue)  │  │ (GraphQL) │  │Service │\n       └────────┘  │  :8080    │  │ :8084  │\n                   └─────┬─────┘  └───┬────┘\n                         │            │\n    ┌────────────────────┼────────────┼──────────────────┐\n    │                    │            │                   │\n┌───▼───┐ ┌──────┐ ┌────▼──┐ ┌──────▼┐ ┌──────┐ ┌──────┐\n│ Auth  │ │Profile│ │Search │ │ Media │ │Event │ │Admin │\n│:8081  │ │:8082  │ │:8083  │ │:8085  │ │:8086  │ │:8088 │\n└───┬───┘ └──┬───┘ └───┬───┘ └───┬───┘ └──┬───┘ └──┬───┘\n    │        │         │         │        │        │\n    │   ┌────▼──┐ ┌────▼──┐     │   ┌────▼──┐     │\n    │   │Payment│ │ Area  │     │   │       │     │\n    │   │:8087  │ │:8089  │     │   │       │     │\n    │   └───┬───┘ └───┬───┘     │   │       │     │\n    │       │         │         │   │       │     │\n┌───▼───────▼─────────▼─────────▼───▼───────▼─────▼───┐\n│              PostgreSQL + Redis + RabbitMQ            │\n└──────────────────────────────────────────────────────┘\n```\n\n### Services\n\n| Service | Port | Description |\n|---------|------|-------------|\n| api-gateway | 8080 | GraphQL API, JWT authentication, rate limiting |\n| auth-service | 8081 | Registration, login, OAuth2, password reset |\n| profile-service | 8082 | Musician \u0026 band profiles, search |\n| search-service | 8083 | Favorites, matching algorithm, notifications |\n| chat-service | 8084 | WebSocket messaging, conversations |\n| media-service | 8085 | File uploads (images, audio) |\n| event-service | 8086 | Gigs, events, promotions |\n| payment-service | 8087 | PayPal subscriptions, invoices |\n| admin-service | 8088 | Genres, instruments, admin functions |\n| area-service | 8089 | Communities, memberships, forum |\n\n## Features\n\n- **Musician \u0026 Band Profiles** - Create detailed profiles with instruments, genres, experience, location (PostGIS), profile picture\n- **Search \u0026 Discovery** - Filter musicians and bands by genre, instrument, location radius, experience level\n- **Smart Matching** - Weighted scoring algorithm (instruments 40%, genres 40%, location 20%) with daily recalculation\n- **Real-time Chat** - WebSocket messaging with band inbox support, rate-limited for free tier\n- **Gigs \u0026 Events** - Post and browse gigs with inquiry system\n- **Job Board** - Post job openings and search requests, applications with status tracking\n- **Communities (Areas)** - Create themed communities with forums, events, and membership management\n- **Guestbook** - Leave messages on profiles (rate-limited)\n- **Notifications** - In-app notifications for matches, messages, job matches\n- **Premium Subscriptions** - PayPal integration with Free/Pro tiers\n- **Admin Dashboard** - User management, abuse reports, audit logs, system configuration\n- **OAuth2** - Google and Facebook login\n- **Referral System** - Invite codes with premium rewards\n- **PWA** - Installable progressive web app with offline support\n- **Android App** - Capacitor hybrid app with native camera, geolocation, push notifications\n- **i18n** - German and English with language switcher\n- **Dark Mode** - System-aware with manual toggle\n- **GDPR Compliance** - Data export, cookie consent, privacy controls\n- **Monitoring** - Prometheus metrics, Grafana dashboards, alerting\n\n## Prerequisites\n\n- Docker \u0026 Docker Compose\n- Java 21 (for local backend development)\n- Node.js 20+ (for frontend development)\n\n## Quick Start\n\n### 1. Clone and configure\n\n```bash\ngit clone https://github.com/your-org/musikersuche.git\ncd musikersuche\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start infrastructure\n\n```bash\ndocker compose up -d postgres redis rabbitmq\n```\n\n### 3. Start backend services\n\nEach service has its own Maven wrapper:\n\n```bash\ncd services/auth-service \u0026\u0026 cmd /c \"mvnw.cmd spring-boot:run\"\n# Repeat for each service, or use docker compose:\ndocker compose up -d\n```\n\n### 4. Start frontend\n\n```bash\ncd frontend\nnpm install\nnpm run dev\n```\n\nThe app will be available at `http://localhost:5173` (dev) or `http://localhost:3000` (Docker).\n\n## Development\n\n### Build\n\n```bash\n# Single backend service\ncd services/\u003cname\u003e \u0026\u0026 cmd /c \"mvnw.cmd compile -DskipTests -q\"\n\n# Frontend\ncd frontend \u0026\u0026 npx vite build\n\n# Android (Capacitor)\ncd frontend \u0026\u0026 npm run build:capacitor \u0026\u0026 npx cap sync android\n```\n\n### Test\n\n```bash\n# Backend unit tests (per service)\ncd services/\u003cname\u003e \u0026\u0026 cmd /c \"mvnw.cmd test\"\n\n# Frontend unit tests (322 tests)\ncd frontend \u0026\u0026 npm run test:run\n\n# E2E tests (369 tests, some require running backend)\ncd frontend \u0026\u0026 npm run test:e2e\n```\n\n### Project Structure\n\n```\nmusikersuche/\n├── services/\n│   ├── api-gateway/          # GraphQL gateway\n│   ├── auth-service/         # Authentication\n│   ├── profile-service/      # Profiles \u0026 search\n│   ├── search-service/       # Matching \u0026 favorites\n│   ├── chat-service/         # Messaging\n│   ├── media-service/        # File uploads\n│   ├── event-service/        # Gigs \u0026 events\n│   ├── payment-service/      # Payments\n│   ├── admin-service/        # Administration\n│   └── area-service/         # Communities\n├── frontend/                 # Vue.js SPA\n│   ├── src/\n│   │   ├── components/       # Reusable components\n│   │   ├── views/            # Page views\n│   │   ├── stores/           # Pinia stores\n│   │   ├── composables/      # Vue composables\n│   │   └── i18n/             # Translations (de/en)\n│   └── e2e/                  # Playwright tests\n├── shared/                   # Shared Java library\n├── docker/                   # Docker configurations\n├── nginx/                    # Nginx config\n├── monitoring/               # Prometheus \u0026 Grafana\n├── docs/                     # Documentation\n├── docker-compose.yml        # Local development\n└── docker-compose.prod.yml   # Production\n```\n\n## Production Deployment\n\n```bash\n# On the VPS\ncd /opt/musikersuche\ngit pull origin master\n\n# Rebuild and restart affected services\ndocker compose -f docker-compose.prod.yml build --no-cache \u003cservice\u003e\ndocker compose -f docker-compose.prod.yml up -d \u003cservice\u003e\n\n# After frontend changes, reload nginx\ndocker compose -f docker-compose.prod.yml exec nginx nginx -s reload\n```\n\nSee [VPS Deployment Guide](docs/VPS_DEPLOYMENT_GUIDE.md) and [Production Checklist](PRODUCTION_CHECKLIST.md) for details.\n\n## Documentation\n\n| Document | Description |\n|----------|-------------|\n| [CLAUDE.md](CLAUDE.md) | Full technical reference |\n| [Styleguide](docs/STYLEGUIDE.md) | Design system \u0026 brand guidelines |\n| [VPS Deployment](docs/VPS_DEPLOYMENT_GUIDE.md) | Production deployment guide |\n| [PWA Guide](frontend/PWA_GUIDE.md) | Progressive Web App documentation |\n| [Android Integration](frontend/ANDROID_INTEGRATION.md) | Capacitor mobile app setup |\n| [CI/CD Strategy](docs/CI_CD_STRATEGY.md) | GitHub Actions pipeline |\n| [Roadmap](docs/ROADMAP.md) | Development roadmap \u0026 progress |\n\n## Environment Variables\n\nCopy `.env.example` to `.env`. Key variables:\n\n| Variable | Description |\n|----------|-------------|\n| `POSTGRES_PASSWORD` | Database password |\n| `JWT_SECRET` | JWT signing key (min 256 bits) |\n| `CORS_ALLOWED_ORIGINS` | Allowed frontend origins |\n| `MAIL_HOST` / `MAIL_PASSWORD` | SMTP configuration |\n| `PAYPAL_CLIENT_ID` / `PAYPAL_CLIENT_SECRET` | PayPal integration |\n| `GOOGLE_CLIENT_ID` / `FACEBOOK_CLIENT_ID` | OAuth2 providers |\n| `FIREBASE_ENABLED` | Push notifications (optional) |\n\nSee [.env.example](.env.example) for the full list.\n\n## License\n\nAll rights reserved.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphash%2Fmusikersuche","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphash%2Fmusikersuche","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphash%2Fmusikersuche/lists"}