Rogen IconRogen

Introduction

Enabling feature-based architecture through automated routing of client, server, and shared code to Roblox services

A bad folder structure slows development. Remembering where the related pieces are increases cognitive load. And finding files wastes time.

The Problem: Layer-Based Architecture

Typical Roblox projects structure their codebases in two ways:

  1. By Environment: Split code at the root into server, client, and shared folders.
  2. By Type: Inside the roots, group files by technical role (like Controllers, Services, or Utils).

The layout may clean at the beginning but it gets messy in large codebases. Folders grow rapidly. Related files live far apart. Navigating the project becomes slow. Updating an Inventory system forces developers to search through massive file trees just to gather the related pieces.

File System
src
client
Controllers
InventoryController.luau
server
Services
InventoryService.luau
shared
Types
InventoryTypes.luau

The Friction: Context switching. Working on one feature requires navigating through unrelated systems just to find the right server script.

The Solution: Feature-Based Architecture

Keep all code for a specific feature (e.g. client, server, and shared code) inside a single, self-contained folder.

Rogen routes every file to its target Roblox service automatically based on the folder structure and naming rules. Repositories stay clean and localized while Roblox Studio receives scripts in the expected service containers.

File System
src
Inventory
client
InventoryController.luau
server
InventoryService.luau
shared
InventoryTypes.luau
Roblox Studio
ReplicatedStorage
Inventory
InventoryTypes
ServerScriptService
Inventory
InventoryService
StarterPlayerScripts
Inventory
InventoryController

The Result: Developers maintain a clean repository, while Roblox Studio receives the scripts in the right containers.

On this page