Merott Movahedi, Developer in London, United Kingdom
Merott is available for hire
Hire Merott

Merott Movahedi

Verified Expert  in Engineering

Software Developer

Location
London, United Kingdom
Toptal Member Since
February 20, 2017

Merott is a full-stack developer with a strong interest in front-end development. Proficient in JavaScript, he can pick up new frameworks and quickly get up to speed with new projects. His framework of choice is React, although he also has extensive experience working with Angular and Vue. Merott believes testing and quality assurance to be the responsibility of developers—not dedicated QA teams—and advocates automated testing in all projects.

Portfolio

Apple
HTML, CSS, React, TypeScript, CodeMirror, Unit Testing, APIs
Class Twist Inc. dba ClassDojo
React, TypeScript, Performance, Monorepos, GraphQL, React Query...
Flux
TypeScript, Electronics, Jest, Testing, Git, JavaScript Testing

Experience

Availability

Full-time

Preferred Environment

TypeScript, React, Next.js, Prisma, GraphQL, GraphQL Code Generator

The most amazing...

...contribution I've recently made was an automated workflow, generating React hooks to query a GraphQL back end, with end-to-end type safety backed by TypeScript.

Work Experience

Senior Web Developer

2023 - 2024
Apple
  • Primarily worked on a custom code editor built with CodeMirror for internal use.
  • Developed CodeMirror extensions to enhance the user experience through input validation, error highlighting, navigational capabilities (e.g., cmd+click to open), and contextual autocompletion.
  • Designed and created React hooks for registering, updating, and deregistering CodeMirror extensions through a simplified and reactive API.
  • Set up Vitest and added the project's first set of unit tests.
Technologies: HTML, CSS, React, TypeScript, CodeMirror, Unit Testing, APIs

Front-end React Developer

2022 - 2023
Class Twist Inc. dba ClassDojo
  • Developed a reliable and efficient pattern for managing modals—a challenge because ClassDojo apps rely heavily on modals that may be opened from various parts of the app, and at the same time, they needed to be available for deep-linking.
  • Used Cypress to create end-to-end and component tests for ClassDojo app localizations.
  • Created a custom ESLint package, consolidating the ESLint configuration and custom rules used across the company's various apps as part of a monorepo, significantly reducing the amount of ongoing maintenance work.
Technologies: React, TypeScript, Performance, Monorepos, GraphQL, React Query, User Interface (UI), Mobile Development, Docker, Git, JavaScript Testing, CSS, Mobile First, APIs

TypeScript Developer

2021 - 2022
Flux
  • Architected and developed exporters for generating Gerber files that allow users to order Printed Circuit Boards from manufacturers, a major milestone in Flux's journey to wide user adoption. Built with TypeScript.
  • Developed an end-to-end testing process to ensure quality and avoid regression issues in the future.
  • Created TypeScript definitions for JSON representation of KiCad PCB files, allowing for strict type checking of all exporter code.
  • Architected and developed the foundation of a TypeScript API to generate Gerber files natively without reliance on third-party tools.
Technologies: TypeScript, Electronics, Jest, Testing, Git, JavaScript Testing

Front-end React Developer

2021 - 2021
Nas Education (via Toptal)
  • Implemented an editable text component for inline editing of the website copy in a brand-new CMS back end.
  • Built multiple web components for use on product pages.
  • Refactored common components for reusability and maintainability.
Technologies: React, Next.js, Tailwind CSS, JavaScript, HTML, CSS, Figma, Front-end, Git, JavaScript Testing, Mobile First, User Interface (UI), APIs

Senior Software Engineer

2020 - 2021
GfK - Growth from Knowledge
  • Converted dozens of legacy Svelte components to React with TypeScript.
  • Created an automated workflow to generate React hooks for querying a GraphQL back end, including end-to-end type safety with TypeScript.
  • Set up integration testing for components using Jest.
  • Delivered team training on the best practices of React, TypeScript, and GraphQL.
  • Constructed end-to-end system tests using Cypress.io.
  • Developed the initial version of a Webpack build system, migrating over from a legacy Rollup configuration.
Technologies: Jest, Cypress, React, Svelte, JavaScript, GraphQL, TypeScript, Testing, Git, JavaScript Testing, CSS, Mobile First, User Interface (UI), APIs

Senior Software Engineer

2020 - 2020
Array
  • Built reusable web components using React and vanilla JavaScript.
  • Implemented a pagination mechanism for custom vanilla JavaScript components.
  • Built multiple pages of the company's website at Array.com, which were mobile-first and responsive.
Technologies: React, HTML, CSS, Next.js, Express.js, Figma, Front-end, Testing, Git, JavaScript Testing, Mobile First, User Interface (UI), APIs

Lead Front-end Developer

2018 - 2020
Verb Tech (via Toptal)
  • Created the monorepo architecture, applying best practices from Nrwl/Nx, including Redux stores.
  • Trained the team on best practices and unit testing in Angular.
  • Set up automation to speed up development and maintain quality.
Technologies: Jest, RxJS, TypeScript, Angular, Redux, Cypress, CI/CD Pipelines, Monorepos, Front-end, Testing, Git, JavaScript Testing, CSS, Mobile First, User Interface (UI), APIs

Freelance Front-end Developer

2017 - 2018
MedChat, LLC
  • Developed the foundation and architecture of the client's new front-end in Angular.
  • Set up continuous integration for the deployment of code to production, including automatic deployment of feature branches.
  • Created pages for chat analytics and monitoring with a reusable Redux pattern using NgRx.
  • Developed chat log navigation functionality for administrators.
  • Supported the team in the maintenance of the legacy AngularJS platform.
Technologies: Mocha, Chai, RxJS, TypeScript, Angular, CI/CD Pipelines, Monorepos, NgRx, Front-end, Testing, Git, JavaScript Testing, CSS, Mobile First, User Interface (UI), APIs

