Lightweight Node.js MVC framework built on Express.js with powerful CLI tools, code scaffolding, database migrations, and EJS templating.
Latest Version: 1.0.5 | GitHub Repository
MwalaJS is a modern, lightweight MVC framework for Node.js that simplifies building scalable web applications. It wraps Express.js with built-in MVC structure, CLI scaffolding, multi-database support (MySQL, PostgreSQL, SQLite, MongoDB), migrations, middleware, and EJS views.
Recommended (Latest Versions ≥1.0.4): Install via NPM
npm install -g mwalajs
For project-specific use:
npm install mwalajs
Create package.json with npm init and ensure:
{
"type": "module",
"dependencies": {
"mwalajs": "^1.0.5"
}
}
Download .exe, .zip, or .rar from the website and follow manual setup (add to PATH on Windows or symlink on Linux).
mwala -v # Show version
mwala help # List commands
mwala create-project <name> # Create new project
mwala serve # Start dev server
mwala create-db # Create database
mwala migrate all # Run migrations
mwala rollback all # Undo migrations
mwala generate model <name>
mwala generate controller <name>
mwala generate route <name>
mwala generate view <name>
mwala generate midware <name>
Main entry: app.mjs (must be .mjs). Other files can use .mjs or .js if needed.
import mwalajs from 'mwalajs';
import { homeRoutes } from './routes/homeRoutes.mjs';
import path from 'path';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
mwalajs.set('view engine', 'ejs');
mwalajs.set('views', path.join(__dirname, 'views'));
mwalajs.useStatic(path.join(__dirname, 'public'));
mwalajs.use('/', homeRoutes);
const port = process.env.PORT || 3000;
mwalajs.listen(port, () => {
console.log(`Server running on http://localhost:${port}`);
});
import mwalajs from 'mwalajs';
import { homeController } from '../controllers/homeController.mjs';
const router = mwalajs.Router();
router.get('/', homeController.getHomePage);
router.get('/about', homeController.getAbout);
export { router as homeRoutes };
export const homeController = {
getHomePage: (req, res) => {
res.render('index', { title: 'Welcome to MwalaJS' });
},
getAbout: (req, res) => {
res.render('about', { title: 'About Us' });
}
};
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
</head>
<body>
<h1><%= title %></h1>
<p>Welcome to your MwalaJS application!</p>
</body>
</html>