MwalaJS Framework Documentation

MwalaJS Framework Documentation

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

Overview

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.

Key Features

Installation

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"
  }
}

Older Versions (≤1.0.2)

Download .exe, .zip, or .rar from the website and follow manual setup (add to PATH on Windows or symlink on Linux).

CLI Commands

General

mwala -v              # Show version
mwala help            # List commands
mwala create-project <name>  # Create new project

Server & DB

mwala serve           # Start dev server
mwala create-db       # Create database
mwala migrate all     # Run migrations
mwala rollback all    # Undo migrations

Code Generation

mwala generate model <name>
mwala generate controller <name>
mwala generate route <name>
mwala generate view <name>
mwala generate midware <name>

Project Structure

Main entry: app.mjs (must be .mjs). Other files can use .mjs or .js if needed.

mwalajs-project/
├── app.mjs # Main app (Express wrapper - must be .mjs)
├── migrations/ # DB migration files (.js or .mjs)
├── models/ # Models (e.g., UserModel.js or .mjs)
├── controllers/ # Controllers (e.g., UserController.js or .mjs)
├── routes/ # Routes (e.g., userRoutes.js or .mjs)
├── middlewares/ # Custom middleware (.js or .mjs)
├── config/ # Config files (database.js, etc.)
├── public/ # Static assets
│ ├── css/
│ ├── js/
│ └── images/
├── views/ # EJS templates (.ejs)
├── package.json
└── README.md

Code Examples

app.mjs (Main Entry - must be .mjs)

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}`);
});

routes/homeRoutes.mjs (or .js)

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 };

controllers/homeController.mjs (or .js)

export const homeController = {
  getHomePage: (req, res) => {
    res.render('index', { title: 'Welcome to MwalaJS' });
  },
  getAbout: (req, res) => {
    res.render('about', { title: 'About Us' });
  }
};

views/index.ejs (Example View)

<!DOCTYPE html>
<html>
<head>
  <title><%= title %></title>
</head>
<body>
  <h1><%= title %></h1>
  <p>Welcome to your MwalaJS application!</p>
</body>
</html>

Downloads (Older Versions)

MwalaJS Auto Backup Documentation

MwalaJS Auto Database Backup System Documentation

Overview

MwalaJS Auto Backup System is a fully automated database backup engine designed for production environments. It supports encryption, scheduling, and email delivery of backups.

Features

Backup File Structure

backup.sql          (raw dump)
backup.sql.enc      (encrypted file)
backup.sql.enc.iv   (initialization vector)
backup.sql.enc.tag  (authentication tag)
  

Installation

Initialize the backup system:

mwala autodb-backup init

Start auto backup:

mwala autodb-backup start

Backup Interval Examples

Input Description
30sec Backup every 30 seconds
10min Backup every 10 minutes
1hr Backup every 1 hour
1day Backup every 24 hours

Encryption System

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
  

Decryption

Decrypt a single backup file:

mwala autodb-backup decrypt backup.sql.enc

Restore database:

mysql -u root -p your_database < backup.sql.decrypted.sql

Folder Decryption

mwala autodb-backup decrypt:folder backups/

Monitoring

Check system status:

mwala autodb-backup status

View logs:

mwala autodb-backup logs

PM2 Production Mode

pm2 start mwala --name mwala-db-autobackup -- autodb-backup start

Enable auto restart:

pm2 save
pm2 startup

Security Modes

Mode Description
SECURE Production mode with encryption and email enabled
INSECURE Development mode with relaxed security

Important Notes

MwalaJS Auto Backup System Documentation