Stewart Rutledge2025-08-22
A little look into how we’re trying to improve M3 app development
A little look into how we’re trying to improve M3 app development
(warning: it gets a bit technical)
One of the biggest challenges in any project is translating business requirements into actual code, not just the logic, but the repetitive boilerplate that comes with it.
We’ve been focusing a lot on how we can make API usage in M3 safer, more reliable, and faster to work with. It shouldn’t take a developer half an hour to wire up another CRS610MI/GetBasicData call.
We’ve already put a lot of effort into our ION API client for Angular, but I also wanted to share a bit about some internal tooling we’ve been building.
Angular, the framework powering most H5 (SDK) apps, has great built-in support for code generation, typically used for components and services.
We’ve extended that with our own generators for M3, both for APIs and EXPORTMI, and it’s made a big difference.
For standard APIs:
- Everything is typed and documented. No more guessing field names or whether something is a string or a number.
- Each transaction becomes its own method, so reusing logic is easy.
- We also keep a full list of APIs and transactions, which makes defining API security rules simpler.
For EXPORTMI:
- We pull the table, or at least the fields we care about, up front.
- Correct field names, automatically. No more fighting with REPL exports.
- We’ve got a query builder that makes filtering clean and readable:
this.ocusmaService.query
.where('OKCUNO', '=', 'test123')
.subscribe()
The result? Much faster development, much better code, and less time spent on repetitive setup. Developers can focus on the actual business logic sooner, and we end up with cleaner, more reliable apps.I’ve attached a quick video showing this in action if you’re curious.And of course, if you want to talk more about how M3 H5 apps can simplify your workflows, just reach out.
hello@beredo.net
beredo.net