Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
bbbf179
Bump caddy from `efb93f7` to `b6424b4` in /containers (#234)
dependabot[bot] Jan 18, 2026
d42db8b
Bump actions/setup-dotnet from 5.0.1 to 5.1.0 (#233)
dependabot[bot] Jan 18, 2026
46b90d7
Remove FluentAssertions and re-enable disabled authorization tests (#…
Copilot Jan 18, 2026
135d178
Fix code review feedback: null-forgiving operator and DbContext dispo…
Copilot Jan 18, 2026
01abbeb
Fix Apple Music link parser query parameter handling (#240)
Copilot Jan 20, 2026
d50594a
Mostly complete conversion from sqlite to redis, and the addition of …
tsmarvin Jan 21, 2026
c17c7ad
Fix Redis queue message parsing, add log sanitization, and update doc…
Copilot Jan 22, 2026
341ed95
Fix consumer ID generation, memory streaming, normalization inconsist…
Copilot Jan 22, 2026
b58a2a2
- Add QR code functionality to embed endpoints.
tsmarvin Jan 22, 2026
a44bccf
Refactor ParseMessageId and URL extraction with shared implementation…
Copilot Jan 22, 2026
ba632ae
Feature/add genre caching (#255)
tsmarvin Jan 27, 2026
a4d7a95
Fix missing namespace import for AppSettings in test files (#260)
Copilot Jan 27, 2026
3f90597
ATProto OAuth with DPoP, Genre Caching, and Code Quality Improvements…
Copilot Feb 4, 2026
20ceaec
Merge branch 'develop' into feature/convert2redis_addqueue
tsmarvin Feb 4, 2026
7f11fbc
Potential fix for code scanning alert no. 93: Missing cross-site requ…
tsmarvin Feb 4, 2026
3ef1e90
Potential fix for code scanning alert no. 89: Missing cross-site requ…
tsmarvin Feb 4, 2026
3b2a5f8
Fix package lock file runtime identifier mismatch in CI and Docker bu…
Copilot Feb 4, 2026
cc73e7d
Implement three-tier authentication for music lookup endpoints (#271)
Copilot Feb 4, 2026
5b0172f
Fix antiforgery for home controller tests, standarize using antiforge…
tsmarvin Feb 4, 2026
5f8f4a8
Ditch unnecessary platform specific lock pieces.
tsmarvin Feb 4, 2026
c975b37
Apply suggestion from @Copilot
tsmarvin Feb 4, 2026
37c2c10
Update Tests/Unit/OpenGraphExtensionsTests.cs
tsmarvin Feb 4, 2026
165d8a1
Update entrypoint to ensure we're starting the process from the right…
tsmarvin Feb 4, 2026
7cda39f
Refresh NuGet lockfile for refactor-develop dependencies (#273)
Copilot Feb 4, 2026
df88285
Update NuGet lock files for linux-x64 locked restore (#275)
Copilot Feb 4, 2026
bbc3b87
Fix docker publish
tsmarvin Feb 4, 2026
ad9866b
Merge branch 'refactor-develop' of https://github.com/tsmarvin/Bridge…
tsmarvin Feb 4, 2026
04b36b6
Fix docker build/publish and standardize it with a single script.
tsmarvin Feb 4, 2026
2771332
wip
tsmarvin Feb 4, 2026
c97f95e
Continued wip
tsmarvin Feb 4, 2026
eb672ec
Hopefully functional
tsmarvin Feb 4, 2026
c2467ae
Please clap
tsmarvin Feb 4, 2026
e485cba
wip
tsmarvin Feb 4, 2026
46d1b6c
wip
tsmarvin Feb 4, 2026
c3fac8e
wip
tsmarvin Feb 4, 2026
73848bc
Ensure container starts
tsmarvin Feb 4, 2026
bbadb23
Allow ILLink package changes too.
tsmarvin Feb 4, 2026
b2b0c06
Include redis
tsmarvin Feb 4, 2026
cba8abc
Fix tests & working directory mapping
tsmarvin Feb 4, 2026
7d043bc
Create "quick start" install scripts to make updates and new deployme…
tsmarvin Feb 5, 2026
6d8360e
Update src/BridgeBeats.Core/Domain/Extensions/AspireServiceExtensions.cs
tsmarvin Feb 5, 2026
51c476d
Apply suggestion from @Copilot
tsmarvin Feb 5, 2026
bec30a5
Update Tests/CustomWebApplicationFactory.cs
tsmarvin Feb 5, 2026
4899f6a
Address assorted issues
tsmarvin Feb 5, 2026
fbb5f5c
De-ambiguate the logger instance.
tsmarvin Feb 5, 2026
d7f2423
additional fixes
tsmarvin Feb 5, 2026
527bf89
- ports are accessible
tsmarvin Feb 6, 2026
a753b38
Merge branch 'develop' into refactor-develop
tsmarvin Feb 6, 2026
84800ba
Fixes and cleanup
tsmarvin Feb 6, 2026
f2b8dfb
Merge branch 'refactor-develop' of https://github.com/tsmarvin/Bridge…
tsmarvin Feb 6, 2026
a9afea7
Fix anti-forgery issues preventing login.
tsmarvin Feb 6, 2026
4191461
Fix embed CSP policy
tsmarvin Feb 6, 2026
f262d51
Actually include antiforgery.js
tsmarvin Feb 6, 2026
c79ecfa
Continued iteration on CSP fixes for embeds.
tsmarvin Feb 6, 2026
4f89235
Fix the qr code routing
tsmarvin Feb 6, 2026
3f04224
Fix embed qrs to point at actual card not embed
tsmarvin Feb 6, 2026
36f2adf
Point discord worker service discovery in the right direction
tsmarvin Feb 6, 2026
72b0d41
In progress syncing saga data work
tsmarvin Feb 6, 2026
bd57fb7
wip discord service auth fixes
tsmarvin Feb 6, 2026
4b6f600
Merge branch 'refactor-develop' of https://github.com/tsmarvin/Bridge…
tsmarvin Feb 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
763 changes: 382 additions & 381 deletions .editorconfig

Large diffs are not rendered by default.

254 changes: 127 additions & 127 deletions .github/SECURITY.md
Original file line number Diff line number Diff line change
@@ -1,127 +1,127 @@
# Security Policy

## Supported Versions

Security updates are provided for the following versions:

| Version | Supported |
| ------- | ------------------ |
| 1.0.0+ | :white_check_mark: |
| < 1.0.0 | :x: |

**Docker Images**: We publish security-patched images regularly. Always pull the `latest` tag or use specific version tags for reproducible deployments.

## Reporting a Vulnerability

We take security seriously. If you discover a security vulnerability in BridgeBeats, please report it responsibly.

### How to Report

Please report security vulnerabilities by creating a [GitHub issue](https://github.com/tsmarvin/BridgeBeats/issues).

If you prefer not to use GitHub issues, you can email: **admin@bridgebeats.link**

### What to Include

When reporting a vulnerability, please include:

- **Description** - Clear description of the vulnerability
- **Impact** - Potential impact and attack scenarios
- **Reproduction Steps** - Step-by-step instructions to reproduce the issue
- **Affected Versions** - Which versions are affected (if known)
- **Suggested Fix** - If you have ideas for remediation (optional)

### Response Timeline

- **Initial Response**: Within 48 hours
- **Status Update**: Within 7 days
- **Fix Timeline**: Depends on severity
- Critical: 1-7 days
- High: 7-14 days
- Medium: 14-30 days
- Low: 30-90 days

We'll keep you informed throughout the process and credit you in the security advisory (unless you prefer to remain anonymous).

## Security Features

BridgeBeats includes several built-in security features:

### Authentication & Authorization
- API key-based authentication with hashed storage
- ASP.NET Core Identity for user management
- Role-based access control for Aspire Dashboard
- Rate limiting (20 requests/hour per user by default)

### Data Protection
- API keys are hashed with salt before storage
- Input links kept private (not stored on ATProto PDS, only in local cache)

### HTTP Security
- HTTPS enforcement via reverse proxy (Caddy)
- Standard security headers (configured in reverse proxy)
- CORS configuration for API access
- Request validation and sanitization

### Monitoring & Observability
- OpenTelemetry integration for security event logging
- File-based logging with automatic rotation (up to ~50MB total across all retained log files)
- Health check endpoints for monitoring
- Failed authentication attempts logged for auditing

### Supply Chain Security
- **Dependabot** - Automated dependency updates (weekly scans)
- **CodeQL** - Automated code security scanning via GitHub Advanced Security
- **OpenSSF Scorecard** - Supply chain security assessment
- Pinned GitHub Actions with SHA hashes
- Multi-stage Docker builds with minimal attack surface

## Configuration Validation

BridgeBeats performs fail-fast validation at startup:

- Checks for required music provider credentials
- Validates Apple Music private key (.p8) file existence
- Confirms API key salt is configured
- Warns about missing optional features (Discord, ATProto)

Missing or invalid credentials are logged at startup, helping identify configuration issues early.

## Privacy Considerations

- **Minimal Data Storage**: Only stores user accounts, API keys (hashed), and optional link cache
- **No Tracking**: Input links are kept private and not shared on ATProto PDS
- **Open Source**: Full transparency - you can audit the code yourself

## Security Updates

Security updates are distributed through:

1. **Docker Images** - Published to Docker Hub
2. **Source Code** - Always available on the main branch

Subscribe to repository notifications to receive security advisories and release announcements.

## Responsible Disclosure

We follow responsible disclosure practices:

- Security issues are privately reported and fixed before public disclosure
- Security advisories are published after fixes are available
- CVE IDs are requested for significant vulnerabilities
- Contributors are credited (unless they prefer anonymity)

## Additional Resources

- [Configuration Guide](docs/CONFIGURATION.md) - Secure configuration instructions
- [Deployment Guide](docs/DEPLOYMENT.md) - Production deployment security
- [Caddy Cloudflare Guide](docs/CADDY_CLOUDFLARE.md) - HTTPS and DNS security
- [OpenSSF Scorecard](https://scorecard.dev/viewer/?uri=github.com/tsmarvin/BridgeBeats) - Supply chain security metrics

## Acknowledgments

We appreciate security researchers who responsibly disclose vulnerabilities and help make BridgeBeats more secure.

---

**Last Updated**: December 2025
# Security Policy
## Supported Versions
Security updates are provided for the following versions:
| Version | Supported |
| ------- | ------------------ |
| 1.0.0+ | :white_check_mark: |
| < 1.0.0 | :x: |
**Docker Images**: We publish security-patched images regularly. Always pull the `latest` tag or use specific version tags for reproducible deployments.
## Reporting a Vulnerability
We take security seriously. If you discover a security vulnerability in BridgeBeats, please report it responsibly.
### How to Report
Please report security vulnerabilities by creating a [GitHub issue](https://github.com/tsmarvin/BridgeBeats/issues).
If you prefer not to use GitHub issues, you can email: **admin@bridgebeats.link**
### What to Include
When reporting a vulnerability, please include:
- **Description** - Clear description of the vulnerability
- **Impact** - Potential impact and attack scenarios
- **Reproduction Steps** - Step-by-step instructions to reproduce the issue
- **Affected Versions** - Which versions are affected (if known)
- **Suggested Fix** - If you have ideas for remediation (optional)
### Response Timeline
- **Initial Response**: Within 48 hours
- **Status Update**: Within 7 days
- **Fix Timeline**: Depends on severity
- Critical: 1-7 days
- High: 7-14 days
- Medium: 14-30 days
- Low: 30-90 days
We'll keep you informed throughout the process and credit you in the security advisory (unless you prefer to remain anonymous).
## Security Features
BridgeBeats includes several built-in security features:
### Authentication & Authorization
- API key-based authentication with hashed storage
- ASP.NET Core Identity for user management
- Role-based access control for Aspire Dashboard
- Rate limiting (20 requests/hour per user by default)
### Data Protection
- API keys are hashed with salt before storage
- Input links kept private (not stored on ATProto PDS, only in local cache)
### HTTP Security
- HTTPS enforcement via reverse proxy (Caddy)
- Standard security headers (configured in reverse proxy)
- CORS configuration for API access
- Request validation and sanitization
### Monitoring & Observability
- OpenTelemetry integration for security event logging
- File-based logging with automatic rotation (up to ~50MB total across all retained log files)
- Health check endpoints for monitoring
- Failed authentication attempts logged for auditing
### Supply Chain Security
- **Dependabot** - Automated dependency updates (weekly scans)
- **CodeQL** - Automated code security scanning via GitHub Advanced Security
- **OpenSSF Scorecard** - Supply chain security assessment
- Pinned GitHub Actions with SHA hashes
- Multi-stage Docker builds with minimal attack surface
## Configuration Validation
BridgeBeats performs fail-fast validation at startup:
- Checks for required music provider credentials
- Validates Apple Music private key (.p8) file existence
- Confirms API key salt is configured
- Warns about missing optional features (Discord, ATProto)
Missing or invalid credentials are logged at startup, helping identify configuration issues early.
## Privacy Considerations
- **Minimal Data Storage**: Only stores user accounts, API keys (hashed), and optional link cache
- **No Tracking**: Input links are kept private and not shared on ATProto PDS
- **Open Source**: Full transparency - you can audit the code yourself
## Security Updates
Security updates are distributed through:
1. **Docker Images** - Published to Docker Hub
2. **Source Code** - Always available on the main branch
Subscribe to repository notifications to receive security advisories and release announcements.
## Responsible Disclosure
We follow responsible disclosure practices:
- Security issues are privately reported and fixed before public disclosure
- Security advisories are published after fixes are available
- CVE IDs are requested for significant vulnerabilities
- Contributors are credited (unless they prefer anonymity)
## Additional Resources
- [Configuration Guide](docs/CONFIGURATION.md) - Secure configuration instructions
- [Deployment Guide](docs/DEPLOYMENT.md) - Production deployment security
- [Caddy Cloudflare Guide](docs/CADDY_CLOUDFLARE.md) - HTTPS and DNS security
- [OpenSSF Scorecard](https://scorecard.dev/viewer/?uri=github.com/tsmarvin/BridgeBeats) - Supply chain security metrics
## Acknowledgments
We appreciate security researchers who responsibly disclose vulnerabilities and help make BridgeBeats more secure.
---
**Last Updated**: December 2025
38 changes: 19 additions & 19 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file

version: 2
updates:
- package-ecosystem: "nuget"
directory: "/" # Location of .NET project files
schedule:
interval: "weekly"
- package-ecosystem: "docker"
directory: "/containers" # Location of Dockerfiles
schedule:
interval: "weekly"
- package-ecosystem: "github-actions"
directory: "/" # Location of GitHub Actions workflows
schedule:
interval: "weekly"
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
version: 2
updates:
- package-ecosystem: "nuget"
directory: "/" # Location of .NET project files
schedule:
interval: "weekly"
- package-ecosystem: "docker"
directory: "/containers" # Location of Dockerfiles
schedule:
interval: "weekly"
- package-ecosystem: "github-actions"
directory: "/" # Location of GitHub Actions workflows
schedule:
interval: "weekly"
Loading
Loading