https://github.com/phash/musikersuche
Musicians Networking Platform - Find musicians, bands, and gigs in your area
https://github.com/phash/musikersuche
Last synced: 4 months ago
JSON representation
Musicians Networking Platform - Find musicians, bands, and gigs in your area
- Host: GitHub
- URL: https://github.com/phash/musikersuche
- Owner: phash
- Created: 2026-01-23T22:44:57.000Z (5 months ago)
- Default Branch: master
- Last Pushed: 2026-02-24T20:03:31.000Z (4 months ago)
- Last Synced: 2026-02-24T23:51:26.054Z (4 months ago)
- Language: Java
- Size: 5.62 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Security: SECURITY.md
- Roadmap: ROADMAP_v2.md
Awesome Lists containing this project
README
# Musikersuche
A musician networking platform where musicians create profiles, search by genre, instrument and location, and connect with each other. Built with a microservices architecture.
## Tech Stack
**Backend:** Java 21, Spring Boot 3.4, Netflix DGS (GraphQL), PostgreSQL 16 + PostGIS, Redis, RabbitMQ, Flyway
**Frontend:** Vue 3 (Composition API), TypeScript, Vite 7, Tailwind CSS, Apollo Client, Pinia
**Mobile:** Capacitor 8 (Android hybrid app), PWA with Workbox
**Infrastructure:** Docker, Nginx, Prometheus + Grafana, GitHub Actions CI
## Architecture
```
┌──────────┐
│ Nginx │
│ (Reverse │
│ Proxy) │
└────┬─────┘
│
┌────────────┼────────────┐
│ │ │
┌────▼───┐ ┌─────▼────┐ ┌───▼────┐
│Frontend│ │API Gateway│ │ Chat │
│ (Vue) │ │ (GraphQL) │ │Service │
└────────┘ │ :8080 │ │ :8084 │
└─────┬─────┘ └───┬────┘
│ │
┌────────────────────┼────────────┼──────────────────┐
│ │ │ │
┌───▼───┐ ┌──────┐ ┌────▼──┐ ┌──────▼┐ ┌──────┐ ┌──────┐
│ Auth │ │Profile│ │Search │ │ Media │ │Event │ │Admin │
│:8081 │ │:8082 │ │:8083 │ │:8085 │ │:8086 │ │:8088 │
└───┬───┘ └──┬───┘ └───┬───┘ └───┬───┘ └──┬───┘ └──┬───┘
│ │ │ │ │ │
│ ┌────▼──┐ ┌────▼──┐ │ ┌────▼──┐ │
│ │Payment│ │ Area │ │ │ │ │
│ │:8087 │ │:8089 │ │ │ │ │
│ └───┬───┘ └───┬───┘ │ │ │ │
│ │ │ │ │ │ │
┌───▼───────▼─────────▼─────────▼───▼───────▼─────▼───┐
│ PostgreSQL + Redis + RabbitMQ │
└──────────────────────────────────────────────────────┘
```
### Services
| Service | Port | Description |
|---------|------|-------------|
| api-gateway | 8080 | GraphQL API, JWT authentication, rate limiting |
| auth-service | 8081 | Registration, login, OAuth2, password reset |
| profile-service | 8082 | Musician & band profiles, search |
| search-service | 8083 | Favorites, matching algorithm, notifications |
| chat-service | 8084 | WebSocket messaging, conversations |
| media-service | 8085 | File uploads (images, audio) |
| event-service | 8086 | Gigs, events, promotions |
| payment-service | 8087 | PayPal subscriptions, invoices |
| admin-service | 8088 | Genres, instruments, admin functions |
| area-service | 8089 | Communities, memberships, forum |
## Features
- **Musician & Band Profiles** - Create detailed profiles with instruments, genres, experience, location (PostGIS), profile picture
- **Search & Discovery** - Filter musicians and bands by genre, instrument, location radius, experience level
- **Smart Matching** - Weighted scoring algorithm (instruments 40%, genres 40%, location 20%) with daily recalculation
- **Real-time Chat** - WebSocket messaging with band inbox support, rate-limited for free tier
- **Gigs & Events** - Post and browse gigs with inquiry system
- **Job Board** - Post job openings and search requests, applications with status tracking
- **Communities (Areas)** - Create themed communities with forums, events, and membership management
- **Guestbook** - Leave messages on profiles (rate-limited)
- **Notifications** - In-app notifications for matches, messages, job matches
- **Premium Subscriptions** - PayPal integration with Free/Pro tiers
- **Admin Dashboard** - User management, abuse reports, audit logs, system configuration
- **OAuth2** - Google and Facebook login
- **Referral System** - Invite codes with premium rewards
- **PWA** - Installable progressive web app with offline support
- **Android App** - Capacitor hybrid app with native camera, geolocation, push notifications
- **i18n** - German and English with language switcher
- **Dark Mode** - System-aware with manual toggle
- **GDPR Compliance** - Data export, cookie consent, privacy controls
- **Monitoring** - Prometheus metrics, Grafana dashboards, alerting
## Prerequisites
- Docker & Docker Compose
- Java 21 (for local backend development)
- Node.js 20+ (for frontend development)
## Quick Start
### 1. Clone and configure
```bash
git clone https://github.com/your-org/musikersuche.git
cd musikersuche
cp .env.example .env
# Edit .env with your configuration
```
### 2. Start infrastructure
```bash
docker compose up -d postgres redis rabbitmq
```
### 3. Start backend services
Each service has its own Maven wrapper:
```bash
cd services/auth-service && cmd /c "mvnw.cmd spring-boot:run"
# Repeat for each service, or use docker compose:
docker compose up -d
```
### 4. Start frontend
```bash
cd frontend
npm install
npm run dev
```
The app will be available at `http://localhost:5173` (dev) or `http://localhost:3000` (Docker).
## Development
### Build
```bash
# Single backend service
cd services/ && cmd /c "mvnw.cmd compile -DskipTests -q"
# Frontend
cd frontend && npx vite build
# Android (Capacitor)
cd frontend && npm run build:capacitor && npx cap sync android
```
### Test
```bash
# Backend unit tests (per service)
cd services/ && cmd /c "mvnw.cmd test"
# Frontend unit tests (322 tests)
cd frontend && npm run test:run
# E2E tests (369 tests, some require running backend)
cd frontend && npm run test:e2e
```
### Project Structure
```
musikersuche/
├── services/
│ ├── api-gateway/ # GraphQL gateway
│ ├── auth-service/ # Authentication
│ ├── profile-service/ # Profiles & search
│ ├── search-service/ # Matching & favorites
│ ├── chat-service/ # Messaging
│ ├── media-service/ # File uploads
│ ├── event-service/ # Gigs & events
│ ├── payment-service/ # Payments
│ ├── admin-service/ # Administration
│ └── area-service/ # Communities
├── frontend/ # Vue.js SPA
│ ├── src/
│ │ ├── components/ # Reusable components
│ │ ├── views/ # Page views
│ │ ├── stores/ # Pinia stores
│ │ ├── composables/ # Vue composables
│ │ └── i18n/ # Translations (de/en)
│ └── e2e/ # Playwright tests
├── shared/ # Shared Java library
├── docker/ # Docker configurations
├── nginx/ # Nginx config
├── monitoring/ # Prometheus & Grafana
├── docs/ # Documentation
├── docker-compose.yml # Local development
└── docker-compose.prod.yml # Production
```
## Production Deployment
```bash
# On the VPS
cd /opt/musikersuche
git pull origin master
# Rebuild and restart affected services
docker compose -f docker-compose.prod.yml build --no-cache
docker compose -f docker-compose.prod.yml up -d
# After frontend changes, reload nginx
docker compose -f docker-compose.prod.yml exec nginx nginx -s reload
```
See [VPS Deployment Guide](docs/VPS_DEPLOYMENT_GUIDE.md) and [Production Checklist](PRODUCTION_CHECKLIST.md) for details.
## Documentation
| Document | Description |
|----------|-------------|
| [CLAUDE.md](CLAUDE.md) | Full technical reference |
| [Styleguide](docs/STYLEGUIDE.md) | Design system & brand guidelines |
| [VPS Deployment](docs/VPS_DEPLOYMENT_GUIDE.md) | Production deployment guide |
| [PWA Guide](frontend/PWA_GUIDE.md) | Progressive Web App documentation |
| [Android Integration](frontend/ANDROID_INTEGRATION.md) | Capacitor mobile app setup |
| [CI/CD Strategy](docs/CI_CD_STRATEGY.md) | GitHub Actions pipeline |
| [Roadmap](docs/ROADMAP.md) | Development roadmap & progress |
## Environment Variables
Copy `.env.example` to `.env`. Key variables:
| Variable | Description |
|----------|-------------|
| `POSTGRES_PASSWORD` | Database password |
| `JWT_SECRET` | JWT signing key (min 256 bits) |
| `CORS_ALLOWED_ORIGINS` | Allowed frontend origins |
| `MAIL_HOST` / `MAIL_PASSWORD` | SMTP configuration |
| `PAYPAL_CLIENT_ID` / `PAYPAL_CLIENT_SECRET` | PayPal integration |
| `GOOGLE_CLIENT_ID` / `FACEBOOK_CLIENT_ID` | OAuth2 providers |
| `FIREBASE_ENABLED` | Push notifications (optional) |
See [.env.example](.env.example) for the full list.
## License
All rights reserved.