Awesome
Renkbench
A JavaScript Amiga Workbench 1.3.3 look and feel clone with a Go and MongoDB backend. Live on renkbench.de.
Goal
For getting some JavaScript practice, in the year 2009 I created an Amiga Workbench clone and hosted it on Lachsfilet.de. Since not all look and feel features of the orginal Workbench were implemented, in December of 2018 I started to refactor the code and added some missing features.
In the meantime I put the whole page into a Docker container to simplify the deployment process.
Frontend features
Currently, the Workbench clone contains the following features:
- Drag and drop functionality for icons and windows
- Topaz style font
- Original window behavior with resizing and scrolling
- Window to the front and to the back buttons
- Closing of windows
- Directories displayed as drawers
- Context menu in the main title bar triggered by mouse right click
- Touch events for handheld usage
- Customized keyboard input using Topaz font
To-do
- Bugfixing
- Content
- Introduce applications
- Further refactoring
- Continue splitting frontend code into multiple files
Backend
In 2022, I switched the whole backend to Go and replaced the single JSON-file for the content with a MongoDB instance.
For content seeding (windows, menu, etc.) I wrote an own Go application called init.
Docker
The system is setup with Docker Compose, consisting of two containers:
- The renkbench app (Go and JavaScript ES6)
- The MongoDB instance
Putting the application into a Docker image enhanced the delivery process and brought the advantage to run it locally without setting up a MongoDB instance and the Node.js stuff for the JacaScript unit tests. For CI build and release I added the Azure DevOps pipelines as YAML code. I will replace them with GitHub Actions, which are also stored in the current repository.
JavaScript unit tests
I started with unit testing using Jasmine and jsdom, after I cut the createNode builder out of the monolith.