← All projects

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.