Enterprise Resource Planning
By David Nimon
Browser-based ERP application with drag/drop Low-Code/No-Code UI/UX
An integrated ERP and Point of Sale application was built to be completely web-based and user friendly, as an alternative to the legacy systems available on the market. It interfaced to multiple devices, including printers, scanners, and cash drawers.
This integration was designed to combine the utility required at Point of Sale with complete inventory management (including purchasing) as well as eveything required to maintain a ledger balance.
Details:
- Selected Angular for the frontend, Node & Express for the backend, and Postgres for the database
- Built generic widgets using Angular components such that all UI elements and server API calls were expressed in a JSON format - backend developers could build workflows without any Angular knowledge
- Created a drag/drop editor for the JSON files, allowing someone with no technical knowledge to build custom table view pages and workflows
- Developed a docker environment for the frontend and backend to run on, supporting direct USB device access through the docker interface
- Evolved docker environment for Intel NUCs, including support for USB device hotplugging
- Created a TypeScript-based class structure for each USB device for API command abstraction
- Developed interfaces for label printers and document scanners, installing the drivers into the Linux docker environment, and then creating an interface to list, manage, and print to the requested printer.
- Researched existing Linux commands for managing printers, deciding on lp, adding this to the node backend
- Used lp for printer interfaces (list, manage, and print) and scanimage for document storage/retrieval functions
- Built a report generation tool, based on the same JSON-based UI format using the Puppeteer tool to create a PDF - reports were generated reusing same UI and logic that generates the UI web pages
- Developed interfaces with network-based cash drawers, implementing a configuration system to add a new cash drawer, and then implemented functions to open and check the status of the cash drawer
- Created a Postgres migration builder, using models built in Node to automate the creation of database migrations