[{"data":1,"prerenderedAt":122},["ShallowReactive",2],{"page-\u002Fwork\u002Fquestlist":3},{"id":4,"title":5,"body":6,"coverImage":96,"description":12,"extension":97,"focusPoints":98,"images":102,"meta":105,"navigation":106,"path":107,"roleSummary":108,"seo":109,"stack":110,"stem":118,"summary":119,"year":120,"__hash__":121},"work\u002Fwork\u002Fquestlist.md","Questlist",{"type":7,"value":8,"toc":89},"minimark",[9,13,16,21,24,53,57,71,75],[10,11,12],"p",{},"Starting a video game discovery and review platform without tying it to an existing digital storefront comes with a unique scaling challenge. Infrastructure costs must remain low during early launch, but the architecture cannot compromise on future growth. The quickest wat to lose a newly acquired user base is performance degradation right as adoption spikes.",[10,14,15],{},"The goal was to build a responsive, high-throughput solution that operates within early budget constraints while growing alongside expanding user traffic, feature demands, and catalog growth.",[17,18,20],"h2",{"id":19},"architectural-strategy","Architectural Strategy",[10,22,23],{},"To keep the platform responsive and scalable in individual segments, we decoupled the application into distinct bounded contexts using Domain-Driven Design principles:",[25,26,27,35,41,47],"ul",{},[28,29,30,34],"li",{},[31,32,33],"strong",{},"Games Context:"," Developed a service that manages game metadata, developers, and publishers. Built for read-heavy access with slow, steady write cycles.",[28,36,37,40],{},[31,38,39],{},"Collections Context:"," Built a service that handles the creation, sorting, and curation of user game lists asynchronously, ensuring heavy user activity never blocks core catalog operations.",[28,42,43,46],{},[31,44,45],{},"Feed Context:"," Designed to generate dynamic home feeds using tailored read models, completely eliminating expensive live joins across subsystems.",[28,48,49,52],{},[31,50,51],{},"Unified GraphQL Edge Layer:"," Placed a unified GraphQL layer over the underlying bounded contexts, allowing the Nuxt frontend to query stitched data across Games, Collections, and Feeds in a single, tailored request without over-fetching.",[17,54,56],{"id":55},"engineering-highlights","Engineering Highlights",[25,58,59,65],{},[28,60,61,64],{},[31,62,63],{},"Containerized Service Isolation:"," Encapsulated each bounded context and backing service (RabbitMQ, ElasticSearch, PostgreSQL) into isolated containers, allowing resource-heavy components like search indexing to scale independently while keeping baseline infrastructure costs low.",[28,66,67,70],{},[31,68,69],{},"Sub-50ms Search:"," Implemented an event-driven CQRS pipeline using RabbitMQ and ElasticSearch to sync catalog mutations into a dedicated search index, maintaining sub-50ms query responses.",[17,72,74],{"id":73},"outcomes-technical-impact","Outcomes & Technical Impact",[25,76,77,83],{},[28,78,79,82],{},[31,80,81],{},"Ultra-Low Latency:"," Achieved sub-50ms average search latency for game queries across 300,000+ titles.",[28,84,85,88],{},[31,86,87],{},"Resilient Ingestion Pipeline:"," Built an automated ingestion worker capable of processing 20,000+ games per year without disrupting user traffic.",{"title":90,"searchDepth":91,"depth":91,"links":92},"",2,[93,94,95],{"id":19,"depth":91,"text":20},{"id":55,"depth":91,"text":56},{"id":73,"depth":91,"text":74},"\u002Fwork\u002Fquestlist\u002Fquestlist_logo.png","md",[99,100,101],"Domain-Driven Design","Command Query Responsibility Segregation","High-Throughput Catalog Search",[103,104],"\u002Fwork\u002Fquestlist\u002Fquestlist_mobile_render.png","\u002Fwork\u002Fquestlist\u002Fquestlist_ratings_render.png",{},true,"\u002Fwork\u002Fquestlist","Consultation, Platform Architecture, and Development",{"title":5,"description":12},[111,112,113,114,115,116,117],"Nuxt","Vue","GraphQL",".NET","PostgreSQL","RabbitMQ","Elasticsearch","work\u002Fquestlist","Scalable, High-Performance Game Discovery & Reviews",2026,"ZA_q7v-gALenkZw_Ndm5sT2IBAlKFe8KzUlaBGer-bk",1789751506326]