DEV Community

crevilla2050
crevilla2050

Posted on

My first Dev.to post: building a deterministic codemod engine (Dennis Forge)

Hello Dev.to!

This is my first post here, so I thought I would introduce a small open-source tool I've been working on called Dennis Forge.

The idea behind Dennis came from a very practical problem.

In one of my projects I ended up with a mixture of translated strings, hard-coded strings, and inconsistent localization logic. Fixing it with quick scripts felt risky, because those scripts modify files immediately and it is difficult to see exactly what they will change.

I started wondering if there was a safer workflow.

Instead of modifying code directly, what if the tool generated a plan first?

That idea eventually became Dennis.

The core idea: Dennis is a CLI tool that generates deterministic transformation plans for codebases. Simple as that, yet powerful.

Instead of immediately changing files, the workflow looks like this:

scan project
→ generate transformation plan
→ inspect or edit the plan
→ validate
→ apply changes

The plan is stored as human-readable JSON and becomes the source of truth for the transformation.
Because of that, changes are transparent and predictable.

Some design goals that while building Dennis, I tried to keep a few principles in mind:

  • Deterministic output
  • Human-readable plans
  • Reversible transformations
  • Fully offline operation
  • No hidden magic

In other words, Dennis tries to make large transformations inspectable before they happen.

DEX artifacts

Recently I added something called DEX artifacts.

A DEX file packages a transformation plan together with metadata and optional cryptographic signatures. This allows plans to be shared or verified across machines while preserving determinism.

The idea is still evolving, but it has been a fun architectural problem to explore.

The project

Dennis is fully open source.

GitHub
https://github.com/crevilla2050/string-audit

Project page
https://crevilla2050.github.io/dennis-forge/

Why I'm sharing it

Partly to introduce myself to the Dev.to community, and partly because I'm curious how other developers approach large refactors or codemods safely.

If you have experience with tools like this, I would love to hear your thoughts, if you have any comments, suggestions, questions or whatever your heart wants to say, I will be happy to hear from you.

Top comments (0)