Recognition of facial expressions using Artificial Neural Network trained with synthetic data
- PUBLISHED ON: 1 April 2022
- READ TIME: 5 mins
Capua (https://capua.co) is a platform for human resources, where the users can find a job, and companies can contact Capua to outsource the human resources department.
About the Project
This project's one of the most complex and long-term projects I have ever worked on, with a duration of 9 months. Of course, that was not enough work for a single man, so I coordinated a team as a team leader.
The project had from the start four main targets: stability, optimization, security and compliance with the given design. I'm always happy when a client wants essential things of a web application. Of course, it may be cheaper to not consider what I listed above, but on long-term, the web application can scale more easily and it's more stable in this process, which means less work.
The scalation and optimization
One of the project's targets was to be optimized and work as fast as possible, provided that the platform can be used by millions of users. To be able to achieve this aim, we gave up on the monolithic architecture, which consists in having all the resources on a single server (and possibly very powerful) and we chose a microservices architecture.
The microservice architecture can be explained as it follows: every feature of the web application is a resource, and the more is used, the more is cloned automatically. A parallel to this concept can be a gas station: the more cars are waiting in line, the more gas pumps are cloned to serve all the clients in the shortest time.
This way, the client pays only what he uses (managed by the platform itself) and the platform is always up. Otherwise, the client can have days of a constant flow of guests and days of a sudden growth, and if the server is not powerful enough, the web application will crash. Economically speaking, it's cheaper to pay for wasted resources instead of paying for a very powerful server.
These automatic scalations of the platform are made through Docker and Kubernetes technologies. But, these are only for the back-end (internal resources), for the front-end (what the user sees) the things are different.
The client's wish was having a modern web application. In order to satisfy the desire of modernity and optimization, we chose the Angular framework. This framework is developed by Google and everyone can build optimized web applications through it.
Basically the whole code is compressed and broken into multiple files, which are loaded when needed (lazy loading), which makes the website load faster. Once loaded, these files are stored in the browser's cache memory. The next time the user visits the website, the loading will be instant, the only data exchanged will be from the API.
Of course, the web application was made to be able to work on Cloud, the resources to exist and be managed by the chosen Cloud Service, and the internet traffic of the web application to be controlled by the Cloud Service.
Cloud Services have a lot of benefits, especially the almost unlimited resources through which the app can scale anytime; the layers of security through which the web application is protected externally, the content delivery network through which the files are downloaded faster globally, and the list can go on.
In terms of security, I'm not going to provide information about what's on the back-end, but I'll describe the features on the front-end.
The sign-in and sign-up can be done on the https://capua.co/connect page with the Linkedin social platform or with an email. The animations can be seen by accessing each step of registration. If the user has registered with an email, they will receive a confirmation email via Mailchimp.
Once the account has been created with the minimum data, the user is forced to fill in more data about himself and his professional claims. There are 4 stages, and the transition between stages can be seen in the animation below:
The user has a settings page, where one can change one's preferences in the previous steps and also delete the account. For security changes, they will be confirmed via email.
Each company can have a set of jobs, where it has its requirements and what it offers. For a better connection between users anda job, there is a special function that calculates the match value of the user with a job. This can be difficult, because, in some cases, for a single user the entire job database needs to be accessed, which can be quite expensive if multiple users are doing the same thing at the same time.
Not only does the microservice architecture help in this case, but various optimizations have been made and the special functions offered by the database have been highlighted in order to optimize this.
The user can view the jobs on the Database page (https://capua.co/database) where he can filter the jobs according to preferences, can mark them as applied and view in a different tab, or can save them in different Shortlists, for a much easier organization.
The hotlist system is not a complex one, they are simply job lists created by the Capua team. This system works very closely with the job system. The hotlist itself stands out with some nice animations, the card for each job, and the Quick Scroll component, which always stays on the right side of the screen. A hotlist can be accessed from the navigation bar.
Being a long-term project, it has not reached the final stage yet, but there are still many functionalities to bring to the website. This website will be updated to accurately reflect the work done on this project. The next important feature that could appear is the crawling robot created with Artificial Intelligence, which could revolutionize the platform in the coming years.