Personal Project
Tubester
Overview
Tubester is a full-stack SaaS for YouTube creators that combines AI-assisted video optimisation with automated comment management. It integrates directly with YouTube to synchronise channel data, improve video metadata, generate contextual comment replies, and manage creator workflows from a single application.
My Role
- Designed and built the product end to end, including the .NET backend, React and TypeScript frontend, PostgreSQL data model, background workers, external integrations, and deployment infrastructure.
- Implemented Google OAuth and YouTube API integration, AI-powered workflows, retrieval-augmented generation, asynchronous background processing, CI/CD, and production observability.
Architecture & Technology
- ASP.NET Core backend with a React and TypeScript client
- PostgreSQL persistence with EF Core and pgvector for vector similarity search
- Two-stage Google OAuth flow using progressive consent: read-only YouTube access during initial onboarding, with write permissions requested only when write-enabled features are used
- Hangfire background jobs for channel synchronisation, comment scanning, AI processing, and other long-running workloads
- AI-assisted video metadata generation and contextual comment replies using RAG over creator-specific content
- Docker-based services deployed to Kubernetes with automated CI/CD through GitHub Actions
- Structured logging and production observability using Serilog, Prometheus, Loki, and Grafana
Engineering Challenges
- Integrating OAuth-protected YouTube operations while correctly handling user permissions, API scopes, token-dependent workflows, and external API constraints.
- Designing long-running AI and YouTube operations as resilient background jobs instead of blocking interactive HTTP requests.
- Building a RAG pipeline that retrieves relevant creator-specific context from PostgreSQL and pgvector to produce more useful AI-generated replies.
- Operating a multi-service application in Kubernetes with sufficient logging, metrics, and observability to diagnose failures outside the local development environment.
Decisions & Trade-offs
- YouTube permissions use a two-stage OAuth flow: users initially grant read-only access, while write access is requested separately only when they use features that modify YouTube data. This reduces the initial permission footprint and follows the principle of least privilege.
- Long-running and failure-prone YouTube and AI operations are processed asynchronously through background jobs, keeping HTTP endpoints responsive and allowing work to be retried independently.
- PostgreSQL with pgvector is used for both relational application data and vector search, avoiding the operational complexity of introducing a separate vector database.
- Structured logs, metrics, and dashboards are treated as part of the application architecture rather than added only for debugging.
Results & Impact
- Built and deployed a functional end-to-end SaaS that synchronises real YouTube channel data and supports AI-assisted metadata optimisation and comment reply workflows.
- Created a production-style architecture covering authentication, third-party APIs, asynchronous processing, vector search, CI/CD, Kubernetes deployment, and observability.