## Summary I added URL normalization to the backend in `vibe-kanban/crates/remote/src/routes/review.rs`: 1. **Added `normalize_github_url` helper function** (lines 129-137) - Checks if the URL already has `http://` or `https://` prefix, and if not, prepends `https://` 2. **Applied normalization in `init_review_upload`** (lines 217-218) - The URL is now normalized before being stored in the database This ensures that all GitHub PR URLs stored in the database will have the correct `https://` protocol prefix, preventing the browser from treating them as relative paths when used in `<a href>` attributes.
Remote service
The remote crate contains the implementation of the Vibe Kanban hosted API.
Prerequisites
Create a .env.remote file in the repository root:
VIBEKANBAN_REMOTE_JWT_SECRET=your_base64_encoded_secret
SERVER_PUBLIC_BASE_URL=http://localhost:3000
GITHUB_OAUTH_CLIENT_ID=your_github_web_app_client_id
GITHUB_OAUTH_CLIENT_SECRET=your_github_web_app_client_secret
GOOGLE_OAUTH_CLIENT_ID=your_google_web_app_client_id
GOOGLE_OAUTH_CLIENT_SECRET=your_google_web_app_client_secret
Generate VIBEKANBAN_REMOTE_JWT_SECRET once using openssl rand -base64 48 and copy the value into .env.remote.
At least one OAuth provider (GitHub or Google) must be configured.
Run the stack locally
docker compose --env-file .env.remote -f docker-compose.yml up --build
Exposes the API on http://localhost:8081. The Postgres service is available at postgres://remote:remote@localhost:5432/remote.
Run Vibe Kanban
export VK_SHARED_API_BASE=http://localhost:8081
pnpm run dev