🧑‍💻

Internship at Feldrise

Created
Apr 8, 2022 08:31 AM
Tags
Review

Context

A few months ago, as part of my school, I had to do an internship at a company.
By chance, I knew a person, Victor, a freelancer. Interested in freelancing for months, I asked and was able to do my internship in his company.

Who’s Feldrise?

Feldrise is a small company managed by Victor DENIS, who started as a freelancer. After taking charge of several interns, and acquiring new knowledge, Victor now runs Feldrise as a digital agency that will be under the wing of several employees for clients needing help to develop their ideas.
It now offers two services, two audit services, which I invite you to look at!

Content

MyDemenageur

During my Internship, I had the chance to start nearly the end of a project called MyDemenageur.
What is MyDemenageur
MyDemenageur is a platform that allows users to search for moving services, or to propose them. It now goes beyond, proposing cleaning services, etc...
notion image
This platform already existed, but developed in PHP, it was old to maintain. So, the goal was to rewrite it in javascript, coupled with the NextJS framework and a C# API.
It allowed me to entirely understand, and see, the team working as we were about 5 employees composed of free-lancers and a work-study student.
In this case, Victor, the tutor of my internship was CTO, organizing everything for the good of the developers and the mobile app developer.

Organization

Unlike the other project I'll talk you about later, this project was a bit of a mess at first in my opinion.
I arrived at the end of the project, so we were in a total rush. We had to finish it for the thousands of users waiting for it. We forgot to write down issues on a board, but we were written it down on discord directly, the app we used to chat with.
Luckily, Victor fixed those issues later on when it became really blurry to work with.
So, we then organized ourselves with a Github project board full of tickets:
MyDemenageur’s project board
MyDemenageur’s project board
And, in addition to this tracking board, we had a call every end of the day to review the work that was done.

The website was also organized on the front-end, it has been designed on Figma before starting to be developed:
Part of the website’s template
Part of the website’s template
So, you can guess, I had to rely on the template for the development of new features.

Messaging app

Talking about new functionalities, in the case of my internship I had to develop the messaging part of the website.
On the old platform, users were able to send messages to negotiate their price, organize a meeting or whatever they wan’t.
To do it, we agreed to use a WebSocket server, and save the data in a MongoDB database.
This is the structure used on many social medias, chatting apps and the most reliable.
Schema of how the messaging system is currently working
Schema of how the messaging system is currently working
We tried to use the WS package at first, but we have incurred incompatibilities with what we wanted to achieve so we used Socket.IO instead.
Socket.IO is a great library when it comes to WebSocket services. It allows having multiple different events and dedicated events. Briefly, instead of sending messages to all sockets and dealing with them, you can specify rooms or specific sockets who to send the message to.
However, it was a mess to implement it on React, it is not React states friendly at all.
Additional content:
🤖
*DEPRECATED* Messaging API

Feldrise’s website

Nearly the end of the internship, I could also start working on Feldrise’s website.
He needed a website, to promote his work and services to other companies.

Organization

In that particular case, I was entirely solo but still followed by Feldrise ofc.
I felt more comfortable, as I could develop everything on my own, without dealing with others’ coding habits.
Contrarily to MyDemenageur, here, we applied the method SCRUM.
What’s the SCRUM method?
Scrum method explanation
Scrum method explanation
I also had, like MyDemenageur, a daily meeting every 5.00 pm, but here the tasks were sorted by their importance and had deadlines.
Project’s board
Project’s board

And of course, a Figma template.
Website’s template
Website’s template

Search Engine Optimization

Before starting the development, I had to choose the technology that will be used. In my personal projects, the taste is a factor, however, in a professional context, everything has to be answered. That’s why I had to dig into rendering methods:
Google, the most used search engine, has a robot that looks up pages and establishes a score of referencement. To be fast, he only deals with the first page that comes to him.
Dealing with that referencement score is called SEO (standing for Search Engine Optimization).
Using Client-side Rendering, as you can understand from the schema below, the needed data is gathered after the first render. So, google’s robot will not care about that dynamically imported content.
However, with Server-side Rendering, instead of the client gathering data, it is the server gathering data and sending a populated page to the client on the page first render.
That’s why I chose the NextJS framework, allowing Server-side renders by default, instead of a vanilla ReactJS. This is a choice they didn't make for MyDemenageur, which led to SEO problems.
A schema of the two rendering methods
A schema of the two rendering methods
The two can also be used together, and most often are, because server-side rendering cannot be used in some contexts (During user interaction, the page is already loaded, but we need to collect data. In this case, we collect on the client side).
There is also static rendering, which collects data during the build phase of the site and not at each rendering, but it is used in more specific cases like blogs.
Taking the example of my portfolio, I don't use static rendering because I want to be able to write my blogs on Notion and have them automatically updated on my website.

Conclusion

This internship was an important turning point in my life. I was able to start my career as a freelancer, and acquire skills.
It confirmed my preference for working solo on projects, because we sometimes, developers, have different coding habits even though ESlint forces to have the same coding style.
 
© All rights reserved🌸 Carbon neutral, or maybe not.by suiramdev