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>
MwalaJS Auto Backup System is a fully automated database backup engine designed for production environments. It supports encryption, scheduling, and email delivery of backups.
backup.sql (raw dump) backup.sql.enc (encrypted file) backup.sql.enc.iv (initialization vector) backup.sql.enc.tag (authentication tag)
Initialize the backup system:
mwala autodb-backup init
Start auto backup:
mwala autodb-backup start
| Input | Description |
|---|---|
| 30sec | Backup every 30 seconds |
| 10min | Backup every 10 minutes |
| 1hr | Backup every 1 hour |
| 1day | Backup every 24 hours |
The system uses AES-256-GCM encryption with secure key derivation using scrypt.
Algorithm: AES-256-GCM Key Derivation: scrypt Security Files: .enc, .iv, .tag
Decrypt a single backup file:
mwala autodb-backup decrypt backup.sql.enc
Restore database:
mysql -u root -p your_database < backup.sql.decrypted.sql
mwala autodb-backup decrypt:folder backups/
Check system status:
mwala autodb-backup status
View logs:
mwala autodb-backup logs
pm2 start mwala --name mwala-db-autobackup -- autodb-backup start
Enable auto restart:
pm2 save
pm2 startup
| Mode | Description |
|---|---|
| SECURE | Production mode with encryption and email enabled |
| INSECURE | Development mode with relaxed security |