Jan Pettersson

JavaScript

UX / UI

Coffee

Kronans Apotek

System developer / Consultant
September 2019 - Present

During my time at Kronans Apotek, I worked on building micro frontends and web components for the e-commerce platform. Many of these components were integrated into static HTML pages with data sourced from various backend services.

We developed a custom build system to gather data from different sources and feed it to Handlebars templates for rendering HTML. The HTML files were then stored on and served from S3 (AWS). Our custom backend application played a crucial role in gathering data from multiple backend services and compiling it into an easily readable format for the frontend applications that rendered the HTML.

Sensitive parts of the application, which could not be stored as static HTML, were served using Next.js. We also put in significant effort to achieve a 1-to-1 synchronization between UX and design with our React components, using Storybook for collaboration between designers and developers.

New parts of the application were built using Gatsby, which we later decided to use for the entire site. This move allowed us to utilize the latest versions of React and Gatsby, providing a more performant build chain and a more developer-friendly experience.

Currently, we are exploring the possibility of fully adopting TailwindCSS and moving away from styled-components.

JavaScript TypeScript Node.js React Redux MobX Styled Next Gatbsy Contentful Netlify HTML CSS/Sass

Scania Group

Frontend developer / Consultant
January 2015 - September 2019

I was the lead developer of two different front-end applications. But also had some focus on UX and devops. The team worked with Agile principles and practiced Scrum. Before that we were using Kanban, but an influx of new people made Scrum a better fit for the team.

One of the applications I worked on was an internal tool built using Ember.js served from a Java backend. When I left we were in the process of splitting it up into components to instead be served from AWS.

The other application I worked on was a React frontend on a Kotlin backend. We used continuous integration and deployment using GitLab to quickly deploy and test branches for fast evaluation from the product owners. An important goal was to have continuous deployment in all environments, which made TDD a suitable approach to development.

JavaScript Node.js React Redux Ember HTML CSS/Less

LensWay

Frontend developer
November 2013 - January 2015

At LensWay I handled the e-platform's graphical interface as well as support tools for the marketing team to make ads on the e-commerce platform. With constant feedback from both end users and colleagues we made changes and deployed several times a week to production.

We also had a side project, a web application for helping people choose glasses that fit them, without visiting a store. The user uploads an image to the application, choose one or more glasses that they could “try on”. It was built purely with JavaScript.

The biggest challenge was to make the site work perfectly in all different browsers at the time, making tools like browsershots.org and similar very valuable. We had a lot of A/B-testing that informed the planing of our sprints.

JavaScript Backbone HTML CSS/Less

X-Com

Fullstack developer
January 2012 - October 2013

At X-Com I built many sites on a tight deadline. Customers were hiring us for marketing purposes and campaigns and we worked with customers like Försvarsmakten and Burger King. Having to constantly juggle simultaneous projects was a challenge and a great experience.

Many applications were built as a Facebook app, connecting users together via their API so they could challenge their friends or compete against other players all over the world.

As a 10-year anniversary project, we built an air hockey game, which was played on the screen of your choosing (computer or tablet), and was controlled via your phone. This was built using WebSockets and box2d.js.

JavaScript PHP SQL WordPress socket.io box2d.js WebSockets HTML CSS/Less

Go!

Fullstack developer
May 2011 - December 2011

I was in charge of a Drupal site with a custom UI that powered the company's educational platform for their sales force.

JavaScript PHP SQL Drupal HTML CSS

LDG Academy AB

Fullstack developer
January 2009 - May 2011

I was part of a team who built custom Drupal sites for customers.

JavaScript PHP SQL Drupal HTML CSS