Last winter, after about 3 years of working for my current employer, I decided that it’s time to, as they say, “take a new challenge”. And because sometimes I’m a bit lazy, and sometimes a bit naïve, I thought that it would be nice to transfer to the Berlin office of my employer’s subsidiary, so that technically I would still work for the same company. This would be easy and fun, I thought, and applied there to a position strangely called a “Creative Technologist”. Which, as it turned out after a couple of interviews, is sort of “a web and mobile developer with some idea-generation skills”.
In order to demonstrate my (somewhat average, to be honest) skills in both web development and idea generation, I decided that it would be nice to set up a small web app and launch it live. So I did it. First of all, I thought, the app should be very simple. Two screens/pages max. Why? Because this is how much I can do with best quality within 3 days before the interview, having the current full-time job. Second, the topic of the app should be practical, but not too common.
Before applying to the Berlin office, there were many other places I was considering: UK, Canada, the Netherlands, Sweden, Italy and even New Zealand. And in order the see, how much money I will need per month for my particular situation, I was using numbeo.com. For estimating the salary I was using glassdoor.com, which, considering the vast number of employees my current employer had around the world, was quite accurate. However, when looking at these numbers, one has to keep in mind, that these are gross salaries, and you still have to deduct the personal income tax. Which, depending on the country, may vary in wide range of rates. The problem was to quickly find these rates and, using sometimes quite a complex rules, estimate the net salary.
A quick googling gave me no one-stop solution. I had to use separate, sometimes outdated services to find the right rates and rules. “Aha”, I thought, “this may be a good exercise”. I wasn’t aiming to cover lots of countries of course, because that would take weeks or event months of work. But implementing it for a few countries, which have flat or not-so-complex tax rate formulas, would be a good demo of the entire concept. So I started working on it.
Using the app is straightforward:
On the main page you pick the country you’re interested in. Let it be Canada, for example:
Select some additional details (if the rates depend on particular circumstances), like province in Canada:
Enter the gross monthly amount and get the net amount on-the fly:
There are a few notable points about this web app:
- The entire app is loaded once you open the website, so there are no page reloads after each click; this is an Angular app;
- The data for the calculator and its logic is bundled within the app; so you don’t need any APIs; once loaded, the app may work offline;
- The data for the app is a JSON file, so you don’t need to set up any MongoDBs or, even worse, SQL databases on the back end, and adding a new country is a matter of uploading a new JSON file;
- In order to make it SEO-friendly, the URL structure is designed so that it is always clear, which country you are looking at; moreover, you can always jump straight to a particular country’s page; the URL handling will be done by the Angular router;
- I’ve purchased a netsalary.in domain, so that the URL may look like http://netsalary.in/canada/alberta/
- The calculation runs as you type in the numbers;
- For each country there are also data files and logic for displaying flags and currencies;
- It uses Materialize library for Material design-like styling, and it also allows you to look nice on mobile devices by dynamically rearranging the blocks to fit small screens.
Unfortunately for me, this plan didn’t work. Most probably, because I’m not a professional developer, and apart from a few toy projects on GitHub, I’ve got nothing to demonstrate – most of my career I spent developing business and technical requirements and solution architectures. However, I find that the concept that I developed for this endeavor might be quite useful, and some of you may want to take it further and turn into a fully-featured product.
Yes, there are some competitors on the internet, but like I said earlier, some of them are outdated, some are dedicated to a particular country, and some are just not user-friendly.
If you liked this article, consider following me on Twitter. I’m aiming to publish new concepts every week, so stay tuned!