Senior Software Engineer

2016 - 2017
BGL Group
  • Built a Node.js API using Swagger, Express, and MongoDB to capture entrant information for marketing promotions at comparethemarket.com.
  • Built interactive web content to entertain and engage visitors of comparethemeerkat.com.
  • Trained members of the team on core JavaScript topics, best practices, advanced patterns, functional programming, and new features of ES2015.
Technologies: Mocha, Jasmine, ASP.NET MVC, .NET, Swagger, MongoDB, Node.js, JavaScript, Sass, CSS, HTML, Front-end, Testing, Git, JavaScript Testing, Mobile First, User Interface (UI), APIs

Front-end Developer

2015 - 2016
Checkout.com
  • Built, tuned, and improved "Checkout Hub," the checkout portal for account administrators and merchants.
  • Promoted, encouraged, and demonstrated TDD with AngularJS.
  • Automated anything and everything that could be automated using Grunt or Gulp.
Technologies: Chai, Mocha, Jasmine, Node.js, Angular, CSS, HTML, JavaScript, Front-end, Testing, Git, JavaScript Testing, Mobile First, User Interface (UI), APIs

Software Engineer

2012 - 2015
KPMG UK
  • Developed full-stack web applications using .NET technologies for the back-end and frameworks such as Knockout.js and AngularJS for the front end.
  • Developed a hybrid HTML5 app with AngularJS, wrapped with PhoneGap for native deployments.
  • Presented tech talks on interesting topics such as AngularJS, BDD with Cucumber, and ECMAScript 6.
Technologies: Jasmine, Angular, Knockout (Knockout.js), C#, ASP.NET MVC, CSS, HTML, JavaScript, Testing, APIs

Polar Habits

https://polarhabits.com
Polar Habits is my main side project today—a guilt-free habit tracker app that I conceptualized and built from scratch, with a unique momentum system that many people have found to be more motivating than the traditional streak-based habit tracking method.

It's built with TypeScript, Next.js, and Tailwind CSS on the front end, GraphQL on the back end, integrated with Stripe for payment processing, Prisma for connecting to the PlanetScale database, and Postmark for sending emails.

Building something entirely from scratch has been a fun challenge, especially as I had to work with tools and libraries I'd rarely or never used before, including Recharts, Stripe, Postmark, and Prisma.

I launched the app on January 1, 2023, and in March, I introduced a paid plan, which generated $1,000 within two weeks. As of April, the app has around 350 weekly active users.

Beyond the Boring

https://beyondtheboring.com
A digital garden built with Next.js, MDX, and Tailwind CSS.

It was a personal project that was fun to build, with a few tricky challenges to overcome. For example, making the website header responsive turned out to be more complex than expected due to the combination of a background pattern, gradient, and its sloped appearance.

The images on the website are lazy-loaded, using primitive art such as triangle shapes as placeholders. Generating these placeholders is slow and intensive, which significantly slowed down the website's build process. I solved this by caching placeholder values into a file that would be checked into source control, and I made sure to implement that so that it would stay out of my development workflow.

The source code for the website is available at github.com/beyondtheboring/garden.

Course Creators Weekly

https://coursecreatorsweekly.com
Course Creators Weekly was a curated newsletter and one of my side projects. The website and the newsletter archives are built as a Jamstack app using Vue, Nuxt.js, and Tailwind CSS. Hosted on Netlify, the website uses serverless Netlify functions for back-end operations.

Xebel

Xebel is an online course platform I built as a personal side project in my spare time. It was created with TypeScript, Vue, and Nuxt.js for the front end, and GraphQL for the back end. Prisma was used for connecting to the database.

Nativescript-pdf-view

http://go.merott.com/nativescript-pdf-view
A basic and open-source PDF viewer plugin for NativeScript, to display PDF documents on iOS and Android.

Semantic-release-codeship-example

http://go.merott.com/semantic-release-codeship-example
An open-source sample project to serve as a reference for setting up automatic NPM releases with semantic versioning, using semantic-release and Codeship CI.
2007 - 2010

Bachelor of Science Degree in Information and Communications Technology

Queen Mary, University of London - London, UK

Libraries/APIs

React, Vue 2, RxJS, NgRx/store, NgRx, Chai, Vue, REST APIs, jQuery, Node.js, Liquid, Stripe, Recharts, Stripe API, React Query

Tools

GitHub, JavaScript Testing, Git, GitLab, Pivotal Tracker, Mocha, PostCSS, Figma, Slack, Gulp, Grunt, Webpack, GitLab CI/CD, Prisma, Stripe Checkout, Sentry, CodeMirror

Frameworks

Next.js, Tailwind CSS, Jest, AngularJS, Cypress, Redux, Nuxt.js, Swagger, .NET, ASP.NET MVC, Knockout (Knockout.js), Ionic, NativeScript, Jasmine, Angular, Svelte, Express.js

Languages

ECMAScript (ES6), TypeScript, HTML, CSS, JavaScript, HTML5, GraphQL, Sass, MDX, SCSS, CSS3, C#

Paradigms

Testing, Agile, Functional Programming, Automated Testing, REST, Jamstack, Continuous Integration (CI), Mobile Development, Unit Testing

Platforms

Vercel, Netlify, ConvertKit, MacOS, Visual Studio Code (VS Code), Docker

Storage

MongoDB

Other

Front-end, QA Automation, Mentorship, ESLint, User Interface (UI), User Experience (UX), Mobile First, APIs, Gridsome, Serverless, Monorepos, CI/CD Pipelines, Information & Communications Technology (ICT), Electronics, Stripe Payments, Postmark, Storybook, Apollo, GraphQL Code Generator, Performance

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring