Serhii Mamedov

Serhii Mamedov
Lviv, Ukraine
(+380) 099 50 70 544
bboyvivus@gmail.com

SUMMARY

Experienced working front-end, backend and deployment of web apps.

Mostly worked with JavaScript but not limited to it.

Here are some of the industries I've made software for:

  • Accounting, Audit
  • Mortgage
  • Telecommunications
  • BI, Data Services
  • SaaS
  • Home Security
  • Fintech
  • Logistics

Worked for plenty of clients/companies all over the world (US, UK, Israel, Canada, New Zealand, Norway, Poland).

SKILLS

HTML,

CSS,

SCSS,

JavaScript,

TypeScript,

PWA, Service Workers

Frameworks & Libraries:

React,

Next.js,

Vue,

Angular,

Bootstrap,

JQuery,

Material-UI,

Tailwind

Build Tools & Bundlers:

Webpack,

Parcel,

Rollup,

Vite

NodeJS

Express,

Fastify,

Nest.js,

S3,

Emails,

SMS,

Authentication,

CLI tool creation,

Publishing npm packages,

Web Sockets (Socket.io),

Working with 3rd party APIs and SDKs,

Template Engines (ejs, pug, handlebars),

PDF generation,

PM2,

Web Scraping,

Building telegram bots

C#

ASP.Net MVC | core,

Umbraco CMS

C/C++

make,

cmake

Python

basic scripts,

using 3rd party libs

Other

Bash scripts,

RabbitMQ,

Cron

React Native

firebase auth & notifications,

responsive design

Electron

integration with React

SQL

PostgreSQL,

MySQL (creating procedures and functions),

Microsoft SQL Server

NoSQL

MongoDB,

Redis,

Firebase

ORMs and ODMs

Prisma,

Kysely,

Sequelize,

Mongoose,

Bookshelf,

Entity Framework

Docker, docker-compose,

Deployment on linux through ssh,

Configuring Nginx (redirection, ssl, file server),

Working with ssl/tls certificates for https connection,

PM2,

CI/CD (github actions, circleci),

Working with SNS (AWS),

Actively using GCP (Logs, CloudRun, Secret Manager)

Jest,

React Testing Library,

Sinon.js,

Nodejs assert standard package

Git (GitHub, GitLab, AzureDevOps, BitBucket),

Task Management (Jira, Trello, Linear),

Code reviews

Docs:

Writing readme,

Notion,

Swagger,

jsdoc

English - Advanced (C1),

Ukrainian - Native,

Russian - Native,

Czech - Intermediate (B1)

Working with team,

Team Leading,

Interviewing job candidates,

Creating tasks

Regex,

NX (monorepo)

EXPERIENCE

