WaldorfConnect
A collaboration platform for German Steiner schools' students. It supports storage of files, communication via chat and user management for productive work.
For a long time the Japanese did not have a writing system of their own.
In the 5th century court officials therefor started using the Chinese characters called Hànzì (in Japanese: Kanji), but those turned out to be a bit of a mismatch for the Japanese language. While Hànzì portray the short, unchanging Chinese words, in Japanese there are lots of mutable words with countless suffixes and particles.
It was only over the centuries, that methods were found to record the Japanese language in writing. By the 10th century, two syllabic scripts, together called Kana, had been created for this purpose. Initially, court ladies used the Hiragana script for their diaries, later Buddhist monks created a second syllabic alphabet Katakana.
Today, Kanji as well as Hiragana and Katana are used every day by the Japanese people:
Now a problem occurs when you try to chat in Japanese. Because such a keyboard would need to have 46 characters just for the basic alphabet (that’s how many hiragana and katakana there are respectively). This is hardly feasible especially on mobile devices.
That’s why virtually everyone, even Japanese people, normally use American keyboards to type Japanese with a so called Input Method Editor (IME). That is an operating system component or installed program that allows user to enter letters available to them and convert them into a different writing system (here: Japanese).
But some people don’t have an IME at their fingertips, to convert their Roman letters to Japanese characters (e.g. Microsoft Japanese IME). Maybe because they don’t want to install an Input Editor. Maybe there is no IME. Or they find it quite troubling to use.
That’s where web-based IMEs come into play. They are readily available online and offer uncomplicated conversion services. Using them myself from time to time, I experienced however, that most of them have extremely unpleasant user interfaces resulting in rather poor user experience.
Because of this I decided to build a beautiful, easy-to-use, blazingly fast, free and secure web-based IME: the Romaji2Kana Converter.
(Our letters stemming from the Latin/Roman alphabet are called Romaji in Japanese)
On top of it there shall be an API for developers who want to build on top of this software.
The website shall consist of the following pages:
The REST API shall serve various endpoints regarding
For maximum performance (the single most important factor when using a converter) the architecture should be kept to a minimum: a simple website and a standalone API.
The tech stack for the website will be:
The tech stack for the API will be:
The infrastructure supporting the software is in the Cloud on Amazon Web Services. In order for me to not pay any capacity that I don’t use, it must be 100% serverless.
Since the the website is mostly static plus a bit of client-side interactivity (which is done via JavaScript by the client), I do not need a a server for it anyways. A simple file storage with static hosting option is enough.
For the API I do need a server though, so I’ll go with the serverless compute offering of AWS. Sounds wrong, doesn’t it? Well, serverless ultimately just means a server that you don’t have to manage. And as it is the case here, you don’t pay for, if you don’t use it.
romaji2kana.com
. I’ve set a DNS A-Record that points requests to the CloudFront distribution delivering the site.The deployment to this infrastructure is automated by a CI/CD Pipeline via GitHub Actions.
.html
extension from HTML files to produce clean URLs. Setting the --content-type "text/html"
will make them behave just the same afterall.api.romaji2kana.com
pointing to that CloudFront distribution’s domain name.
You can find the code for both parts of the project publicly available on GitHub along with additional documentation in the respective READMEs.
main
branch: local development version with Node.js and Expressrelease
branch: production version for AWS Lambda with Node.js environment (only 39 lines)The website is extensively tested by frequent personal usage.
The API on the other hand has a dedicated automated test suite of 180+ tests in my Postman account. It validates that exactly the expected responses are returned, even employing the Ajv schema validator to verify the JSON response bodies.
The below code snippet displays one of those tests. It makes 5 assertions, which build on top of each other to progressively ensure everything meets expectations.
Read more about the project on the About page of the Romaji2Kana website.