Skip to content

Commit 6cf7a55

Browse files
committed
migrate to separate repo
0 parents  commit 6cf7a55

98 files changed

Lines changed: 20590 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.dockerignore

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
# This file specifies files that are ignored by gcloud when uploading to Cloud Build
2+
# Unlike .gitignore, this controls what gets sent to the build environment
3+
4+
# Development files
5+
.env
6+
.env.local
7+
.env.development
8+
.env.test
9+
10+
# Build artifacts
11+
target/
12+
.cargo/
13+
14+
# IDE files
15+
.vscode/
16+
.idea/
17+
*.swp
18+
*.swo
19+
*~
20+
21+
# OS files
22+
.DS_Store
23+
Thumbs.db
24+
25+
# Git
26+
.git/
27+
.gitignore
28+
29+
# Documentation (not needed for build)
30+
*.md
31+
docs/
32+
33+
# Test files (not needed for production build)
34+
tests/
35+
test-data/
36+
37+
# Logs
38+
*.log
39+
logs/
40+
41+
# Temporary files
42+
tmp/
43+
temp/
44+
45+
# Node modules (if any)
46+
node_modules/
47+
48+
# Coverage reports
49+
coverage/
50+
tarpaulin-report.html
51+
52+
# Local database files
53+
*.db
54+
*.sqlite
55+
56+
# Backup files
57+
*.bak
58+
*.backup
59+
60+
# Editor temp files
61+
.*.tmp
62+
.*.swp
63+
64+
# Cache directories
65+
.cache/
66+
67+
# Scripts not needed in container (but needed for deployment)
68+
# build.sh
69+
70+
# Don't ignore service config directories - we need them in the build!
71+
# gateway-service/config/
72+
# streaming-engine/config/
73+
# migrations/
74+
75+
# Ignore webapp build artifacts if present
76+
webapp/dist/
77+
webapp/node_modules/
78+
webapp/.next/
79+
webapp/build/
80+
81+
# Python cache files
82+
__pycache__/
83+
*.pyc
84+
*.pyo
85+
*.pyd
86+
.Python
87+
88+
# Rope project files
89+
.ropeproject/
90+
91+
# SQLx offline query data (contains prepared queries)
92+
# !.sqlx/
93+
94+
# Include the service-specific Dockerfiles in the build
95+
# !Dockerfile.gateway
96+
# !Dockerfile.streaming

.gcloudignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
.env
2+
target/
3+
tests/
4+
scripts/

.github/FUNDING.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# These are supported funding model platforms
2+
3+
github: [jonaylor89]

.github/workflows/codspeed.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
name: CodSpeed
2+
3+
on:
4+
push:
5+
branches:
6+
- "main"
7+
pull_request:
8+
# `workflow_dispatch` allows CodSpeed to trigger backtest
9+
# performance analysis in order to generate initial data.
10+
workflow_dispatch:
11+
12+
jobs:
13+
benchmarks:
14+
name: Run benchmarks
15+
runs-on: ubuntu-latest
16+
steps:
17+
- uses: actions/checkout@v4
18+
19+
- name: Setup rust toolchain, cache and cargo-codspeed binary
20+
uses: moonrepo/setup-rust@v1
21+
with:
22+
channel: stable
23+
cache-target: release
24+
bins: cargo-codspeed
25+
26+
- name: Install FFmpeg (required for audio processing)
27+
run: |
28+
sudo apt-get update
29+
sudo apt-get install -y pkg-config \
30+
libavcodec-dev libavdevice-dev libavfilter-dev \
31+
libavformat-dev libswresample-dev libavutil-dev
32+
33+
- name: Build the benchmark target(s)
34+
run: cargo codspeed build
35+
36+
- name: Run the benchmarks
37+
uses: CodSpeedHQ/action@v3
38+
with:
39+
run: cargo codspeed run
40+
token: ${{ secrets.CODSPEED_TOKEN }}

