mohd-faraz

_blogs

// blogs / 20260826.md

Dev Log: August 26 Wrap-up

2026-08-26
#NodeJS#Java#DevExperience#Backend#SEO

Overview

Today was a productive mix of making things easier for the team and tightening up security on the backend. Most of my energy went into finishing up a portability tool and ensuring our workflow engine handles permissions correctly.

What I Worked On

Packaging Utilities for the Team

I spent some time finishing up a project to bundle a local utility server into a standalone binary. There’s nothing more annoying than asking a teammate to run a tool, only for them to get stuck on node_modules errors or version mismatches.

I used pkg to handle this. It allows us to ship a single executable that includes the Node.js runtime and all dependencies. Being able to generate binaries for Windows, Linux, and macOS with one command feels like a huge win for our internal dev-experience. I had to be a bit careful with how static assets (HTML/CSS) were referenced, as the executable uses a virtual file system, but once the paths were sorted, it worked like a charm.

Workflow Security and Decorators

On the backend side, I was working on our process runner. We use a decorator pattern to keep the core logic clean while adding extra layers of functionality. Today, I focused on integrating a new security decorator to handle Role-Based Access Control (RBAC).

By registering this decorator at the entry point, we ensure that every process instance checked by the runner respects the user's permissions without cluttering the actual execution logic. It's a clean way to keep security as a separate concern.

// Simplified registration of the security layer
public class WorkflowRunner {
    public static void main(String[] args) {
        // Initialize the manager and plug in the security decorator
        PluginManager.getInstance().setSecurityDecorator(new AccessControlDecorator());
        
        // Register other functional decorators
        PluginManager.getInstance().register(new ProcessInstanceDecorator());
        PluginManager.getInstance().register(new ActivityLogDecorator());
    }
}

Centralizing Portfolio Metadata

I also took a moment to clean up my portfolio's SEO configuration. I had a lot of hardcoded strings and metadata scattered in the main layout file. I moved everything—site URLs, keywords, and personal info—into a dedicated configuration file. It’s one of those "small" tasks that makes the codebase much more maintainable. Now, if I need to update a social link or a keyword, I do it in one spot instead of hunting through components.

Wrapping Up

It feels good to have the portability tool out of the way. It’s the kind of "quality of life" improvement that pays off every time someone new joins the project. Tomorrow, I'll likely be diving deeper into the workflow engine's event handling. Catch you then.