Requires
How code in one feature folder reaches code that runs somewhere else.
A feature folder keeps its files side by side on disk, but Rogen places them in different services in the game:
src/Inventory/Server/InventoryService.luau -> ServerScriptService/Inventory/InventoryService
src/Inventory/Shared/InventoryTypes.luau -> ReplicatedStorage/Shared/Inventory/InventoryTypesA require runs in the game, so it resolves against the instance tree, not the folders on disk. InventoryService can't reach InventoryTypes as a sibling, because in the game it isn't one. How you write the require depends on your setup.
Require by instance path:
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local InventoryTypes = require(ReplicatedStorage.Shared.Inventory.InventoryTypes)luau-lsp resolves these through the sourcemap it generates from default.project.json, so types, completion and go-to-definition follow the require to the right file.
A relative string require also resolves against the instance tree, so ./ only reaches files that land in the same folder in the game. require("./InventoryData") from Server/InventoryService.luau works when InventoryData.luau sits in Server/ too. A require that crosses to another service doesn't.
What Each Side Can See
Where a file lands decides who can require it. Shared code (ReplicatedStorage) runs on both sides, so it can't require anything that only the server can see (ServerScriptService, ServerStorage). Two files in one feature folder can end up on sides that can't see each other, so check where a file lands before you require it.
Find the instance path of a file
rogen where <file> prints the instance path a file lands at, even for a file you haven't created yet. The reverse works too: rogen where ServerScriptService.Inventory.Save prints the file behind an instance.