A full-stack software engineer with over 15 years of experience.

I have maintained, developed and launched multiple projects from scratch, handling the development of their back-end and front-end codebases.

My current toolset is composed of JavaScript & TypeScript (including Node.js), React, Kubernetes, Docker, and AWS CDK, Pulumi or Terraform.

Lately, I am also finding myself using low-code / no-code tools more and more, such as Plasmic and Xano. These tools can deliver projects of great quality while allowing for much greater flexibility, at a fraction of the usual cost.

I can assist you with all aspects of your project:

  • leading or co-developing their back-ends and front-ends,
  • automating the deployment process,
  • improving UI/UX design,
  • mentoring the team,
  • researching possible techs,
  • setting up monitoring,
  • improving the development process in general.

Call me a Swiss Army Knife when it comes to software.

For examples of my work, check out my portfolio.

Front-end Web Development

I specialize in developing applications using both React and Angular.

My front-end experience and skills include:

  • TypeScript/JavaScript development: bootstrapping, refactoring, improving code structure and reliability, build setup;
  • improving development process with features such as automatic code reload, code minification, multiple environment support, CI/CD, deployment previews, automated unit, integration, and visual testing;
  • having a good sense of design and UX;
  • extensive experience with various JavaScript ecosystems, having used numerous libraries in the past, such as Next.js, React, Redux, Redux-Observable, RxJS, Angular, Ionic Framework, Backbone, jQuery, Lodash/Underscore, and many more.
single page applications launched in Angular or React
talks given about front-end development
front-end developers whose work I code reviewed

Back-end Web Development

In back-end development, my current recommended stack includes Node.js and either nest.js or next.js.

I have personally handled the back-end development for nearly every app I have launched in the past. To improve development speed, performance, and reliability, I have switched languages and frameworks multiple times, transitioning from PHP and Ruby to Elixir and Node.js. Additionally, I have worked with various server configuration methods, starting from shell scripting, then using Chef/Ansible, and now utilizing Docker, Kubernetes, and AWS CDK.

The lessons I have learned from these experiences will continue to be valuable to me, regardless of the framework I use in my next project.

Regarding back-end development, I can:

  • lead the development of back-ends using Node.js, Elixir, or Ruby,
  • split the back-end into separate domains and microservices,
  • collaborate with APIs, synchronize remote data, work with cloud servers, and bring in asynchronous workers whenever possible.
  • utilize different types of databases, such as PostgreSQL, MySQL, Elasticsearch, and Redis,
  • divide servers into different machine nodes and Docker containers, add database sharding and load balancing, allowing for effective machine scaling,
  • refactor existing applications, by improving code readibility, separating concerns into separate functions/classes/modules, extracting business logic from the request/response layer into separate modules, and transitioning the system architecture into an event-based one.

What about dev ops, design, UI, project leadership, team mentorship ?

Throughout my career, I have created and released numerous websites.

As a result, I not only handled the coding of their back-end and front-end codebases, but I also took care of various other aspects crucial for a successful web application project. These include:

  • planning the best possible user experience, and then the user interface for it,
  • ensuring consistency in design and typography,
  • Search Engine Optimization, but in a pragmatic way,
  • launching, deploying and monitoring the app during and after its' release,
  • recruiting, onboarding and mentoring team members,
  • taking on the responsibilities of a Project Manager when needed, in order to prevent unnecessary delays and ensure project success.

If your initial thought is that I can’t be the best in everything, it's okay. Send the design job to someone else, I will take care of all the code development or any other role you see me best suited for.

In cases where you already have an existing team but still need some help, feel free to contact me. I assure you that I will fit in quickly.