Basem's photo Basem Mostafa

Basem's photo

Basem
Mostafa

Giza, Egypt  ·  +201092369774 ·  basem.mostafa1698@gmail.com

A Back-End Software Engineer with practical experience in building both Monolith- & Microservices-based RESTful & GraphQL APIs, and a Software Engineer With a language- & tool-agnostic approach to Software Development, a knack for proper Engineering & Architecture, and a passion for Computer Science.

I kicked off my career working solely on monolith backends using Node.js, Express.js, and JavaScript, then the rest of my other projects starting from my first job were built based on the microservice architecture, using Nest.js and TypeScript for cleaner, more structured codebases, and more conforming to SOLID principles.

Facing many problems related to Distributed Systems in the workplace has helped me develop sharp engineering skills where I had to learn the proper patterns to solve those problems, but most importantly where and when to apply those patterns. In addition, working with message brokers such as RabbitMQ, and event streaming platforms such as Kafka, has also introduced me to a whole new problem set, where I honed advanced debugging skills, and adapted to working on event-based architectures.

Overall, working in a professional agile environment, while building microservices, was my introduction to rapid, frequent and reliable software delivery.

With a main focus on Back-End Web Development, I managed to develop some DevOps knowledge through self-studying and interacting with the DevOps teams in the workplace, where we worked together and shared knowledge.
Moreover, I still didn't neglect the Front-End and Design part of the Web Development process, where I worked on Full-Stack personal projects as the Front-End Developer and as a Designer. Such as this portfolio that I personally designed and wrote in pure JavaScript, HTML, and CSS, along with the other mentioned projects in the next section.

Download my resume

Projects

“There was something amazingly enticing about programming. You created your own universe, and you were the master of it. The computer would do anything you programmed it to do. It was this unbelievable sandbox in which every grain of sand was under your control.”
- Vint Cerf

MAW

Medical Appointments Website (MAW)

Timesheet

Basem's Movie Database (BMDB)

Czech-English Word Game

Czech-English Word Game

Blasteroids

Blasteroids Game

The website was made using the following tools:

  • • Vanilla HTML5 and CSS3 for the layout
  • • Vanilla JavaScript for the interactivity and the functionality of the entire UI
  • Webpack to bundle all the JS modules used in the project
  • Node.js for the back-end
  • Express.js as the back-end framework used for building the API
  • MongoDB as the database for both the user accounts and the game data
  • Heroku as the cloud PaaS, on which the entire project is hosted
  • MongoDB Atlas as the cloud DBaaS, on which the database is hosted

The Czech-English Word Game is one of the projects, in which I've tried to combine my knowledge in linguistics (my university major) with development (my profession and my hobby). As a bilingual, going through the process of learning a language was a hard challenge. I've always tried to use as many tools and apps as possible to keep my language skills sharp, and to do so, vocabulary is one of the most important aspects in such a process. Hence, the building of the Czech-English Word Game. It's a place for both, Czech and English learners, to practice their vocabulary in either language, along with a competitive touch.

In this project, I tried tackling as many integral and must-have back-end functionalities as I could. From password encryption, email verification, data validation, session-based authentication to admin authentication. I practiced and implemented by myself all of these into this project.

Moreover, remember when I said, "along with a competitive touch"? I implemented some sort of a leveling or a titling system. It's explained in detail on the website's about page. While also there's a "Top 5" side bar that has a prominent list of the top 5 players.

MAW is a Medical Appointments Website, a platform that connects patients and doctors in a single place. Doctors can set their timetable on the platform according to their convenience, and users can book the appointment they desire. While everything is accessible and under the eyes of the admins. It is my ITI graduation project, and my first full-stack collaboration with a team of 4.


The web application was made by a team of 4 using the following tools:

  • React and MUI for the layout
  • Formik and Yup for the front-end data validation
  • Redux Toolkit for state management
  • Axios for the back-end calls
  • Google Maps API for the geocoding and map preview
  • Node.js and Express.js for the server
  • Cloudinary and Multer for cloud storage integration
  • JWT and Http-Only Cookies for authorization/authentication
  • Swagger for the API documentation
  • Heroku and Netlify for deployment


My responsibilities in the project:

  • 1. Front-end:

  • • Design the landing page wireframe on Figma
  • • Design the "Our Specialists" page wireframe on Figma
  • • Implement the doctor's application multi-step form using React, Mui, Formik and Yup
  • • Implement the doctor's booking drawer component using React, Mui, Formik and Yup


  • 1. Back-end:

  • • Implement the authentication/authorization strategy based on jwt and http-only cookies as a storage
  • • Implement image uploading to Cloudinary using multer and multipart form data
  • • Implement the e-mail sending functionality by integrating 3rd party APIs such as nodemailer
  • • Implement the booking functionality's endpoints
  • • Implement all the dashboard functionality's endpoints
  • • Implement the filteration/pagination endpoints
  • • Implement a loggin system using Winston and Morgan
  • • Implement the API's documentation based on Swagger using swagger-express-ui
  • • Deploy & maintain both the back-end on Heroku and the front-end on Netlify


The web application was made using the following tools:

  • React and Bootstrap for the layout
  • Redux for state management
  • Redux Thunk for the redux store middleware
  • Context API for the language switching functionality
  • Axios for the back-end calls
  • TMDB 3rd party API for the movies data
  • Netlify for deployment

BMDB is a UI to a movies database built using React & Bootstrap. It fetches the movies data from the TMDB 3rd party API using Axious, then stores it in a Redux store to retrieve it later, while incorporating the thunk mechanism to implement paginate before fetching data. The project has a "favourites" feature that allows users to add/remove movies from their favourites list with a paginated preview. Context API was used to switch the language and the alignment based on the current language.

The game was made using the following tools:

  • C as the programming language for the entire project
  • Allegro 5 as the library to handle the lower-level tasks in game development
  • Valgrind, AddressSanitizer and GDB for the debugging

Remember the game Blasteroids from the 80s and early 90s? This is essentially a more basic version of it, which was built using only lines to draw everything on a 2D plane.

The purpose behind this project is completely educational. I finished reading Head First C as my introduction to C, then I decided that building a game without using a game framework for the 2D transformations or the collision detection would be a perfect step to pick up the Linear Algebra skills needed to solve these problems, and of course the necessary C skills.

I obviously used Allegro 5 to handle the lower-lever graphic problems, as well as handling the event queue and listener. However, everything else in the game is written by me and implemented by me. This project, though not completed, has taught me a lot of very valuable skills as a programmer in general, such as Memory Management, Main Loops (The heart of every interactive program), 2D Transformations in computational graphics as well as the necessary debugging skills to debug syntax, runtime, logic and behavourial errors using important C tools (mainly Valgrind, AddressSanitizer and GDB).

Education

“I wanted to learn as much as I could as fast as I could.”
- Dave Walden

Academic

Ain Shams University

September 2016 - July 2020

Bachelor's degree, Slavic Languages and Literature, Czech Language division

GPA/Grade: 3.35/Very Good

Al Manar Public Secondary

September 2013 - June 2016

Scientific Department (Specialization in Mathematics)

GPA/Grade: 3.56/Excellent

Extra-curricular

Udacity

August 2020 - October 2020

Nanodegree, Web Development Professional

FreeCodeCamp

December 2019 - April 2020

Certification, JavaScript Algorithms & Data Structures

Experience

“I am much pleased to find how very well I stand work and how my powers of attention and continued effort increase.”
- Ada Lovelace

Back-End Software Engineer

October 2022 - Now

Arab African International Bank (AAIB)


Projects:

  • 1. AAIB Mobile Banking App - Microservices
  • (TypeScript, Experss.js, Kafka, MongoDB, GraphQL Gateway)


  • • Integrate a mobile security framework with the app’s existing Security microservice for fraud management.
  • • Write a script that automates starting up all the app’s back-end +10 microservices.
  • • Create & integrate new endpoints with the organization’s internal core banking services.
  • 2. AAIB Merchant Portal - Microservices (New Project Worked on From Scratch)
  • (TypeScript, Nest.js, RabbitMQ, MongoDB, GraphQL Gateway)


  • • Design & build all the project’s 10 microservices as a team of 2 Back-end developers.
  • • Design & build the project’s database using MongoDB.
  • • Create a custom RabbitMQ implementation in Nest.js for inter-service communication.
  • • Integrate with online payment gateways (Cybersource and MPGs)

MEARN Development Intern

March 2022 - August 2022

Information Technology Institute (partnership with Arab African International Bank) - Internship


Projects:

  • 1. Medical Appointments Website
  • • A MERN stack web application built as a platform to digitize the medical appointments booking process
  • - My responsibilities as a full-stack developer in the team:
  • • Design the landing page & “Our Specialists” page wireframes on Figma
  • • Implement the doctor’s application multi-step form
  • • Implement the doctor’s booking drawer component
  • • Implement authorization/authentication strategy using JWT & http-only cookies
  • • Implement a total of 35 endpoints for the 3 roles
  • • Implement the API’s documentation using Swagger & swagger-express-ui
  • • Deploy & maintain both the back end on Heroku and the front on Netlify

  • 2. BMDB – Movies Database
  • • A React app that acts as a movie database to browse through a large dataset of movies
  • • The front-end is built with React
  • • The TMDB API is used to fetch the movies data from
  • • React-bootstrap is used as the main UI library
  • • Redux and Redux Thunk are used to manage state
  • • Context API is used to switch between languages and change orientation

MEAN stack training at IT Share

August 2019 - November 2019

IT Share in Al-Dokki, Giza, Egypt


Projects:

  • 1. Czech – English Word Game
  • • A vanilla full-stack web application built as a platform for students of Czech and English to practice their vocabulary
  • • The front-end is built with vanilla JavaScript, HTML, and CSS
  • • Webpack is used for bundling
  • • The back-end is built with Node.js and Express.js
  • • MongoDB and Mongo Atlas are used for the database

Skills

“Good engineers find one of the ways of going right.”
- Dave Walden

Back-end

  • Node.js
  • Express.js
  • Nest.js
  • GraphQL
  • TypeScript
  • JavaScript

Front-end

  • JavaScript
  • CSS
  • HTML
  • Bootstrap
  • MUI
  • Redux
  • Redux Toolkit
  • Redux Thunk
  • Figma
  • Responsive Web Design
  • SCSS

Databases

  • SQL
  • Transact-SQL
  • SQL Server
  • MQL
  • MongoDB
  • Mongo Atlas
  • Robo 3t
  • ERD

Testing (Unit - Integration - E2E)

  • JEST
  • Mocha
  • Jasmine

DevOps

  • Docker

Other

  • Git
  • GitHub
  • Jira
  • Agile
  • SCRUM
  • Linux
  • Ubuntu
  • Windows