{"users":[{"id":1,"username":"stephan","name":null,"avatar_template":"/user_avatar/rubyrailsmodularity.com/stephan/{size}/8_2.png","admin":true,"moderator":true,"trust_level":2},{"id":94,"username":"Damian","name":"Damian C. Rossney","avatar_template":"/user_avatar/rubyrailsmodularity.com/damian/{size}/86_2.png","trust_level":1},{"id":51,"username":"lewisreid","name":"Lewis Reid","avatar_template":"/user_avatar/rubyrailsmodularity.com/lewisreid/{size}/46_2.png","trust_level":2},{"id":18,"username":"gpassero","name":"Gary Passero","avatar_template":"/user_avatar/rubyrailsmodularity.com/gpassero/{size}/21_2.png","trust_level":1},{"id":23,"username":"sarahsehr","name":null,"avatar_template":"/user_avatar/rubyrailsmodularity.com/sarahsehr/{size}/24_2.png","trust_level":1},{"id":7,"username":"AlexEvanczuk","name":"Alex Evanczuk","avatar_template":"/user_avatar/rubyrailsmodularity.com/alexevanczuk/{size}/12_2.png","trust_level":1},{"id":29,"username":"oboxodo","name":"Diego Algorta","avatar_template":"/user_avatar/rubyrailsmodularity.com/oboxodo/{size}/92_2.png","trust_level":2},{"id":-1,"username":"system","name":"system","avatar_template":"/uploads/default/original/1X/6df4ce5268f1ea41b2a57cee4ec10b2f76a64d48.webp","admin":true,"moderator":true,"trust_level":4},{"id":46,"username":"pinzonjulian","name":"Julián Pinzón Eslava","avatar_template":"/user_avatar/rubyrailsmodularity.com/pinzonjulian/{size}/44_2.png","trust_level":0},{"id":12,"username":"jamie_ca","name":"Jamie M","avatar_template":"/letter_avatar_proxy/v4/letter/j/9d8465/{size}.png","trust_level":1},{"id":16,"username":"franzliedke","name":"Franz Liedke","avatar_template":"/user_avatar/rubyrailsmodularity.com/franzliedke/{size}/19_2.png","trust_level":1},{"id":11,"username":"n3bulous","name":"Kevin McFadden","avatar_template":"/user_avatar/rubyrailsmodularity.com/n3bulous/{size}/15_2.png","trust_level":1},{"id":19,"username":"mclark","name":"Matt","avatar_template":"/user_avatar/rubyrailsmodularity.com/mclark/{size}/22_2.png","trust_level":1},{"id":35,"username":"iMacTia","name":"Mattia Giuffrida","avatar_template":"/user_avatar/rubyrailsmodularity.com/imactia/{size}/35_2.png","trust_level":1}],"primary_groups":[],"flair_groups":[],"topic_list":{"can_create_topic":false,"more_topics_url":"/c/system-design/10?page=1","per_page":30,"top_tags":[],"topics":[{"fancy_title":"About the System Design category","id":18,"title":"About the System Design category","slug":"about-the-system-design-category","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2024-07-21T11:50:35.217Z","last_posted_at":"2024-07-21T11:50:35.236Z","bumped":true,"bumped_at":"2024-07-21T16:41:34.174Z","archetype":"regular","unseen":false,"pinned":true,"unpinned":null,"excerpt":"General software and system design questions go here!","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":31,"like_count":0,"has_summary":false,"last_poster_username":"stephan","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Module Design Conventions? or Maybe Just a Conversation :slight_smile:","id":1078,"title":"Module Design Conventions? or Maybe Just a Conversation :)","slug":"module-design-conventions-or-maybe-just-a-conversation","posts_count":14,"reply_count":12,"highest_post_number":14,"image_url":null,"created_at":"2025-09-17T03:20:49.370Z","last_posted_at":"2026-03-16T22:54:07.369Z","bumped":true,"bumped_at":"2026-03-16T22:54:07.369Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":278,"like_count":3,"has_summary":false,"last_poster_username":"Damian","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":94,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":51,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Designing for a Notifications capability","id":1063,"title":"Designing for a Notifications capability","slug":"designing-for-a-notifications-capability","posts_count":3,"reply_count":0,"highest_post_number":3,"image_url":null,"created_at":"2025-01-02T17:11:32.155Z","last_posted_at":"2025-01-02T18:02:15.287Z","bumped":true,"bumped_at":"2025-01-02T18:02:15.287Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":99,"like_count":0,"has_summary":false,"last_poster_username":"gpassero","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":18,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"How to handle &ldquo;Cross Cutting&rdquo; Packages","id":1052,"title":"How to handle \"Cross Cutting\" Packages","slug":"how-to-handle-cross-cutting-packages","posts_count":3,"reply_count":0,"highest_post_number":3,"image_url":null,"created_at":"2024-11-01T03:53:36.075Z","last_posted_at":"2024-11-15T06:55:03.084Z","bumped":true,"bumped_at":"2024-11-15T06:55:03.084Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":122,"like_count":2,"has_summary":false,"last_poster_username":"lewisreid","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":51,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Pack naming standards","id":1050,"title":"Pack naming standards","slug":"pack-naming-standards","posts_count":5,"reply_count":2,"highest_post_number":5,"image_url":null,"created_at":"2024-10-29T19:33:25.001Z","last_posted_at":"2024-10-30T17:34:58.481Z","bumped":true,"bumped_at":"2024-10-30T17:34:58.481Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":124,"like_count":1,"has_summary":false,"last_poster_username":"stephan","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":23,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":7,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Tips for Dealing with the `User` Class in Modularizing a Monolith","id":819,"title":"Tips for Dealing with the `User` Class in Modularizing a Monolith","slug":"tips-for-dealing-with-the-user-class-in-modularizing-a-monolith","posts_count":16,"reply_count":0,"highest_post_number":16,"image_url":null,"created_at":"2023-08-10T19:18:44.125Z","last_posted_at":"2024-09-10T03:37:58.618Z","bumped":true,"bumped_at":"2024-09-10T03:37:58.618Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":217,"like_count":0,"has_summary":false,"last_poster_username":"lewisreid","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":29,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":51,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Practical advice after Shopify’s Packerk Retrospective","id":991,"title":"Practical advice after Shopify’s Packerk Retrospective","slug":"practical-advice-after-shopify-s-packerk-retrospective","posts_count":3,"reply_count":0,"highest_post_number":3,"image_url":null,"created_at":"2024-09-05T22:26:48.833Z","last_posted_at":"2024-09-10T02:59:56.646Z","bumped":true,"bumped_at":"2024-09-10T02:59:56.646Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":285,"like_count":3,"has_summary":false,"last_poster_username":"lewisreid","category_id":10,"op_like_count":2,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":46,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":1,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":51,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Pattern for Breaking Circular Dependencies in Rails Models - Feedback and Suggestions Welcome!","id":769,"title":"Pattern for Breaking Circular Dependencies in Rails Models - Feedback and Suggestions Welcome!","slug":"pattern-for-breaking-circular-dependencies-in-rails-models-feedback-and-suggestions-welcome","posts_count":39,"reply_count":0,"highest_post_number":39,"image_url":null,"created_at":"2024-02-24T02:26:51.007Z","last_posted_at":"2024-04-18T16:11:58.339Z","bumped":true,"bumped_at":"2024-04-18T16:11:58.339Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":622,"like_count":0,"has_summary":false,"last_poster_username":"oboxodo","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":29,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":23,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":12,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Separating Web-Agnostic Code: Advice Needed on Evolving Packs and Access to External Resources","id":959,"title":"Separating Web-Agnostic Code: Advice Needed on Evolving Packs and Access to External Resources","slug":"separating-web-agnostic-code-advice-needed-on-evolving-packs-and-access-to-external-resources","posts_count":6,"reply_count":0,"highest_post_number":6,"image_url":null,"created_at":"2024-02-20T14:33:25.735Z","last_posted_at":"2024-04-05T08:15:36.162Z","bumped":true,"bumped_at":"2024-04-05T08:15:36.162Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":80,"like_count":0,"has_summary":false,"last_poster_username":"system","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":29,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Design Question: How to Keep Domain Modules Free from Implementation Concepts in Modularization for DDD?","id":758,"title":"Design Question: How to Keep Domain Modules Free from Implementation Concepts in Modularization for DDD?","slug":"design-question-how-to-keep-domain-modules-free-from-implementation-concepts-in-modularization-for-ddd","posts_count":23,"reply_count":0,"highest_post_number":23,"image_url":null,"created_at":"2024-04-03T14:13:01.093Z","last_posted_at":"2024-04-03T21:28:08.609Z","bumped":true,"bumped_at":"2024-04-03T21:28:08.609Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":240,"like_count":0,"has_summary":false,"last_poster_username":"gpassero","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":18,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":16,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":11,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Exploring modularization in Laravel/PHP and its potential with an event bus in Rails","id":765,"title":"Exploring modularization in Laravel/PHP and its potential with an event bus in Rails","slug":"exploring-modularization-in-laravel-php-and-its-potential-with-an-event-bus-in-rails","posts_count":14,"reply_count":0,"highest_post_number":14,"image_url":null,"created_at":"2024-03-01T17:41:57.482Z","last_posted_at":"2024-03-04T14:16:15.694Z","bumped":true,"bumped_at":"2024-03-04T14:16:15.694Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":75,"like_count":0,"has_summary":false,"last_poster_username":"system","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":16,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Using a City Analogy to Understand Modularity in Codebases - Blog Post Discussion","id":771,"title":"Using a City Analogy to Understand Modularity in Codebases - Blog Post Discussion","slug":"using-a-city-analogy-to-understand-modularity-in-codebases-blog-post-discussion","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2024-02-19T17:18:05.112Z","last_posted_at":"2024-02-19T23:08:52.387Z","bumped":true,"bumped_at":"2024-02-19T23:08:52.387Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":36,"like_count":0,"has_summary":false,"last_poster_username":"oboxodo","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":29,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Transitioning a Large Rails Codebase into Packages: Seeking Tips and Advice from Experienced Developers","id":775,"title":"Transitioning a Large Rails Codebase into Packages: Seeking Tips and Advice from Experienced Developers","slug":"transitioning-a-large-rails-codebase-into-packages-seeking-tips-and-advice-from-experienced-developers","posts_count":135,"reply_count":0,"highest_post_number":135,"image_url":null,"created_at":"2023-11-23T00:27:10.906Z","last_posted_at":"2023-11-29T00:25:34.569Z","bumped":true,"bumped_at":"2023-11-29T00:25:34.569Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":523,"like_count":0,"has_summary":false,"last_poster_username":"system","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Maximizing Team Efficiency: Utilizing Periodic Check-ins and Data Analysis for Modularity Tune-Ups","id":777,"title":"Maximizing Team Efficiency: Utilizing Periodic Check-ins and Data Analysis for Modularity Tune-Ups","slug":"maximizing-team-efficiency-utilizing-periodic-check-ins-and-data-analysis-for-modularity-tune-ups","posts_count":7,"reply_count":0,"highest_post_number":7,"image_url":null,"created_at":"2023-11-21T19:44:57.444Z","last_posted_at":"2023-11-21T20:38:23.818Z","bumped":true,"bumped_at":"2023-11-21T20:38:23.818Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":59,"like_count":0,"has_summary":false,"last_poster_username":"system","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"How to handle two-way dependencies in modularized codebase using `belongs_to` / `has_many` and ActiveSupport hooks","id":754,"title":"How to handle two-way dependencies in modularized codebase using `belongs_to` / `has_many` and ActiveSupport hooks","slug":"how-to-handle-two-way-dependencies-in-modularized-codebase-using-belongs-to-has-many-and-activesupport-hooks","posts_count":77,"reply_count":0,"highest_post_number":77,"image_url":null,"created_at":"2023-09-18T12:41:06.328Z","last_posted_at":"2023-10-18T04:51:53.909Z","bumped":true,"bumped_at":"2023-10-18T04:51:53.909Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":843,"like_count":0,"has_summary":false,"last_poster_username":"system","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":29,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Seeking Advice on Implementing a &ldquo;Package Level Guide&rdquo; to Categorize and Track Progress","id":799,"title":"Seeking Advice on Implementing a \"Package Level Guide\" to Categorize and Track Progress","slug":"seeking-advice-on-implementing-a-package-level-guide-to-categorize-and-track-progress","posts_count":113,"reply_count":0,"highest_post_number":113,"image_url":null,"created_at":"2023-10-11T17:24:26.166Z","last_posted_at":"2023-10-15T14:31:45.266Z","bumped":true,"bumped_at":"2023-10-15T14:31:45.266Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":824,"like_count":0,"has_summary":false,"last_poster_username":"system","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":16,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":29,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Modularizing: Creating Tech-Debt Packs for Architectural Layers - Good or Bad Idea?","id":811,"title":"Modularizing: Creating Tech-Debt Packs for Architectural Layers - Good or Bad Idea?","slug":"modularizing-creating-tech-debt-packs-for-architectural-layers-good-or-bad-idea","posts_count":4,"reply_count":0,"highest_post_number":4,"image_url":null,"created_at":"2023-09-01T18:28:09.176Z","last_posted_at":"2023-09-01T19:07:52.608Z","bumped":true,"bumped_at":"2023-09-01T19:07:52.608Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":58,"like_count":0,"has_summary":false,"last_poster_username":"oboxodo","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":29,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Feedback on Modular Monoliths and Public Interface Communication","id":835,"title":"Feedback on Modular Monoliths and Public Interface Communication","slug":"feedback-on-modular-monoliths-and-public-interface-communication","posts_count":8,"reply_count":0,"highest_post_number":8,"image_url":null,"created_at":"2023-06-30T13:00:33.512Z","last_posted_at":"2023-07-24T10:39:05.187Z","bumped":true,"bumped_at":"2023-07-24T10:39:05.187Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":61,"like_count":0,"has_summary":false,"last_poster_username":"system","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Best practices for managing factories in a monorepo using `packwerk` / `packs-rails` for Rails engines","id":750,"title":"Best practices for managing factories in a monorepo using `packwerk` / `packs-rails` for Rails engines","slug":"best-practices-for-managing-factories-in-a-monorepo-using-packwerk-packs-rails-for-rails-engines","posts_count":3,"reply_count":0,"highest_post_number":3,"image_url":null,"created_at":"2023-06-12T10:42:06.560Z","last_posted_at":"2023-06-12T15:29:14.986Z","bumped":true,"bumped_at":"2023-06-12T15:29:14.986Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":32,"like_count":0,"has_summary":false,"last_poster_username":"system","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":18,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Trouble with dependencies between two packs and identifying violations in a large class","id":744,"title":"Trouble with dependencies between two packs and identifying violations in a large class","slug":"trouble-with-dependencies-between-two-packs-and-identifying-violations-in-a-large-class","posts_count":36,"reply_count":0,"highest_post_number":36,"image_url":null,"created_at":"2023-03-29T20:25:17.023Z","last_posted_at":"2023-06-02T15:21:38.147Z","bumped":true,"bumped_at":"2023-06-02T15:21:38.147Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":175,"like_count":0,"has_summary":false,"last_poster_username":"system","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":29,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"How to organize GraphQL code into packs and handle relationships between private models in different packs?","id":845,"title":"How to organize GraphQL code into packs and handle relationships between private models in different packs?","slug":"how-to-organize-graphql-code-into-packs-and-handle-relationships-between-private-models-in-different-packs","posts_count":4,"reply_count":0,"highest_post_number":4,"image_url":null,"created_at":"2023-05-18T18:33:51.833Z","last_posted_at":"2023-05-23T15:35:10.627Z","bumped":true,"bumped_at":"2023-05-23T15:35:10.627Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":41,"like_count":0,"has_summary":false,"last_poster_username":"system","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":7,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Recording Privacy Violations: Exploring Solutions for Package Control and Enforcement","id":761,"title":"Recording Privacy Violations: Exploring Solutions for Package Control and Enforcement","slug":"recording-privacy-violations-exploring-solutions-for-package-control-and-enforcement","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2023-04-27T21:13:56.488Z","last_posted_at":"2023-05-08T19:38:10.575Z","bumped":true,"bumped_at":"2023-05-08T19:38:10.575Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":29,"like_count":0,"has_summary":false,"last_poster_username":"mclark","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":1,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":19,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"How to Remove Associations in Ruby: Struggling with Circular Dependency Issue","id":747,"title":"How to Remove Associations in Ruby: Struggling with Circular Dependency Issue","slug":"how-to-remove-associations-in-ruby-struggling-with-circular-dependency-issue","posts_count":4,"reply_count":0,"highest_post_number":4,"image_url":null,"created_at":"2023-05-01T17:13:20.921Z","last_posted_at":"2023-05-01T20:36:02.798Z","bumped":true,"bumped_at":"2023-05-01T20:36:02.798Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":58,"like_count":0,"has_summary":false,"last_poster_username":"stephan","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"How to approach keeping `ApplicationController` agnostic while having all controllers in a package inherit from it?","id":853,"title":"How to approach keeping `ApplicationController` agnostic while having all controllers in a package inherit from it?","slug":"how-to-approach-keeping-applicationcontroller-agnostic-while-having-all-controllers-in-a-package-inherit-from-it","posts_count":3,"reply_count":0,"highest_post_number":3,"image_url":null,"created_at":"2023-04-17T18:14:12.228Z","last_posted_at":"2023-04-17T19:51:54.805Z","bumped":true,"bumped_at":"2023-04-17T19:51:54.805Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":17,"like_count":0,"has_summary":false,"last_poster_username":"stephan","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":29,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"How to Communicate Across Domains in Business Processes?","id":856,"title":"How to Communicate Across Domains in Business Processes?","slug":"how-to-communicate-across-domains-in-business-processes","posts_count":3,"reply_count":0,"highest_post_number":3,"image_url":null,"created_at":"2023-04-13T22:06:37.310Z","last_posted_at":"2023-04-13T22:12:10.180Z","bumped":true,"bumped_at":"2023-04-14T01:35:22.645Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":41,"like_count":0,"has_summary":false,"last_poster_username":"stephan","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":18,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Advice on Merging Applications in a Distributed Monolith with REST and ActiveRecord","id":743,"title":"Advice on Merging Applications in a Distributed Monolith with REST and ActiveRecord","slug":"advice-on-merging-applications-in-a-distributed-monolith-with-rest-and-activerecord","posts_count":7,"reply_count":0,"highest_post_number":7,"image_url":null,"created_at":"2023-03-24T14:03:21.328Z","last_posted_at":"2023-03-27T20:23:14.064Z","bumped":true,"bumped_at":"2023-03-27T20:23:14.064Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":42,"like_count":0,"has_summary":false,"last_poster_username":"system","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Managing dependencies and cascading deletes at the data level in a multi-package scenario","id":866,"title":"Managing dependencies and cascading deletes at the data level in a multi-package scenario","slug":"managing-dependencies-and-cascading-deletes-at-the-data-level-in-a-multi-package-scenario","posts_count":21,"reply_count":0,"highest_post_number":21,"image_url":null,"created_at":"2023-03-20T09:58:00.309Z","last_posted_at":"2023-03-21T13:59:20.896Z","bumped":true,"bumped_at":"2023-03-21T13:59:20.896Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":165,"like_count":0,"has_summary":false,"last_poster_username":"stephan","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":18,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Using Turbo Streams for a Rich UX in a Well-Designed Rails System: How to Update UI Components Based on Model Changes?","id":739,"title":"Using Turbo Streams for a Rich UX in a Well-Designed Rails System: How to Update UI Components Based on Model Changes?","slug":"using-turbo-streams-for-a-rich-ux-in-a-well-designed-rails-system-how-to-update-ui-components-based-on-model-changes","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2023-03-15T14:57:36.195Z","last_posted_at":"2023-03-15T15:01:24.617Z","bumped":true,"bumped_at":"2023-03-15T15:01:24.617Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":21,"like_count":0,"has_summary":false,"last_poster_username":"system","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":18,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Adopting Big Rails Patterns: What Scale is Appropriate for a Small Team of 4 Engineers?","id":869,"title":"Adopting Big Rails Patterns: What Scale is Appropriate for a Small Team of 4 Engineers?","slug":"adopting-big-rails-patterns-what-scale-is-appropriate-for-a-small-team-of-4-engineers","posts_count":37,"reply_count":0,"highest_post_number":37,"image_url":null,"created_at":"2023-03-07T13:18:30.913Z","last_posted_at":"2023-03-13T18:58:09.590Z","bumped":true,"bumped_at":"2023-03-13T18:58:09.590Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":360,"like_count":0,"has_summary":false,"last_poster_username":"system","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":18,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Test organization for `packs-rails` and `packwerk`","id":877,"title":"Test organization for `packs-rails` and `packwerk`","slug":"test-organization-for-packs-rails-and-packwerk","posts_count":8,"reply_count":0,"highest_post_number":8,"image_url":null,"created_at":"2023-02-08T05:02:25.473Z","last_posted_at":"2023-02-13T10:35:22.758Z","bumped":true,"bumped_at":"2023-02-13T10:35:22.758Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":65,"like_count":0,"has_summary":false,"last_poster_username":"system","category_id":10,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":35,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":1,"primary_group_id":null,"flair_group_id":null}]}]}}