PatrickFanella d254951ece
Main verification / verify (push) Successful in 12m48s
Release candidate artifacts / verify (push) Successful in 8m45s
Release candidate artifacts / cross-browser (chromium, chromium-mobile, Mobile Chrome) (push) Successful in 2m18s
Release candidate artifacts / cross-browser (firefox, firefox-desktop, firefox) (push) Successful in 2m27s
Release candidate artifacts / cross-browser (webkit, webkit-desktop, webkit) (push) Successful in 3m15s
Release candidate artifacts / cross-browser (webkit, webkit-mobile, Mobile Safari) (push) Successful in 3m33s
Release candidate artifacts / cross-browser-gate (push) Successful in 28s
Release candidate artifacts / images (Dockerfile.api, git.subcult.tv/subculture-collective/hasanara-api, api) (push) Successful in 3m44s
Release candidate artifacts / images (Dockerfile.postgres-walg, git.subcult.tv/subculture-collective/hasanara-postgres-walg, postgres-walg) (push) Successful in 6m17s
Release candidate artifacts / images (frontend/Dockerfile, git.subcult.tv/subculture-collective/hasanara-frontend, frontend) (push) Successful in 2m35s
Release candidate artifacts / images (Dockerfile.cuda, git.subcult.tv/subculture-collective/hasanara-ml-cuda, ml-cuda) (push) Successful in 54m25s
Release candidate artifacts / images (Dockerfile.ingest.cuda, git.subcult.tv/subculture-collective/hasanara-ingest-cuda, ingest-cuda) (push) Successful in 18m1s
Release candidate artifacts / release (push) Successful in 1m1s
Merge pull request 'feat(deploy): run production from a client deployment directory' (#34) from t3code/client-deployment-boundary into main
Reviewed-on: #34
2026-09-24 15:17:37 -05:00
2025-11-01 23:36:55 -05:00
2025-11-01 23:36:55 -05:00
2025-10-25 21:13:21 -05:00
2026-08-18 21:15:02 -05:00
2025-10-20 13:02:25 -05:00
2025-11-01 23:36:55 -05:00
2025-11-01 23:36:55 -05:00

Transcript Archive

Transcript Archive is a configurable, citation-first application for long-form recordings. It ingests videos, stores timestamped transcripts, supports full-text search and archive browsing, and lets people save and share passages with their source context.

This repository contains the shared application core. Each client deployment supplies a versioned public profile and assets while running the same application images. Branding changes do not require a source fork or frontend rebuild.

Application stack

  • React 19 and Vite frontend
  • FastAPI application and worker services
  • PostgreSQL as the source of truth
  • Redis for caches and coordination
  • Optional OpenSearch acceleration with PostgreSQL fallback
  • Docker Compose, Kubernetes, Helm, Ansible and Terraform deployment assets

The core includes durable ingestion jobs, scoped API keys, OAuth accounts, saved searches and moments, pseudonymous analytics, archive intelligence, passage sharing, and an optional creator community. Client-facing features remain controlled by server settings; the public branding profile does not grant entitlements or contain secrets.

Local development

Supported versions are Python 3.11, Node.js 20, and Docker with Compose.

python3.11 -m venv .venv
.venv/bin/pip install -r requirements-dev.txt
npm --prefix frontend ci
npm --prefix e2e ci
cp .env.example .env
ALLOW_SESSION_TOKEN_CONTRACT_MIGRATION=true docker compose up --build

The frontend defaults to http://localhost:5173; the API defaults to http://localhost:8000, with interactive API documentation at /docs. The migration opt-in above is for a fresh controlled bootstrap. Follow the migration runbook for an existing deployment.

The main source areas are:

Path Purpose
app/ FastAPI routes, domain services, persistence and schemas
worker/ ingestion, transcription, formatting and background processing
frontend/ React application and component tests
e2e/ seeded Playwright journeys
alembic/ ordered database migrations
config/branding/ profile schema and safe example client configuration
clients/ client release-profile validation and planning code
scripts/ maintained verification, migration and operator utilities

Branding and client updates

Start with the Northstar example profile, validate its fields against the profile schema, and supply it through SITE_PROFILE_PATH. Store client secrets, infrastructure and release history outside the public profile.

The client branding guide describes asset mounts, theme tokens, profile precedence, and the fleet update planner. The planner combines a verified digest-pinned release manifest with a client inventory and produces reviewable Compose overrides. It never edits client profiles, databases or secrets and does not perform a deployment.

Verification

Run focused tests while developing, then run the canonical gate before delivery:

TEST_POSTGRES_PORT=55433 mise exec node@20 -- \
  env PYTHON_BIN="$PWD/.venv/bin/python" make verify

The gate starts disposable PostgreSQL, Redis and OpenSearch services; applies every migration; checks Python and TypeScript quality; runs backend and frontend coverage; builds the production frontend; validates generated contracts and documentation; audits dependencies; and exercises the seeded Chromium journey. See the testing guide for focused commands, suite ownership and coverage expectations.

Documentation

/api is v1-stable: changes are additive, deprecations remain for at least two releases, and breaking changes require /api/v2.

Apache-2.0 license · third-party notices

S
Description
Create searchable, exportable transcripts from YouTube videos or channels. The stack includes a FastAPI backend, PostgreSQL queue/store, a GPU-accelerated Whisper worker (ROCm or CUDA), optional pyannote diarization, and a Vite React frontend with search, deep links, and export tools.
Readme Apache-2.0
34 MiB
Languages
Python 67.7%
TypeScript 27.7%
Shell 2.3%
CSS 0.9%
PLpgSQL 0.6%
Other 0.7%