Modules
Modules are feature slices. Each module can own its routes, controllers, services, models, and queries. Flowra discovers modules from the manifest and registers them into the container.
Module manifest
app/Modules/modules.manifest.js controls which modules are loaded:
app/Modules/modules.manifest.js
module.exports = {
modules: [
{
name: 'users',
path: './Users/users.module.js',
enabled: true,
description: 'Sample user management module.',
},
],
};
Disable a module by setting enabled: false or using the CLI:
flowra module:disable users
Module definition
Each module exports an object with a name, register function, and routes:
app/Modules/Users/users.module.js
'use strict';
const registerContainer = require('./users.container');
const registerRoutes = require('./users.routes');
module.exports = {
name: 'users',
register: registerContainer,
routes: registerRoutes,
aliases: {},
};
Standard module layout
app/Modules/Users/
├─ Users.controller.js
├─ Users.model.js
├─ Users.service.js
├─ users.container.js
├─ users.module.js
└─ users.routes.js
CLI helpers
flowra module:listshows module status.flowra module:enable <name>enables a module.flowra module:disable <name>disables a module.
Naming
Flowra normalizes module names to kebab-case in the manifest. Directory names are PascalCase by default.