Main work was with Umbraco CMS (.Net), server-side rendering, adding and fixing APIs (C#) and some work with AngularJS (first version of it).

Mostly I fixed bugs and added minor changes (front-end and back-end). The project was a Polish version of PwC-suite.


Tech Stack: C#, js, jquery, MSSQL, AngularJS
Deployment - Azure services
Tracking - Azure DevOps

Main task - creating a plugin (frontend app) client could insert in any website.

The purpose of it is to help clients choose a mortgage loan program that fits him the most based on user input in the form.

Also pdf have to be generated with all info about current program and sent to user email.

Furthermore authentication and admin panel had to be implemented/maintained.


Tech Stack: Vue.js, PostgreSQL, Python (Django)
Deployment - DigitalOcean vps instance (Droplet)
Tracking - GitHub, Trello

Worked mostly with frontend.

  • Working with Stripe api to manage user cards and payments.
  • Working with Electron and adding features to existing project (photo gallery)

Had a lot of projects here.

Big chunk of work was creating and managing procedures and functions in MySQL(working with json, aggregation, transactions, generating statuses and error messages) for rest api endpoints. Also generating swagger documentation. As a backend language Node.js was used.

For most of the projects Bitbucket and Jira was used to track them.
All of them were deployed on company servers (they have their own data center).


Socket.io project.

Sending real time data from database to frontend. Additionally authentication process with existing php api was implemented. Also json structure had to be changed.


Tech Stack: Node.js, Socket.io, MySQL, Redis


Fax project.

User sends an email and this email is converted to tiff file and send to real fax. After that user receives confirmation email back.

There was a work with googleScript (to get data form gmail inbox),googleAPI to download message attachments and message content, then files were checked viruses. After that FreeSwitch was used to send actual fax.

As you can see this process has a lot of steps and takes some time. So multiple workers had to be done and managed (MessageSyncWorker, DownloaderWorker, FaxSenderWorker, EmailConfirmationWorker)


Tech Stack: Node.js, MySQL, GoogleScript, Google SDK, ClamAV, FreeSwitch


SoundFile mini project

User sends sound file he can record in vue app or choose on his system. After that this file had to be checked for viruses, and be converted to mp3 and ulaw and to 8 bit with bitrate of 8kbps and 1 channel (to reduce file size)


Tech Stack: Node.js, MySQL, ClamAV, SoX


Webrtc meeting-manager

Implemented managing of sessions, permissions, and keeping sessions alive for Zoom like project. Technologies were used:

  • TypeScript (nodejs)
  • Janus webrtc server
  • Freeswitch
  • Rabbitmq/Websocket - Communication channel is provided in .env. (to communicate with janus and freeswitch)
  • Redis

Created a few libraries and published then on npm. Used jsdoc to type and annotate them.


Had experience working as lead of a few junior devs.


Interviewing candidates for a job position and creating test tasks for them

This company offers central cloud database.

You put any data there (json, csv, google sheets, sql or no sql database link, etc.) and it will convert this data into relational data, then will put it into data warehouse. After that you could query this data with sql or use it in other apis.


Here is some of the work I did for this company:

  • Defining testing architecture for react (jest, react-testing library).
  • Front-end optimizations like code splitting (lazy loading) and moving project build system from Parcel to Webpack.
  • Modifying custom material-ui component library
  • Changing CircleCI configs, optimizing dockerfile.
  • Adding new endpoints and optimizing existing ones
  • Implementing new designs for old pages/components
  • Working with BigQuery API for monitoring and managing quota
  • Working with Stripe API and it's webhooks
  • Fixing security vulnerabilities (sql injections, unintended joins, ability to decrypt encrypted data)
  • Attending meetings about planning, designing and architecture of the software
  • Code reviews of PRs from team members

Tech Stack - React, Node.js, PostgreSQL, MongoDB, Docker
Deployment - AWS (EKS)
Tracking - Jira

Itera is a Norwegian company that's providing outsourcing services for Norwegian customers (Sector Alarm in this case).

Main task here is to develop an app for sales reps to sell home security equipment.

The app was developed from scratch so there was a requirement to help team and architect with the architecture of the app and the backend.


Worked on:

  • Team leading frontend team and also interviewing potential new members
  • Sales app
  • Admin app
  • Sales API (C#)
  • Shared component npm library (deployed to Azure Artifacts Storage)

Tech Stack - React (with redux), Rollup (for shared library), TypeScript, .Net (C#), MSSQL
Deployment - Azure
Tracking - Azure DevOps, Jira

The target audience of this project are waiters in restaurants and bars. Sometimes clients don't have cache to they still wanna leave a tip. That's where this product comes into play.

The product allows users to create their own Stripe account with the help of stipe connect. And receive tips from clients on their main bank account or their investment account (is managed by partner bank).

Users should be able to see all their transactions and their account balance (Plaid is used for that) and also be able to send money to another user of the app.


To achieve this goal a few apps had to be created:

  • Mobile app for creating and managing user accounts (React Native)
  • Payment web app to receive payments (tips) from clients
  • Admin web app to get the statistics and delete users on request
  • API to manage all the backend

Tech Stack - React, React Native, TypeScript, Node.js, PostgreSQL, NX (monorepo)
Third Party Services - Stipe (with connect), Plaid, Galileo
Deployment - AWS, Sendgrid, SNS
Tracking - GitHub, Jira

In the USA, there is a system of credit scores. If you don't have a high enough score, you won't be able to get a good loan or even rent an apartment. To increase your score, you need to get a loan and pay it back. This process needs to be repeated many times to increment the score. This project is dedicated to simplify this process.

You install the mobile app, complete onboarding (adding bank account details), and the app will create a virtual and physical credit card (which will actually be delivered to your address). Then you will just use this credit card, and in the background, the scheduler will repay your credit card "debt". It will pull the money you've spent on your credit card from the bank account you specified during onboarding.

Users will essentially use the credit card (whether virtual or physical) like a debit card, and the repayments will gradually improve their credit score.


From a technical standpoint, this project involves the aggregation of multiple 3rd party services. The main task here is to ensure that different integrations are working properly with each other.

In the end the product was acquired by the other company.


Project is split between this repositories:

  • Frontend Web App (for onboarding) - using React (Next.js)
  • Backend App - using Node.js (Nest.js), PG, Firebase (auth)
  • Mobile App - using React Native, Firebase (auth)

Tech Stack - React (Next.js), React Native, Node.js (Nest.js), PostgreSQL, Docker
Third Party Services - Stipe, Plaid, SVB, Pier, Lithic, LaunchDarkly, Firebase (authentication, notifications), Amplitude, Sentry
Deployment - GCP (Cloud Run, SQL, Secret Manager), Vercel
Tracking - GitHub, Linear, Notion, Sentry

This is a US logistics platform connecting businesses and consumers with a network of providers who can reuse, repair, resell, or recycle their obsolete IT products.


My responsibility was managing a few frontend web apps and a mobile app. Worked on new features, fixing bugs and security vulnerability fixes.

One of the interesting tasks was migration of old legacy build system (create react app) to new more modern Vite bundler. Same thing with old react native app which wasn't updated for a few years.


Tech Stack - React, React Native
Third Party Services - Adyen
Tracking - Taiga, GitLab

Event Awaiter

I've created this library because I had problem with order of event execution multiple times on backend and frontend.

Npm: event-awaiter


React Cli

Create-react-app is not good enough for me. But configuring webpack every single time is a pain.

So I decided to cerate my own npm package to suffice my needs

I was inspired by vue cli so I implemented a similar solution

Npm: @repugraf/react-cli


Store

I've used redux for some time in react apps. It's good enough but it requires some boilerplate. Main idea was to create something really easy to use.

This library fixes this issue. It's very minimalistic and easy to use. Almost no setup is required.

Npm: @repugraf/store


Cross Domain Storage

I've had a need of cross domain local storage for authentication purposes between multiple subdomains. But there was no libraries to fit my need. Existing libraries were not working at all or full of bugs.

Npm:@repugraf/cross-domain-storage


Minecraft Saver CLI

Minecraft doesn't have a build in cloud saves sync (like Steam has). So if you have some game progress you'd like to save or move to another computer you'll have to do it manually (using flash drive or manually moving it to some cloud file storage).

This CLI fixes this issue by enabling you to just quickly save or pull your worlds into/from AWS S3.

Npm: minecraft-saver


USB & Serial Monitor

Both apps are using web standards like Web USB and Web Serial apis. You just connect to a serial port or usb device listen to or send a message. Tested it out with 2 NRF24l01+ radio transceivers connected via USB (Type-C) port.

Serial Monitor - only on desktop

USB Monitor