✖
Basem
Mostafa
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.
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
Medical Appointments Website (MAW)
Basem's Movie Database (BMDB)
Czech-English Word Game
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
- • 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.
(TypeScript, Experss.js, Kafka, MongoDB, GraphQL Gateway)
- 2. AAIB Merchant Portal - Microservices (New Project
Worked on From Scratch)
- • 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)
(TypeScript, Nest.js, RabbitMQ, MongoDB, GraphQL Gateway)
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