Throughout life, we are often faced with difficult decisions. So we wondered what if we could come up with a tool that could help us analyze the situation in detail from different angles and make the right choice?

What it does

Our site presents a huge number of decision boards (from ordinary SWOT to PESTEL), with short descriptions for each of them, so that you can choose the most suitable option for your particular task. Once you are familiar with all the presented arsenal, just simply go to the page with the analysis and write down the advantages and disadvantages of each choice!

How we built it

We took typescript as the main programming language - it is much easier to work with a static programming language in a team because only using a pre-prepared declaration of types you can easily implement the logic of the application without going too deep into what your other partner (for example on the backend) is doing. For the frontend framework we use preact - an entirely rewritten by now (used to be a fork) React, which provides mostly all modern API of React, but also greatly speeds it up (it weighs 3 KB actually) without much loss in usability. As a web application bundler we use Parcel - it is blazing fast, and you do not need to config everything at all. Also, we are hosting our project on Netlify using Nix OS image for a server (all the needed flakes are provided on GitLab too!!!). For testing the dev branch release we prefer stormkit over Netlify since it is easier to set up and faster. For package management we use yarn - it is very space-efficient because files inside node_modules are linked from single content-addressable storage in zip archive. It is also quite strict and really secure - it creates non-flat node_modules, so the code has no access to arbitrary packages. Babel operates as a transcompiler. It is free and open-source and mainly used to convert ECMAScript 2015+ (ES6+) code into a backward-compatible version of JavaScript that can be run by older JavaScript engines. Babel is a popular tool for using the newest features of the JavaScript programming language. And pug.js helped us as a templating tool that made our HTML writing life a lot easier. Code quality monitoring is an integral process in any kind of development, even during a hackathon. That is why we always have and bring the config files for stylelint linter && prettier formatter.

Challenges we ran into

We had never had to work with React or preact before, but using these tools is essential for modern web development, so we had to figure it out completely from scratch, and in order to eliminate one of the main disadvantages of React - namely its size and speed, we immediately started working with preact, although to understand it without experience in React was quite difficult for us. After that, another problem arose - how the hell do you put it all together? Here the parcel came to the rescue, fortunately, although the preact is small for documentation about the building part, we managed to assemble everything together and deploy it.

Accomplishments that we’re proud of

We managed to implement a fully working prototype, which is, by the way, incredibly fast!

What we learned

During the development process, we realized how boring, long, and tedious it is to set up a building system (but it really is!). Actually, we actually doped out how to work with react components in conjunction with typescript, as well as how to deploy and configure the server (have never worked on a nix system in the cloud, and it was a lot of fun! I still think immutable pattern does not fit well in our case, and it is harder to have everything work).

What's next for Éminence grise

The frontend is completely implemented (maybe only with some small improvements) - it is a fact, but now, as it turns out, we need to provide convenience to the user and improve the experience :)! So, for example, the absolutely ideal continuation would be to take the backend, where we would store the session and would allow, most importantly, to collaborate with other people on the same idea. In that case, the tool would not only be useful for single people, but it would also be a super tool for various business decisions.

Built With

Share this project: