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.
Recently improved
Fresher live discovery
Improved Twitch stream tracking and recommendation updates help keep live content current.
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.
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
- Ingest and synchronize content
- Normalize into one catalog
- Rank candidates
- 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.
- The web client sends API requests over HTTPS to Caddy.
- Caddy forwards those requests to the API.
- The API reads application data from SQL Server.
- The API calls the application’s recommendation layer.
- The recommendation layer gets candidates from Gorse.
- The recommendation layer uses Redis as its cache.
- Gorse uses Redis as its cache.
- Gorse uses MySQL for persistence.
Background updates
How platform content gets in, outside any request. Each arrow shows the direction data moves.
- YouTube content flows into the .NET workers.
- Twitch content flows into the .NET workers.
- The workers update the catalog in SQL Server.
- 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.