Programmer Tech
Veya

Product and engineering

How Veya is built, and what it can do.

Discover Veya's current features and the architecture that makes them work.

The Veya preview is available at watchveya.com.

What Veya does today

Veya is in preview. It brings YouTube and Twitch into one product and adds its own discovery tools on top.

  • YouTube and Twitch discoveryContent from both platforms, surfaced together in one product.
  • Live streams and video browsingBrowse what is live now alongside published videos.
  • RecommendationsRanked by Veya’s own recommendation system.
  • SearchSearch across both platforms from one place.
  • Connected accounts and user controlsLink platform accounts and manage how the product behaves for you.
  • Integrated Twitch chatSign in to use Veya chat; connect Twitch chat to send messages. Native Twitch chat remains available as a fallback.

Recent updates to Veya

Live discovery and chat features available in the preview.

  1. Recently improved

    Fresher live discovery

    Improved Twitch stream tracking and recommendation updates help keep live content current.

  2. Available now

    Emotes and live conversation

    Twitch global and 7TV emote autocomplete, emote previews and chat badges are part of Veya chat, alongside moderation updates and reconnect handling.

  3. Available now

    Profiles in context

    Open a chatter's profile card to see profile details, badges and their messages from the current chat session. This history is limited to messages retained in that session.

Architecture overview

Veya is a web client in front of an ASP.NET Core API, with SQL Server as the application’s system of record. Work that does not belong in a request, such as ingesting and synchronizing platform content, runs in asynchronous .NET workers. Recommendations come from a ranking layer the application owns, built on Gorse as its candidate engine.

The core loop

  1. Ingest and synchronize content
  2. Normalize into one catalog
  3. Rank candidates
  4. Collect feedback

After feedback, the loop starts again: each pass informs the next.

How the pieces connect

A request

What happens when someone uses Veya. Each arrow points from a caller to what it calls.

API requestsforwardsreadscallscandidatesWeb clientNext.js · ReactCaddyHTTPS reverse proxyAPIASP.NET Core · .NET 10SQL ServerApplication dataRecommendation layerApplication rankingGorseCandidate engineRedisCacheMySQLPersistence
  1. The web client sends API requests over HTTPS to Caddy.
  2. Caddy forwards those requests to the API.
  3. The API reads application data from SQL Server.
  4. The API calls the application’s recommendation layer.
  5. The recommendation layer gets candidates from Gorse.
  6. The recommendation layer uses Redis as its cache.
  7. Gorse uses Redis as its cache.
  8. Gorse uses MySQL for persistence.

Background updates

How platform content gets in, outside any request. Each arrow shows the direction data moves.

contentcontentupdatesupdatesYouTubePlatform contentTwitchPlatform content.NET workersIngest · normalize · synchronizeSQL ServerCatalogGorseRecommendation data
  1. YouTube content flows into the .NET workers.
  2. Twitch content flows into the .NET workers.
  3. The workers update the catalog in SQL Server.
  4. The workers update recommendation data in Gorse.

Simplified. Backend services run with Docker Compose, and Caddy terminates HTTPS in front of them.

Stack by layer

Web client
Next.js 16 · React 19 · TypeScript · Tailwind CSSThe interface people browse, search, and watch through.
API
ASP.NET Core · .NET 10 · Entity Framework Core 10Serves the client and owns application logic.
Application data
SQL ServerThe application’s system of record.
Background workers
.NETIngestion, normalization, synchronization, and feedback processing, run asynchronously alongside the YouTube and Twitch integrations.
Recommendations
Application ranking layer · Gorse · MySQL · RedisGorse supplies candidates, with MySQL for its persistence and Redis for caching, including a recommendation cache. The application layer does the final ranking.
Delivery
Docker Compose · CaddyBackend services run as a Docker Compose stack, with Caddy as the HTTPS reverse proxy.

Try the preview, or write with a question.

Explore Veya at watchveya.com.