.github/workflows/playwright.yml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Playwright Tests
2+
on:
3+
push:
4+
branches: [main, master]
5+
pull_request:
6+
branches: [main, master]
7+
8+
jobs:
9+
test:
10+
timeout-minutes: 30
11+
runs-on: ubuntu-latest
12+
defaults:
13+
run:
14+
working-directory: mcp-server
15+
env:
16+
AUTH_SECRET: ${{ secrets.AUTH_SECRET }}
17+
POSTGRES_URL: ${{ secrets.POSTGRES_URL }}
18+
BLOB_READ_WRITE_TOKEN: ${{ secrets.BLOB_READ_WRITE_TOKEN }}
19+
REDIS_URL: ${{ secrets.REDIS_URL }}
20+
21+
steps:
22+
- uses: actions/checkout@v4
23+
with:
24+
fetch-depth: 1
25+
26+
- uses: actions/setup-node@v4
27+
with:
28+
node-version: lts/*
29+
cache: npm
30+
cache-dependency-path: mcp-server/package-lock.json
31+
32+
- name: Install dependencies
33+
run: npm ci
34+
35+
- name: Run tests
36+
run: npm test
37+
38+
- uses: actions/upload-artifact@v4
39+
if: always() && !cancelled()
40+
with:
41+
name: playwright-report
42+
path: playwright-report/
43+
retention-days: 7

.github/workflows/rust.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: Rust
2+
3+
on:
4+
push:
5+
branches: ["main"]
6+
pull_request:
7+
branches: ["main"]
8+
9+
env:
10+
CARGO_TERM_COLOR: always
11+
12+
jobs:
13+
build:
14+
runs-on: ubuntu-latest
15+
16+
steps:
17+
- uses: actions/checkout@v4
18+
- name: Install FFmpeg development libraries
19+
run: |
20+
sudo apt-get update
21+
sudo apt-get install -y pkg-config \
22+
libavcodec-dev libavdevice-dev libavfilter-dev \
23+
libavformat-dev libswresample-dev libavutil-dev
24+
- name: Build
25+
run: cargo build --verbose
26+
- name: Run tests
27+
env:
28+
TEST_LOG: debug
29+
RUST_BACKTRACE: 1
30+
run: cargo test --workspace --verbose
31+
- name: Lint
32+
run: cargo clippy
33+
- name: Format
34+
run: cargo fmt --check

.gitignore

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
.env
2+
3+
# Generated by Cargo
4+
# will have compiled files and executables
5+
debug/
6+
target/
7+
8+
# These are backup files generated by rustfmt
9+
**/*.rs.bk
10+
11+
# MSVC Windows builds of rustc generate these, which store debugging information
12+
*.pdb
13+
14+
# Generated by cargo mutants
15+
# Contains mutation testing data
16+
**/mutants.out*/
17+
18+
*.mp3
19+
20+
# Runtime
21+
cache/
22+
!src/cache/
23+
!src/cache/**
24+
req_cache/
25+
testdata/
26+
server.log

AGENTS.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Streaming Engine Development Guide
2+
3+
## What This Project Is
4+
5+
Streaming Engine is an **audio processing server** — it processes audio on the fly via URL parameters (like Thumbor/Imagor for images, but for audio). It is **not** an AI product. The MCP server integration exists to let LLMs use the audio processing API as a tool, but the core project is a deterministic audio processing pipeline built on FFmpeg.
6+
7+
## Build & Test Commands
8+
- `just` — List available recipes
9+
- `just dev` — Run with auto-reload
10+
- `just build` — Build the project
11+
- `just test` — Run all tests
12+
- `just test-name <name>` — Run a specific test
13+
- `just bench` — Run benchmarks
14+
- `just lint` — Run linter (clippy)
15+
- `just fmt` — Format code
16+
- `just check` — Full check: format, lint, build, test
17+
18+
## Project Structure
19+
- `src/` — Core streaming engine (Rust)
20+
- `crates/ffmpeg` — Safe FFmpeg wrapper
21+
- `crates/ffmpeg-sys` — Raw FFI bindings to FFmpeg
22+
- `mcp-server/` — MCP integration for LLM tool use (Node.js)
23+
- `config/` — YAML configuration files
24+
- `benches/` — Performance benchmarks
25+
- `scripts/` — Deployment and CI scripts
26+
27+
## Code Style
28+
- **Imports**: Group std, external crates, then local modules
29+
- **Error Handling**: Use `color_eyre::Result`, `thiserror` for custom errors
30+
- **Logging**: Use `tracing` with structured logging and `#[instrument]` for functions
31+
- **Types**: Prefer explicit types, use `Uuid` for IDs, `DateTime<Utc>` for timestamps
32+
- **Naming**: snake_case for functions/variables, PascalCase for types, modules in snake_case
33+
- **Async**: Use `tokio::main` and async/await throughout
34+
- **API**: Use Axum with `State` extraction and `Json` responses

CLAUDE.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Streaming Engine Development Guide
2+
3+
## What This Project Is
4+
5+
Streaming Engine is an **audio processing server** — it processes audio on the fly via URL parameters (like Thumbor/Imagor for images, but for audio). It is **not** an AI product. The MCP server integration exists to let LLMs use the audio processing API as a tool, but the core project is a deterministic audio processing pipeline built on FFmpeg.
6+
7+
## Build & Test Commands
8+
- `just` — List available recipes
9+
- `just dev` — Run with auto-reload
10+
- `just build` — Build the project
11+
- `just test` — Run all tests
12+
- `just test-name <name>` — Run a specific test
13+
- `just bench` — Run benchmarks
14+
- `just lint` — Run linter (clippy)
15+
- `just fmt` — Format code
16+
- `just check` — Full check: format, lint, build, test
17+
18+
## Project Structure
19+
- `src/` — Core streaming engine (Rust)
20+
- `crates/ffmpeg` — Safe FFmpeg wrapper
21+
- `crates/ffmpeg-sys` — Raw FFI bindings to FFmpeg
22+
- `mcp-server/` — MCP integration for LLM tool use (Node.js)
23+
- `config/` — YAML configuration files
24+
- `benches/` — Performance benchmarks
25+
- `scripts/` — Deployment and CI scripts
26+
27+
## Code Style
28+
- **Imports**: Group std, external crates, then local modules
29+
- **Error Handling**: Use `color_eyre::Result`, `thiserror` for custom errors
30+
- **Logging**: Use `tracing` with structured logging and `#[instrument]` for functions
31+
- **Types**: Prefer explicit types, use `Uuid` for IDs, `DateTime<Utc>` for timestamps
32+
- **Naming**: snake_case for functions/variables, PascalCase for types, modules in snake_case
33+
- **Async**: Use `tokio::main` and async/await throughout
34+
- **API**: Use Axum with `State` extraction and `Json` responses

0 commit comments

Comments
 (0)