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)