Project structure
Running jafa new <project-name> [target-directory] adds a new project under
projects/<project-name> inside a workspace.
Folders
Each project is scaffolded with:
projects/<project-name>/
├── .jafa
├── client/
│ ├── services/
│ ├── controllers/
│ ├── modules/
│ ├── databases/
│ └── ClientMain.client.luau
├── server/
│ ├── services/
│ ├── modules/
│ ├── databases/
│ └── ServerMain.server.luau
├── shared/
│ ├── databases/
│ ├── modules/
│ ├── facilitators/
│ └── LogConfig.luau
├── ui/
│ ├── components/
│ ├── windows/
│ └── stories/
├── preload/
├── character/
└── default.project.json
Rojo tree
default.project.json wires this folder structure up to the Roblox data
model:
ReplicatedStorage/Shared—shared/facilitators,shared/modules,shared/databases, plusPackageslinked to the workspace'swally/PackagesReplicatedStorage/Client—client/services,client/controllers,client/modules, andClientMainReplicatedStorage/UI— theui/folderServerScriptService—server/services,server/modules, andServerMainWorkspace— a baseplatePart, withFilteringEnabledandStreamingEnabledon by default
client/databases and server/databases are scaffolded but not wired into
the Rojo tree yet — only shared/databases is currently mapped in.
Asset manifest (.jafa)
Every project also gets a .jafa file at its root, mapping instances in a
published Roblox place (terrain, maps, lighting, etc.) to files under the
project directory. jafa pull reads it to pull those
assets down from Roblox — see that page for the file format.
Where build output goes
jafa build writes to artifacts/<project-name>/build.rbxl at the workspace
root (not inside the project folder), alongside a sourcemap.json written
back into the project directory.